<?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>148561</bug_id>
          
          <creation_ts>2015-08-27 22:14:51 -0700</creation_ts>
          <short_desc>Migrate GraphicsContexts from pointers to references</short_desc>
          <delta_ts>2015-08-28 23:50:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>buildbot</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121579</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-27 22:14:51 -0700</bug_when>
    <thetext>Migrate from pointers to references for text drawing code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121597</commentid>
    <comment_count>1</comment_count>
      <attachid>260125</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-27 22:45:25 -0700</bug_when>
    <thetext>Created attachment 260125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121611</commentid>
    <comment_count>2</comment_count>
      <attachid>260125</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-08-27 23:23:06 -0700</bug_when>
    <thetext>Comment on attachment 260125
Patch

Attachment 260125 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/115456

New failing tests:
imported/mozilla/svg/text/simple-fill-gradient.svg
imported/mozilla/svg/text-layout-06.svg
svg/custom/hidpi-masking-clipping.svg
imported/mozilla/svg/text-scale-02.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121612</commentid>
    <comment_count>3</comment_count>
      <attachid>260128</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-08-27 23:23:09 -0700</bug_when>
    <thetext>Created attachment 260128
Archive of layout-test-results from ews103 for mac-mavericks

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews103  Port: mac-mavericks  Platform: Mac OS X 10.9.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121613</commentid>
    <comment_count>4</comment_count>
      <attachid>260125</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-08-27 23:27:16 -0700</bug_when>
    <thetext>Comment on attachment 260125
Patch

Attachment 260125 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/115460

New failing tests:
imported/mozilla/svg/text/simple-fill-gradient.svg
imported/mozilla/svg/text-layout-06.svg
svg/custom/hidpi-masking-clipping.svg
imported/mozilla/svg/text-scale-02.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121614</commentid>
    <comment_count>5</comment_count>
      <attachid>260129</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2015-08-27 23:27:19 -0700</bug_when>
    <thetext>Created attachment 260129
Archive of layout-test-results from ews104 for mac-mavericks-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews104  Port: mac-mavericks-wk2  Platform: Mac OS X 10.9.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121910</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 18:52:08 -0700</bug_when>
    <thetext>*** Bug 148590 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121912</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 18:55:17 -0700</bug_when>
    <thetext>*** Bug 148558 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121929</commentid>
    <comment_count>8</comment_count>
      <attachid>260203</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 19:33:27 -0700</bug_when>
    <thetext>Created attachment 260203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121930</commentid>
    <comment_count>9</comment_count>
      <attachid>260203</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-08-28 19:38:10 -0700</bug_when>
    <thetext>Comment on attachment 260203
Patch

rs=me. sad that the storage on PaintInfo can&apos;t be a reference (and then you wouldn&apos;t need the getter). maybe in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121946</commentid>
    <comment_count>10</comment_count>
      <attachid>260208</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 20:58:20 -0700</bug_when>
    <thetext>Created attachment 260208
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121949</commentid>
    <comment_count>11</comment_count>
      <attachid>260209</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 21:21:56 -0700</bug_when>
    <thetext>Created attachment 260209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121953</commentid>
    <comment_count>12</comment_count>
      <attachid>260211</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 21:29:39 -0700</bug_when>
    <thetext>Created attachment 260211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121957</commentid>
    <comment_count>13</comment_count>
      <attachid>260213</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 21:46:11 -0700</bug_when>
    <thetext>Created attachment 260213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121963</commentid>
    <comment_count>14</comment_count>
      <attachid>260216</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 22:09:01 -0700</bug_when>
    <thetext>Created attachment 260216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121964</commentid>
    <comment_count>15</comment_count>
      <attachid>260217</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 22:39:11 -0700</bug_when>
    <thetext>Created attachment 260217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121966</commentid>
    <comment_count>16</comment_count>
      <attachid>260218</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 22:56:39 -0700</bug_when>
    <thetext>Created attachment 260218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121969</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 23:15:53 -0700</bug_when>
    <thetext>Committed r189144: &lt;http://trac.webkit.org/changeset/189144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121973</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 23:33:09 -0700</bug_when>
    <thetext>Committed r189145: &lt;http://trac.webkit.org/changeset/189145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121978</commentid>
    <comment_count>19</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-08-28 23:50:06 -0700</bug_when>
    <thetext>Committed r189147: &lt;http://trac.webkit.org/changeset/189147&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260125</attachid>
            <date>2015-08-27 22:45:25 -0700</date>
            <delta_ts>2015-08-28 18:52:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150827224510.patch</filename>
            <type>text/plain</type>
            <size>51728</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmE3OWEyNmMzOTUwZTU0
NDZmOGQ1M2QzYjM1NWM5NTZmMjNhYTlhYi4uMzQ0NDUxYjM0MTNhYWY3NjAzYWQ5ZGVjMjJlYTE1
NjBkZDUwMDNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE1LTA4LTI3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBm
cm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMgZm9yIHRleHQgZHJhd2luZyBjb2RlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1NjEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiB0aGlzIGNhc2UsIHRo
ZSBjb250ZXh0IGFuZCBmb250IGNhbid0IGJlIG51bGxwdHIuIFRoZXJlZm9yZSwgd2Ugc2hvdWxk
CisgICAgICAgIHVzZSByZWZlcmVuY2VzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3RW1w
aGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRp
VGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3R2x5
cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3Jl
OjpzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpzaG93R2x5cGhzV2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRl
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3Q29tcGxl
eFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtz
Rm9yQ29tcGxleFRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpk
cmF3QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0
UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDE1LTA4LTI3ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGlueSBjbGVhbnVwIGluIFJlbmRl
ckxheWVyOjplbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyRm9yUmVwYWludCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggZDY1YTJhOTkwY2VlNGM5YjU2NjhjNzQzNjViMDQyZWZjYTg1NGQxNS4uMjg1ZDJl
OGZmYTVmMjE2ZWIyOTJjNGY5MWNlMWQzOTUzMjYxMDNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDE1LTA4LTI3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMg
Zm9yIHRleHQgZHJhd2luZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDg1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW06CisgICAgICAgICgt
W05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0ZXh0Q29sb3I6YWxsb3dpbmdGb250U21v
b3RoaW5nOl0pOgorCiAyMDE1LTA4LTI3ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBGYWN0b3Igb3V0IExvb2t1cCBpbnZvY2F0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXgg
MzY5NTk0MjY3OGYzZGM5MmQxMTNmYzIwYTRmOTEwNWE1NDVkMjQwYS4uNjlhYjA3NDkwNDdkNjAy
MjI5MWUyMGM2Y2NkOWNhNmRjNzAxZDkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgRm9u
dENhc2NhZGU6OnVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgY29u
c3QKICAgICBtX3R5cGVzZXR0aW5nRmVhdHVyZXMgPSBjb21wdXRlVHlwZXNldHRpbmdGZWF0dXJl
cygpOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQg
ZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGZyb20sIGludCB0bywgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIGN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbikgY29uc3QKIHsKICAgICAvLyBEb24ndCBkcmF3IGFueXRoaW5nIHdoaWxlIHdl
IGFyZSB1c2luZyBjdXN0b20gZm9udHMgdGhhdCBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgbG9hZGlu
ZywKICAgICAvLyBleGNlcHQgaWYgdGhlICdmb3JjZScgYXJndW1lbnQgaXMgc2V0IHRvIHRydWUg
KGluIHdoaWNoIGNhc2UgaXQgd2lsbCB1c2UgYSBmYWxsYmFjawpAQCAtMzIyLDcgKzMyMiw3IEBA
IGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QKICAgICByZXR1cm4gZHJhd0NvbXBsZXhUZXh0KGNvbnRl
eHQsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykg
Y29uc3QKIHsKICAgICBpZiAoaXNMb2FkaW5nQ3VzdG9tRm9udHMoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTI5OCw3ICsxMjk4LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFk
dmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGludCBmcm8KICAgICByZXR1
cm4gaW5pdGlhbEFkdmFuY2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAog
ewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMrYWR2YW5jZXMrZm9u
dCBkYXRhIGZvciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAt
MTMxNCw3ICsxMzE0LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJldHVybiBzdGFy
dFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVy
OwogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOwpAQCAt
MTMyNSw3ICsxMzI1LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JT
aW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICBkcmF3RW1waGFz
aXNNYXJrcyhjb250ZXh0LCBydW4sIGdseXBoQnVmZmVyLCBtYXJrLCBGbG9hdFBvaW50KHBvaW50
LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2ludC55KCkpKTsKIH0KIAotdm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZsb2F0UG9pbnQmIHBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsIEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogI2lmICFFTkFCTEUoU1ZHX0ZPTlRT
KQogICAgIFVOVVNFRF9QQVJBTShydW4pOwpAQCAtMTM0OSwxMCArMTM0OSwxMCBAQCB2b2lkIEZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sCiAgICAgICAgIGlmIChuZXh0Rm9udERhdGEgIT0gZm9udERhdGEgfHwg
bmV4dE9mZnNldCAhPSBvZmZzZXQpIHsKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICAg
ICAgaWYgKHJlbmRlcmluZ0NvbnRleHQgJiYgZm9udERhdGEtPmlzU1ZHRm9udCgpKQotICAgICAg
ICAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRyYXdTVkdHbHlwaHMoY29udGV4dCwgZm9udERh
dGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9p
bnQpOworICAgICAgICAgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRyYXdTVkdHbHlwaHMoY29u
dGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RG
cm9tLCBzdGFydFBvaW50KTsKICAgICAgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICAgICAg
ICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwg
bmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICAgICAgICAgIGRyYXdH
bHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlw
aCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKIAogICAgICAgICAgICAgbGFzdEZyb20gPSBuZXh0
R2x5cGg7CiAgICAgICAgICAgICBmb250RGF0YSA9IG5leHRGb250RGF0YTsKQEAgLTEzNjcsMTEg
KzEzNjcsMTEgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogCiAjaWYgRU5BQkxFKFNWR19GT05U
UykKICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250RGF0YS0+aXNTVkdGb250KCkpCi0g
ICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRyYXdTVkdHbHlwaHMoY29udGV4dCwgZm9udERhdGEs
IGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQp
OworICAgICAgICByZW5kZXJpbmdDb250ZXh0LT5kcmF3U1ZHR2x5cGhzKGNvbnRleHQsICpmb250
RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQ
b2ludCk7CiAgICAgZWxzZQogI2VuZGlmCiAgICAgewotICAgICAgICBkcmF3R2x5cGhzKGNvbnRl
eHQsIGZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9t
LCBzdGFydFBvaW50KTsKKyAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGds
eXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwog
ICAgICAgICBwb2ludC5zZXRYKG5leHRYKTsKICAgICB9CiB9CkBAIC0xMzkxLDcgKzEzOTEsNyBA
QCBpbmxpbmUgc3RhdGljIGZsb2F0IG9mZnNldFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAogICAgIHJldHVybiBvZmZzZXRUb01pZGRsZU9mR2x5
cGgoZ2x5cGhCdWZmZXIuZm9udEF0KGkpLCBnbHlwaEJ1ZmZlci5nbHlwaEF0KGkpKTsKIH0KIAot
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QK
K3ZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIs
IGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAgICAgR2x5cGhEYXRhIG1hcmtHbHlwaERhdGE7CiAgICAgaWYgKCFnZXRFbXBoYXNpc01h
cmtHbHlwaERhdGEobWFyaywgbWFya0dseXBoRGF0YSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCA2NWU1OTA2ZTI1YjAxMjIzYjJlYTNj
Y2Q1MDJhZjBjYjczNzRhODYyLi4xNjZiOTBlODc1YWNhMzI4YTVjMGRkYWYyNDdmYzA3OWIzM2Y2
YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmgKQEAgLTEzMyw5ICsxMzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGUoUmVmUHRyPEZv
bnRTZWxlY3Rvcj4mJikgY29uc3Q7CiAKICAgICBlbnVtIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlv
biB7IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSwgVXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSB9
OwotICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAt
MSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBj
b25zdDsKLSAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRm9udCos
IGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0
UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBmbG9hdCBkcmF3VGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0gLTEsIEN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbiA9IERvTm90UGFpbnRJZkZvbnROb3RSZWFkeSkgY29uc3Q7CisgICAgdm9pZCBk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7Cisg
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20g
PSAwLCBpbnQgdG8gPSAtMSkgY29uc3Q7CiAKICAgICBEYXNoQXJyYXkgZGFzaGVzRm9ySW50ZXJz
ZWN0aW9uc1dpdGhSZWN0KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3Jp
Z2luLCBjb25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdDsKIApAQCAtMjIzLDEwICsy
MjMsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNv
bnN0IFRleHRSdW4mLCBpbnQgZnJvbSwgaW50IHRvLCBHbHlwaEJ1ZmZlciYsIEZvclRleHRFbXBo
YXNpc09yTm90ID0gTm90Rm9yVGV4dEVtcGhhc2lzKSBjb25zdDsKLSAgICBmbG9hdCBkcmF3U2lt
cGxlVGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NG
b3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dDsKLSAgICB2b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgdm9pZCBk
cmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
R2x5cGhCdWZmZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29u
c3Q7CisgICAgZmxvYXQgZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yU2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50Jiwg
aW50IGZyb20sIGludCB0bykgY29uc3Q7CisgICAgdm9pZCBkcmF3R2x5cGhCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEdseXBoQnVmZmVyJiwgRmxvYXRQb2lu
dCYpIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEdseXBoQnVmZmVyJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
Y29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JTaW1wbGVU
ZXh0KGNvbnN0IFRleHRSdW4mLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiogZmFsbGJhY2tGb250cyA9
IDAsIEdseXBoT3ZlcmZsb3cqID0gMCkgY29uc3Q7CiAgICAgaW50IG9mZnNldEZvclBvc2l0aW9u
Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVk
ZVBhcnRpYWxHbHlwaHMpIGNvbnN0OwogICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvclNp
bXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3QsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OwpAQCAtMjM4LDggKzIzOCw4IEBAIHByaXZhdGU6CiAKICAgICAv
LyBSZXR1cm5zIHRoZSBpbml0aWFsIGluLXN0cmVhbSBhZHZhbmNlLgogICAgIGZsb2F0IGdldEds
eXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBp
bnQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1w
aGFzaXMpIGNvbnN0OwotICAgIGZsb2F0IGRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNv
bnN0OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBG
bG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CisgICAgZmxvYXQgZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dDsKICAgICBmbG9hdCBmbG9hdFdpZHRoRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAw
KSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBU
ZXh0UnVuJiwgZmxvYXQgcG9zaXRpb24sIGJvb2wgaW5jbHVkZVBhcnRpYWxHbHlwaHMpIGNvbnN0
OwogICAgIHZvaWQgYWRqdXN0U2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRS
dW4mLCBMYXlvdXRSZWN0JiBzZWxlY3Rpb25SZWN0LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLmM0
NmZmY2ZmZDYwNzg5NzI4OGFjNWI3ZWEwOWM2NzBmYThmNTRlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBk
OGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2ZlYmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFh
MGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0o
KTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRyYW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZp
bGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQg
ZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lkIGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50
UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhdGUpOwogICAgICAgICB2b2lk
IGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRU
ZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRm
ZjhjYjBmNTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEz
M2YyZjhkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Rl
eHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgK
QEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAg
ICAgICB2aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENh
c2NhZGUmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBp
bnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9y
bWFsaXplZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3
U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZv
bnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9p
bnQmKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZH
Rm9udChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3Vt
ZWQsIFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBh
cHBseVNWR0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlcios
IGludCBmcm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEds
eXBoVG9QYXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZv
bnQmLCBjb25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IGFhMTBj
NjVjNTY4NDNlNTAyODA2OGEzOWE4NzAyMDJjN2IxNGNjY2UuLjU5ODYyMWQ1OTE0OTYyZDkwNzY2
MGVjZDgwOGYzMTc3MWQ5NGI3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtNDcsMTQgKzQ3LDE0IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWly
b190KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBkcmF3R2x5cGhzVG9Db250ZXh0KGNhaXJvX3Qq
IGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgaW50
IG51bUdseXBocykKIHsKICAgICBjYWlyb19tYXRyaXhfdCBvcmlnaW5hbFRyYW5zZm9ybTsKLSAg
ICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgp
OworICAgIGZsb2F0IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKTsKICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKICAgICAgICAgY2Fpcm9fZ2V0X21h
dHJpeChjb250ZXh0LCAmb3JpZ2luYWxUcmFuc2Zvcm0pOwogCi0gICAgY2Fpcm9fc2V0X3NjYWxl
ZF9mb250KGNvbnRleHQsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CisgICAg
Y2Fpcm9fc2V0X3NjYWxlZF9mb250KGNvbnRleHQsIGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVk
Rm9udCgpKTsKICAgICBjYWlyb19zaG93X2dseXBocyhjb250ZXh0LCBnbHlwaHMsIG51bUdseXBo
cyk7CiAKICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkgewpAQCAtNjYsMjEgKzY2LDIxIEBA
IHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHCiAgICAgICAgIGNhaXJvX3NldF9tYXRyaXgoY29udGV4
dCwgJm9yaWdpbmFsVHJhbnNmb3JtKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgaW50IG51bUds
eXBocykKK3N0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250JiBmb250LCBH
bHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7Ci0gICAgU2hhZG93Qmx1
ciYgc2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1
cigpOworICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+c2hhZG93Qmx1cigpOwogCi0gICAgaWYgKCEoZ3JhcGhpY3NDb250ZXh0LT50ZXh0
RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgfHwgc2hhZG93LnR5cGUoKSA9PSBTaGFkb3dC
bHVyOjpOb1NoYWRvdykKKyAgICBpZiAoIShncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2Rl
KCkgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFk
b3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5tdXN0VXNl
U2hhZG93Qmx1cigpKSB7CisgICAgaWYgKCFncmFwaGljc0NvbnRleHQubXVzdFVzZVNoYWRvd0Js
dXIoKSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3Qg
ZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIFNoYWRvd0JsdXIuCi0gICAgICAgIGNhaXJvX3QqIGNv
bnRleHQgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgICAg
ICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgICAgICBjYWlyb19zYXZlKGNvbnRleHQpOwogCi0gICAgICAgIEZsb2F0U2l6ZSBz
aGFkb3dPZmZzZXQoZ3JhcGhpY3NDb250ZXh0LT5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CisgICAg
ICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQoZ3JhcGhpY3NDb250ZXh0LnN0YXRlKCkuc2hhZG93
T2Zmc2V0KTsKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNvbnRleHQsIHNoYWRvd09mZnNldC53
aWR0aCgpLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwotICAgICAgICBzZXRTb3VyY2VSR0JBRnJv
bUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC0+c3RhdGUoKS5zaGFkb3dDb2xvcik7Cisg
ICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY29udGV4dCwgZ3JhcGhpY3NDb250ZXh0LnN0
YXRlKCkuc2hhZG93Q29sb3IpOwogICAgICAgICBkcmF3R2x5cGhzVG9Db250ZXh0KGNvbnRleHQs
IGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKIAogICAgICAgICBjYWlyb19yZXN0b3JlKGNvbnRl
eHQpOwpAQCAtODgsMTkgKzg4LDE5IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgfQog
CiAgICAgY2Fpcm9fdGV4dF9leHRlbnRzX3QgZXh0ZW50czsKLSAgICBjYWlyb19zY2FsZWRfZm9u
dF9nbHlwaF9leHRlbnRzKGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSwgZ2x5cGhz
LCBudW1HbHlwaHMsICZleHRlbnRzKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRl
bnRzKGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywg
JmV4dGVudHMpOwogICAgIEZsb2F0UmVjdCBmb250RXh0ZW50c1JlY3QocG9pbnQueCgpICsgZXh0
ZW50cy54X2JlYXJpbmcsIHBvaW50LnkoKSArIGV4dGVudHMueV9iZWFyaW5nLCBleHRlbnRzLndp
ZHRoLCBleHRlbnRzLmhlaWdodCk7CiAKLSAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoZ3JhcGhpY3NDb250ZXh0LCBmb250RXh0
ZW50c1JlY3QpKSB7CisgICAgaWYgKEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNo
YWRvdy5iZWdpblNoYWRvd0xheWVyKCZncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkp
IHsKICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwotICAgICAgICBzaGFkb3cu
ZW5kU2hhZG93TGF5ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgc2hhZG93LmVuZFNoYWRv
d0xheWVyKCZncmFwaGljc0NvbnRleHQpOwogICAgIH0KIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6
ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxhdGZvcm1EYXRh
KCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0X2Nhc3Q8R2x5
cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0xMTIsMTQgKzEx
MiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQgKz0gZ2x5cGhC
dWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAgIFBsYXRmb3Jt
Q29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQsIHBvaW50LCBm
b250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29u
dGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250ZXh0LT50ZXh0
RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9ybUNvbnRleHQt
PnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJv
OjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0LnRleHREcmF3
aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29udGV4dC0+cHJl
cGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6QWRq
dXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChj
ciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEyICsxMjcsMTIg
QEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6ZSBvZiB0aGUg
d2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9rZQogICAgIC8v
IHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIgdGhlIGZ1bGwg
d2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkg
JiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8IDIgKiBvZmZz
ZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4
dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBjb250ZXh0LT5z
dHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgJiBU
ZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAqIG9mZnNldCkg
eworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0
YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4dC5zdHJva2VU
aGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUgQ1RNLCBidXQg
d2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgotICAgICAgICBj
YWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQo
KSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBnbHlwaHMsIG51
bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29j
b2EubW0KaW5kZXggNjQ4MzliNzUzY2Q3YzNhZmMwNGYxZTdjNzkxYzBjMTc2NTgxMGYwYS4uYTY3
MDQxODI5ZTRkZTkyZDZlZWNjNGIyZjViZjg5MWQ0YTY2MDllNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29h
Lm1tCkBAIC05MSwxMyArOTEsMTMgQEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRl
cnByZXNzRWZmZWN0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQog
Ci1zdGF0aWMgdm9pZCBzaG93TGV0dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNv
dW50KQorc3RhdGljIHZvaWQgc2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBDR0dseXBoKiBnbHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVf
dCBjb3VudCkKIHsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRh
ID0gZm9udC0+cGxhdGZvcm1EYXRhKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9y
aWVudGF0aW9uKCkgPT0gVmVydGljYWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBz
dXBwb3J0IGZvciB2ZXJ0aWNhbCB0ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4K
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgog
fTsKIAotc3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENH
R2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3Rh
dGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
Y29uc3QgRm9udCYgZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGds
eXBocywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICgh
Y291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
b250ZXh0LCBwb2ludC54KCksIHBvaW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZl
Y3RvcjxDR1BvaW50LCAyNTY+IHBvc2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpKQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxH
bHlwaFBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0x
ODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRH
ZXRUZXh0TWF0cml4KGNvbnRleHQpKTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxv
YXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRB
c2NlbnQoSWRlb2dyYXBoaWNCYXNlbGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNj
ZW50KCkpOworICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCks
IHBvaW50LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jh
c2VsaW5lKSAtIGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJh
bnNsYXRpb24gPSBDR1NpemVBcHBseUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJv
dGF0ZUxlZnRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFw
cGx5QWZmaW5lVHJhbnNmb3JtKENHUG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53
aWR0aCwgcG9zaXRpb24ueSArIHRyYW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0y
NDYsMzUgKzI0NiwzNSBAQCBzdGF0aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiB9CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIGFuY2hvclBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBo
QnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmIGFuY2hvclBvaW50KSBjb25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEm
IHBsYXRmb3JtRGF0YSA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFw
bGF0Zm9ybURhdGEuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3Vs
ZFNtb290aEZvbnRzOwogICAgIGJvb2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1h
dGNoQW50aWFsaWFzZWRBbmRTbW9vdGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250
RGlsYXRpb25FbmFibGVkKCk7CisgICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRG
b250cyA9IGNvbnRleHQuYW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAg
ICAgc3dpdGNoIChmb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNl
IEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVl
KTsKKyAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNo
b3VsZFNtb290aEZvbnRzID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0
cnVlOwogICAgICAgICBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAv
LyBDU1MgaGFzIG9wdGVkIGludG8gc3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAg
Y29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNo
b3VsZEFudGlhbGlhcyh0cnVlKTsKICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwog
ICAgICAgICBjaGFuZ2VGb250U21vb3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxp
YXNlZEFuZFNtb290aGVkRm9udHMgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBOb1Ntb290aGluZzogewotICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMo
ZmFsc2UpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAg
ICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhp
bmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZh
bHNlOwpAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAg
ICAgQ0dDb250ZXh0U2V0Rm9udChjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAK
LSAgICBib29sIHVzZUxldHRlcnByZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZl
Y3QoKmNvbnRleHQpOworICAgIGJvb2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VM
ZXR0ZXJwcmVzc0VmZmVjdChjb250ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9y
UG9pbnQ7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEcKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIDEpOwog
ICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNv
bnRleHQtPnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpKTsKICNlbHNlCi0gICAgc2V0Q0dG
b250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9udCByZW5kZXJpbmdNb2RlXSwgY29u
dGV4dC0+c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIHNldENHRm9udFJlbmRl
cmluZ01vZGUoY2dDb250ZXh0LCBbZHJhd0ZvbnQgcmVuZGVyaW5nTW9kZV0sIGNvbnRleHQuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOwogICAgIGlmIChkcmF3Rm9udCkKICAgICAgICAg
Q0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250ZXh0LCAxKTsKICAgICBlbHNlCkBAIC0zNTcsMTEg
KzM1NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgIGZsb2F0IHNoYWRvd0JsdXI7
CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNl
OwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LT5maWxsQ29sb3JTcGFj
ZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNw
YWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOworICAgIGNvbnRleHQuZ2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwog
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0gPSBjb250ZXh0LT5nZXRDVE0oKTsKLSAg
ICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgp
OworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RNID0gY29udGV4dC5nZXRDVE0oKTsKKyAg
ICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7
CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYgIWNvbnRleHRDVE0uaXNJZGVudGl0eU9y
VHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAgICBGbG9hdFNpemUgaG9yaXpvbnRhbFVu
aXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RNLm1hcFNpemUoRmxvYXRTaXplKDEsIDAp
KTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRMZW5ndGhJbkRldmljZVBpeGVscyA9IHNx
cnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4ZWxzLndpZHRoKCkgKiBob3Jpem9udGFs
VW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZp
Y2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy5oZWln
aHQoKSk7CkBAIC0zNjksMjAgKzM2OSwyMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAg
ICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBob3Jpem9udGFsVW5pdExlbmd0aEluRGV2
aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQt
PnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlk
KCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpICYm
ICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LT5pc0luVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQudGV4dERyYXdp
bmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hh
ZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYgKCFjb250ZXh0
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
ICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFk
b3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQg
bG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAgICAgICAgY29udGV4dC0+Y2xlYXJTaGFk
b3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC0+ZmlsbENvbG9yKCk7Cisg
ICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRv
d0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNo
YWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwor
ICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9y
U3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHNoYWRvd09m
ZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zv
cm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBz
byBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50Lnko
KSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNm
b3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkg
KyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50
KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIu
Z2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZh
bmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0
KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1Rl
eHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBjZ0NvbnRleHQs
IGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5
cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIGlm
ICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9u
dCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9p
bnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwgY2dDb250ZXh0
LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGds
eXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlmIChoYXNTaW1w
bGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29s
b3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjcsNyArNjY3LDcgQEAgZmxvYXQgRm9udENhc2Nh
ZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNj
YWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9sZHMgb3Vy
IGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZvciBlYWNoIGdseXBoLgogICAgIEdseXBo
QnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjg1LDcgKzY4NSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRl
OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lkIEZv
bnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAordm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJr
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAg
ICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBpbml0aWFsQWR2YW5jZSA9IGdl
dEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IGM0OTBiMTExNjFmZDhlMjcyM2FhOTY2MmQx
YjUwMDM5NDYzMTY2OGIuLmEyN2EyZWY2ZmVjZjdlODhkMmFhMzVmMWU4Y2FhNjUyNTYxYWZjYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dX
aW4uY3BwCkBAIC0xMjcsMjUgKzEyNywyNSBAQCBzdGF0aWMgQ0dQYXRoUmVmIGNyZWF0ZVBhdGhG
b3JHbHlwaChIREMgaGRjLCBHbHlwaCBnbHlwaCkKICAgICByZXR1cm4gcGF0aDsKIH0KIAotdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAordm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAogICAg
IGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QK
IHsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGJvb2wgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IFdl
YkNvcmVTaG91bGRVc2VGb250U21vb3RoaW5nKCk7CiAKICAgICBzd2l0Y2goZm9udERlc2NyaXB0
aW9uKCkuZm9udFNtb290aGluZygpKSB7CiAgICAgY2FzZSBBbnRpYWxpYXNlZDogewotICAgICAg
ICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKICAgICAgICAgc2hvdWxkVXNl
Rm9udFNtb290aGluZyA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBT
dWJwaXhlbEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hvdWxk
QW50aWFsaWFzKHRydWUpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFs
aWFzKHRydWUpOwogICAgICAgICBzaG91bGRVc2VGb250U21vb3RoaW5nID0gdHJ1ZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTm9TbW9vdGhpbmc6IHsKLSAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKICAgICAgICAgc2hvdWxkVXNlRm9udFNt
b290aGluZyA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNTksNyArMTU5LDcg
QEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRm9udCogZm9udCwKIAogICAgIHVpbnQzMl90IG9sZEZvbnRTbW9vdGhp
bmdTdHlsZSA9IHdrU2V0Rm9udFNtb290aGluZ1N0eWxlKGNnQ29udGV4dCwgc2hvdWxkVXNlRm9u
dFNtb290aGluZyk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEg
PSBmb250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKQEAgLTE3OCw0MyArMTc4LDQzIEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAgICAgRmxvYXRTaXplIHRyYW5zbGF0aW9uID0gZ2x5
cGhCdWZmZXIub2Zmc2V0QXQoZnJvbSk7CiAKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0Nv
bnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwotICAgIHdrU2V0Q0dDb250ZXh0Rm9udFJlbmRl
cmluZ1N0eWxlKGNnQ29udGV4dCwgZm9udC0+aXNTeXN0ZW1Gb250KCksIGZhbHNlLCBmb250LT5w
bGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CisgICAgd2tTZXRDR0NvbnRleHRGb250UmVuZGVyaW5n
U3R5bGUoY2dDb250ZXh0LCBmb250LmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC5wbGF0Zm9y
bURhdGEoKS51c2VHREkoKSk7CiAKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZs
b2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBz
aGFkb3dDb2xvclNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIGdy
YXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGdy
YXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC0+c2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQtPmdldENUTSgpLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93
ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBz
aGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCkuaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRv
dykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBv
ZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxp
YXNpbmcuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAg
Q29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3IoKTsKLSAgICAgICAg
Q29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGdyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yU3Bh
Y2UoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CisgICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC5maWxsQ29sb3IoKTsKKyAgICAgICAgQ29s
b3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGdyYXBoaWNzQ29udGV4dC5maWxsQ29sb3JTcGFjZSgp
OwogICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRv
d0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hhZG93Q29sb3IuYWxwaGEoKSAq
IGZpbGxDb2xvci5hbHBoYSgpIC8gMjU1KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRG
aWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3Bh
Y2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSArIHRyYW5zbGF0aW9u
LndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8gSWYgc2hhZG93cyBh
cmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxpZWQgdGhlIFkgY29v
cmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KLSAgICAgICAgZmxvYXQgc2hh
ZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNl
dC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQtPnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkg
PyAtMSA6IDEpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHRyYW5z
bGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGdyYXBoaWNzQ29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgQ0dDb250ZXh0
U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgc2hhZG93VGV4dFgsIHNoYWRvd1RleHRZKTsKICAg
ICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVm
ZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgICAgICBpZiAoZm9udC0+c3ludGhldGlj
Qm9sZE9mZnNldCgpKSB7Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dD
b250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgc2hhZG93T2Zmc2V0Lndp
ZHRoKCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0
aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgaWYgKGZvbnQu
c3ludGhldGljQm9sZE9mZnNldCgpKSB7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9z
aXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgc2hhZG93
T2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsg
dHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICAg
ICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVy
LmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2
YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgICAgICB9Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOwog
ICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50Lngo
KSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgp
KTsKICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhC
dWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZl
ci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgaWYgKGZvbnQtPnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0
LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgZm9udC0+c3ludGhldGljQm9sZE9m
ZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSk7CisgICAgaWYgKGZvbnQu
c3ludGhldGljQm9sZE9mZnNldCgpKSB7CisgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlv
bihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBmb250LnN5bnRo
ZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkpOwogICAg
ICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZm
ZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5h
ZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgfQogCiAgICAgaWYgKGhhc1NpbXBsZVNo
YWRvdykKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
ciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICAgICB3a1Jlc3RvcmVGb250U21vb3RoaW5nU3R5bGUo
Y2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5kZXggYjUwNWZjMTM4ZDU4MWE3YTQxZjFiZWE2
M2ZjZTUyNmU4NTQ2MWZkYi4uNWZiMDUyZDQ1NjdkYTAwYmQ4MmRlMjFjOWFkNjkwMTA1NWQ1ZDkx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0y
MzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQgZHJhd0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywg
TlNQb2ludCBwb2ludCwgTlNGb250ICpmb250LCBOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29s
b3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVk
OiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1
LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAg
ICAKLSAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoJmdyYXBoaWNzQ29udGV4dCwgcnVuLCBG
bG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkp
OworICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxv
YXRQb2ludChwb2ludC54LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghZmxpcHBlZCkKICAgICAgICAgICAgIENHQ29udGV4dFNj
YWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5kZXggODNiMTc1ZGZjNTQ4NGVhNWViMTVkYzI5
NjFiODJjMDZjYWNjNGVjOC4uMzY1NGM2MDEwYzVkZmIxYjA4MWVlMTA1YzViMzY2ZjY4NWE1MDkz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwCkBAIC0zMDcsMTMgKzMwNywxMyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAg
ICAgICAgICAgICAgIGlmICghaGFzRmlsbCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9GaWxsTW9k
ZSB8IEFwcGx5VG9UZXh0TW9kZTsKLSAgICAgICAgICAgICAgICBwYWludFRleHQocGFpbnRJbmZv
LmNvbnRleHQsICZzdHlsZSwgc2VsZWN0aW9uU3R5bGUsIGZyYWdtZW50LCBoYXNTZWxlY3Rpb24s
IHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CisgICAgICAgICAgICAgICAgcGFpbnRUZXh0KCpwYWlu
dEluZm8uY29udGV4dCwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVj
dGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgUGFpbnRUeXBlU3Ryb2tlOgogICAgICAgICAgICAgICAgIGlmICghaGFz
VmlzaWJsZVN0cm9rZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9TdHJva2VNb2RlIHwgQXBwbHlU
b1RleHRNb2RlOwotICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCwg
JnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxl
Y3RlZFRleHRPbmx5KTsKKyAgICAgICAgICAgICAgICBwYWludFRleHQoKnBhaW50SW5mby5jb250
ZXh0LCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWlu
dFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTY1
LDcgKzU2NSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0
eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlCiAgICAgICAgIHJlbGVhc2VQYWlu
dGluZ1Jlc291cmNlKGNvbnRleHQsICZwYXRoKTsKIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94
OjpwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0
eWxlKiBzdHlsZSwgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFn
bWVudCwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikKK3ZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYgZnJhZ21lbnQsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pCiB7CiAgICAg
ZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFT
U0VSVChzY2FsaW5nRmFjdG9yKTsKQEAgLTU4MywyNCArNTgzLDI1IEBAIHZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBS
ZW5kZXJTdHlsCiAKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmln
aW4ueCgpLCB0ZXh0T3JpZ2luLnkoKSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFz
Y2VudCgpKSwgdGV4dFNpemUpOwogCisgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9
ICZjb250ZXh0OwogICAgIGRvIHsKLSAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0
Rm9yVGV4dFBhaW50aW5nKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHRleHRSdW4sIHN0eWxlKSkK
KyAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKHVzZWRD
b250ZXh0LCBzY2FsaW5nRmFjdG9yLCB0ZXh0UnVuLCBzdHlsZSkpCiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIo
KmNvbnRleHQsIHNoYWRvdywgc2hhZG93UmVjdCk7CisgICAgICAgICAgICBTaGFkb3dBcHBsaWVy
IHNoYWRvd0FwcGxpZXIoKnVzZWRDb250ZXh0LCBzaGFkb3csIHNoYWRvd1JlY3QpOwogCiAgICAg
ICAgICAgICBpZiAoIXNoYWRvd0FwcGxpZXIuZGlkU2F2ZUNvbnRleHQoKSkKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CisgICAgICAgICAgICAg
ICAgdXNlZENvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAKICAgICAg
ICAgICAgIHNjYWxlZEZvbnQuZHJhd1RleHQoY29udGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiAr
IHNoYWRvd0FwcGxpZXIuZXh0cmFPZmZzZXQoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24p
OwogCiAgICAgICAgICAgICBpZiAoIXNoYWRvd0FwcGxpZXIuZGlkU2F2ZUNvbnRleHQoKSkKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgICAgICAgICAgdXNlZENv
bnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3RvcmVHcmFwaGljc0Nv
bnRleHRBZnRlclRleHRQYWludGluZyhjb250ZXh0LCB0ZXh0UnVuKTsKKyAgICAgICAgcmVzdG9y
ZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBhaW50aW5nKHVzZWRDb250ZXh0LCB0ZXh0UnVuKTsK
IAogICAgICAgICBpZiAoIXNoYWRvdykKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjA5LDcgKzYx
MCw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsCiAgICAgfSB3aGlsZSAoc2hhZG93KTsKIH0K
IAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBzZWxlY3Rpb25TdHlsZSwgY29u
c3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgYm9vbCBoYXNTZWxlY3Rpb24sIGJvb2wgcGFp
bnRTZWxlY3RlZFRleHRPbmx5KQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBz
ZWxlY3Rpb25TdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgYm9vbCBoYXNT
ZWxlY3Rpb24sIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5KQogewogICAgIEFTU0VSVChzdHls
ZSk7CiAgICAgQVNTRVJUKHNlbGVjdGlvblN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKaW5kZXggMjNjMDc2OWZlOWZhNzc2MjhiZWQw
MWVhM2NiMGM3OWU1YWFjZmI2OC4uNjRmMjFmM2RhNjY4YjljOThlM2JlMjIzNjNkZjk1NGU3NDc0
MjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmgKQEAgLTc5LDggKzc5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGFpbnREZWNvcmF0
aW9uKEdyYXBoaWNzQ29udGV4dCosIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmKTsKICAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQq
LCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyQm94TW9kZWxP
YmplY3QmIGRlY29yYXRpb25SZW5kZXJlcik7Ci0gICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93
cyhHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJTdHlsZSosIFRleHRSdW4mLCBjb25zdCBTVkdUZXh0
RnJhZ21lbnQmLCBpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKTsKLSAgICB2b2lk
IHBhaW50VGV4dChHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBz
ZWxlY3Rpb25TdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgYm9vbCBoYXNTZWxlY3Rpb24s
IGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFk
b3dzKEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYsIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pOworICAgIHZv
aWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUq
IHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlv
biwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZGQz
ZjI4NTU3ZTA2MjczODZkMDVjYmYzZWMwZjZmOTdmNTU2N2U1YS4uNjI3NzE5NGNlYTg4Yzk3NDE0
NTMxYTQ3Y2M3YjVhODg0MWRhMDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2Miwx
MyArMjYyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFRvUGF0aFRyYW5zbGF0b3I+IFNWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVHbHlwaFRvCiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yPih0ZXh0UnVuLCBnbHlwaEJ1ZmZlciwg
cG9pbnQsICpzdmdGb250RGF0YSwgKmZvbnRFbGVtZW50LCBmcm9tLCBudW1HbHlwaHMsIHNjYWxl
LCBpc1ZlcnRpY2FsVGV4dCk7CiB9CiAKLXZvaWQgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKK3ZvaWQgU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBhdXRvIGFj
dGl2ZVBhaW50aW5nUmVzb3VyY2UgPSB0aGlzLT5hY3RpdmVQYWludGluZ1Jlc291cmNlKCk7CiAg
ICAgaWYgKCFhY3RpdmVQYWludGluZ1Jlc291cmNlKSB7CiAgICAgICAgIC8vIFRPRE86IFdlJ3Jl
IG9ubHkgc3VwcG9ydGluZyBzaW1wbGUgZmlsbGVkIEhUTUwgdGV4dCBzbyBmYXIuCiAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvciogc29saWRQYWludGluZ1Jlc291cmNlID0gUmVu
ZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlkUGFpbnRpbmdSZXNvdXJjZSgpOwotICAgICAgICBz
b2xpZFBhaW50aW5nUmVzb3VyY2UtPnNldENvbG9yKGNvbnRleHQtPmZpbGxDb2xvcigpKTsKKyAg
ICAgICAgc29saWRQYWludGluZ1Jlc291cmNlLT5zZXRDb2xvcihjb250ZXh0LmZpbGxDb2xvcigp
KTsKICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IHNvbGlkUGFpbnRpbmdSZXNvdXJj
ZTsKICAgICB9CiAKQEAgLTI3NywxNSArMjc3LDE2IEBAIHZvaWQgU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
CiAKICAgICBBU1NFUlQoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZU1vZGUgcmVzb3VyY2VNb2RlID0gY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0g
VGV4dE1vZGVTdHJva2UgPyBBcHBseVRvU3Ryb2tlTW9kZSA6IEFwcGx5VG9GaWxsTW9kZTsKLSAg
ICBmb3IgKGF1dG8gdHJhbnNsYXRvciA9IGNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcigqZm9u
dCwgbnVsbHB0ciwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOyB0cmFuc2xh
dG9yLT5jb250YWluc01vcmVQYXRocygpOyB0cmFuc2xhdG9yLT5hZHZhbmNlKCkpIHsKKyAgICBS
ZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3VyY2VNb2RlID0gY29udGV4dC50ZXh0RHJhd2luZ01v
ZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxN
b2RlOworICAgIGZvciAoYXV0byB0cmFuc2xhdG9yID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xh
dG9yKGZvbnQsIG51bGxwdHIsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsg
dHJhbnNsYXRvci0+Y29udGFpbnNNb3JlUGF0aHMoKTsgdHJhbnNsYXRvci0+YWR2YW5jZSgpKSB7
CiAgICAgICAgIFBhdGggZ2x5cGhQYXRoID0gdHJhbnNsYXRvci0+cGF0aCgpOwotICAgICAgICBp
ZiAoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIs
IHN0eWxlLCBjb250ZXh0LCByZXNvdXJjZU1vZGUpKSB7Ci0gICAgICAgICAgICBmbG9hdCBzdHJv
a2VUaGlja25lc3MgPSBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OworICAgICAgICBpZiAoYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHN0eWxlLCB1c2Vk
Q29udGV4dCwgcmVzb3VyY2VNb2RlKSkgeworICAgICAgICAgICAgZmxvYXQgc3Ryb2tlVGhpY2tu
ZXNzID0gY29udGV4dC5zdHJva2VUaGlja25lc3MoKTsKICAgICAgICAgICAgIGlmIChpczxSZW5k
ZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigpKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzICogZG93bmNhc3Q8UmVuZGVyU1ZHSW5s
aW5lVGV4dD4ocmVuZGVyZXIoKSkuc2NhbGluZ0ZhY3RvcigpKTsKLSAgICAgICAgICAgIGFjdGl2
ZVBhaW50aW5nUmVzb3VyY2UtPnBvc3RBcHBseVJlc291cmNlKGVsZW1lbnRSZW5kZXJlciwgY29u
dGV4dCwgcmVzb3VyY2VNb2RlLCAmZ2x5cGhQYXRoLCBudWxscHRyKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MpOworICAgICAgICAgICAg
ICAgIHVzZWRDb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzICogZG93
bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVyZXIoKSkuc2NhbGluZ0ZhY3RvcigpKTsK
KyAgICAgICAgICAgIGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPnBvc3RBcHBseVJlc291cmNlKGVs
ZW1lbnRSZW5kZXJlciwgdXNlZENvbnRleHQsIHJlc291cmNlTW9kZSwgJmdseXBoUGF0aCwgbnVs
bHB0cik7CisgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9r
ZVRoaWNrbmVzcyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
NTAxYjljOGZmMTA1MjRhNDk4YTZmZTc3N2NiNjk5OTc3NDFlZGMwNC4uOWQ4NWZiZTdiYWE5ZWQ0
OTc1MTgyNjg2YmUzYjFlOTE3YTA2NDk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBY3RpdmVQYWludGluZ1Jlc291cmNlKFJlbmRl
clNWR1Jlc291cmNlKiBvYmplY3QpIHsgbV9hY3RpdmVQYWludGluZ1Jlc291cmNlID0gb2JqZWN0
OyB9CiAKICAgICB2aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3Qg
Rm9udENhc2NhZGUmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWly
cm9yLCBpbnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmlu
ZyYgbm9ybWFsaXplZFNwYWNlc1N0cmluZ0NhY2hlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5
cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IHRvLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCB0bywgY29uc3Qg
RmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0
aFVzaW5nU1ZHRm9udChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNo
YXJzQ29uc3VtZWQsIFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgYXBwbHlTVkdLZXJuaW5nKGNvbnN0IEZvbnQqLCBXaWR0aEl0ZXJhdG9yJiwgR2x5
cGhCdWZmZXIqLCBpbnQgZnJvbSkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDUxMmFmNDE5NGNi
MjUxMzgxOGQ5MTEyMzQ5MWY2ZDIwZTQ4YWY4YjQuLjAwMjVhZTI5MzAyMTdhMmFlNjYyZmYwNGQ2
YTBiNjRjOWI0YmRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0
TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0
cmluZ0V4dHJhcy5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIC0gKHZvaWQpX3dlYl9kcmF3QXRQb2lu
dDooTlNQb2ludClwb2ludCBmb250OihOU0ZvbnQgKilmb250IHRleHRDb2xvcjooTlNDb2xvciAq
CiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJH
QkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZh
bHBoYV07CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVk
ICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAotICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250
ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICog
cG9pbnQueSkpKSk7CisgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4
dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBv
aW50LnkpKSkpOwogCiAgICAgICAgIGlmICghZmxpcHBlZCkKICAgICAgICAgICAgIENHQ29udGV4
dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwo=
</data>
<flag name="commit-queue"
          id="285322"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>260128</attachid>
            <date>2015-08-27 23:23:09 -0700</date>
            <delta_ts>2015-08-28 18:52:34 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews103 for mac-mavericks</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>907854</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
ZPSuhK0kOUhlPWtD2rpILG6A3rz0Aqw26y0DFmF75LEsj67D1Qim8fERg34Gs2TTRC2EzG6t/Qja
dlWK2ffU3sinGpYotV4JoPR47Za0u1NOPH3PelYl76QDR+tNTaqNKAcLUjsOzr4lxFKPLbBCYqvH
FUqMfAIDcGcuVnFnG8ZXCp90KjmZhZRjZNXBUHPDZOh4CWkYLVGjcIGDb6TKnph7o8gE76iJVYnx
Q0fE7m/Eh1T5JugPVBK+/XFOpeJjvGFBVN/fZVVQuKbegr1BcYclc7CMi//y7rwP4gH0fb7uN/xP
eIoG/cYTPVL2219ffvjw9s1ztuS67AnBptHdWDmMdGjsHgBrxewujMWoD63Afzb9A06octswhoEs
lnNOUzpWtMblfm1AoOC1O7alzJYQdXFwnoA+WtySEyb3J9B3k0cuef519e51EkyXxxBUBj9Wc1RV
Ot5KdJ8jMFF+MTZa6UUC4joSEH+FErAWOR+if4m2iaUPEnhee9ky1XTUD7M8eW7IR0GsYQQEgc9s
KGNw6WbCNV1pOpnhXgT/HoyjkDochXytHOV8UyW+FRMjRiHV7v3JIiwK3hKKEofFb55Ir88T13Zp
D7B7BVt9WrcxxYhkLWuC7lod00C8SX7cg3MC3bExNvAwLNUAWaqDnrTh1pgMIy4iSqSUNn1k2e2Q
FDZsZeiZUoGvDi+r86n5gTRURg+DXCDHPXPuZB1QY8WgPkEVvE+ePxOtBapTGolrj1jXMeroOsaT
9VSbyIusrQvgWvkxuLufIjK7c02U0Un74lrGQG4zExThLro8T1MJbWR2mGl0YRQiLVHz7yhjTjXe
PrqiDNUhTg8+brhkWNfV4ClFDt4Ntshcy8NjWpD5K7AuQlft/oSXLgk5k7iXJOSFe/0dG5lUbGK8
0r4SCcps0sHGkDuocMZj3TkjLOr2DOhMDZTnwCUkWFFGIzu1yMqtzQgcVTlVvWhgZh0NzPxCNLBu
WtHSS7UDOQciGu6D6VShHKSdue5ZN9ELvVfvoIr32QP50i1l8YPaWuPVG/3KfXf1Bl05Onv96i3/
ivlXc+/9l/yrXmp2N7yOQnSjDXJUqprrOMmUKZqjoMazK2S74cgmmTDtDNzIoKqadVo880HEyd2J
yhKj83IltMji7Yqin2rZI1TLE1NvUfnRkGE1X6VfYVfj2hj0qNCPVzxX6c5P0k2qrfwVIyve3Q9c
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
/1BLAwQKAAAAAAAkuhtHAAAAAAAAAAAAAAAABQAcAGZhc3QvVVQJAAPj/N9VS/3fVXV4CwABBPUB
AAAEUAAAAFBLAwQKAAAAAAAXuhtHAAAAAAAAAAAAAAAADAAcAGZhc3QvY2FudmFzL1VUCQADzvzf
VUv931V1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAF7obRzslfmeHAAAAGgEAACYAHABmYXN0L2Nh
bnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVUCQADzvzfVc7831V1eAsAAQT1AQAABFAA
AADNzj0OgkAUReHeVdwNSATMECfGhICxsVI7YzHKDZIMb8xj8G/1sgzL81WnHFtkBbLcpsYuDfga
0kWe+HBzHvXYPw6UhnpS8mzMKisuWG9Vg24sql0VJPIdj4z7Tli74W7RydP5rkEzFZyq+1i4CE83
RAQh6NlTIvpxgishQeZfakhm5T/N/ABQSwMECgAAAAAAIbobRwAAAAAAAAAAAAAAAAwAHABmYXN0
L2ltYWdlcy9VVAkAA93831VL/d9VdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIACG6G0chj704MgAA
ADMAAAAsABwAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAkA
A93831Xd/N9VdXgLAAEE9QEAAARQAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYKmXnJ+UVF
qcklCimJJYkKyRmpydl6XABQSwMECgAAAAAAJLobRwAAAAAAAAAAAAAAAAoAHABmYXN0L3RleHQv
VVQJAAPj/N9VS/3fVXV4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAkuhtHHB2rGDkBAACWAwAAJAAc
AGZhc3QvdGV4dC9mb250LXdlaWdodHMtemgtc3RkZXJyLnR4dFVUCQAD4/zfVeP831V1eAsAAQT1
AQAABFAAAADlkTFvwjAQhefmV5xYWBLkOCQOURupgFC7MDTZEIPj2NQqcVDiVLQo/702CFqpSO1a
1ds93z19dw8jP/RQ7GECOEh8kqBoRBCBeVftnrgqeZM3nK+iaIJJEiKyhlnd8JzvdQKP6pVuZQlD
WtXNELKu0LTYcqODohWHO8jyrFYbLb1s5k23lL240Mp3++NHI3R8LlRUN3JvNLQ3Vclb1sidrhuj
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
aW1wb3J0LXN0ZGVyci50eHRVVAkAAxL931US/d9VdXgLAAEE9QEAAARQAAAAjY5BDsMgDATveYU/
QCDtoRW/IcRVLBmMjJH6/BLlA9VeVjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9e8Uu
QzN2/+1sbk+Ho9JEzQ2ldW7AVBGegIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9QSwME
CgAAAAAALrobRwAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3RzL3NlY3VyaXR5L1VUCQAD+PzfVUv9
31V1eAsAAQT1AQAABFAAAABQSwMECgAAAAAALrobRwAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAkAA/f831VL/d9VdXgLAAEE9QEAAARQ
AAAAUEsDBBQAAgAIAC66G0djqqxsggAAAKgAAABAABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kveHNsLWFsbG93ZWQtc3RkZXJyLnR4dFVUCQAD9/zfVff831V1eAsA
AQT1AQAABFAAAAAtjUEKwzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV
0UR7YdDh3lIIy22d48iS7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4
NGh6Q21cJ5LKnZY50o7NrzFEm4Lsak3U8Zq+UEsDBBQAAgAIAC66G0djqqxsggAAAKgAAABSABwA
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQt
Ynktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUCQAD9/zfVff831V1eAsAAQT1AQAABFAAAAAtjUEK
wzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d48iS
7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY50o7N
rzFEm4Lsak3U8Zq+UEsDBBQAAgAIAC66G0dgS2YQkQAAAPsBAABFABwAaHR0cC90ZXN0cy9zZWN1
cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQJ
AAP4/N9V+PzfVXV4CwABBPUBAAAEUAAAAO2OMQ6DMAxFd07hC4QEllaZYejSngEFUyKZJLKdCm5f
OvQGHau/vq/3Qt5KpEljToDMmT0skRBW1eKt7fpL6851/uqcs4KhctTD7iJmGO+3cTC7kJlzqBsm
NV/gwfEZU7tvBBQTQg9I+CFA9CCUFVGb8+lfyHK6PeREB3StgwUnrYwCEyNILSWz4tyEf+iPQ99Q
SwMEFAACAAgABbobR+qKfEJhBQAABQ8AAAoAHABodHRwZC5jb25mVVQJAAOq/N9VQv3fVXV4CwAB
BPUBAAAEUAAAAK1XbW/bNhD+rl9BuDCwFZOcuHHnDYEB13GaLEmdWU4DLEkNWqIk1hLJkVQSZ+t+
+4605RfJEQpsDmCTx+e5Ox6Px4tP5CORY841arRyJRuOc8mD+SlNCQh0Jlq3ZHZBdSvRWoReCmsN
55qGrwEEDRuOH3BJPnAsX4Upg5gZBBic0IzwXKN3BwfOBSGin9JHgkbMucLP6/mY/JkTpRU63EYV
1MOO41xR5gssiW+3BEDD35F0HF9jqXcAg5QSZtR2Dsy0MHNN5CChaWjMwcdEBYdXPMxhPzjXycs0
4UpPs6UkpTPyTIIWFjhISLsF4ukG5Sm+TacsSPOQ1HFXkBIx5fE04CyicR13gyrRE4JD2HYddwUp
EZVK60iwXCJkcCp1DLNeomBFaz0z6yVKENM6BiyXCIzEXFOsKWd1xC1Y+eQyHJMMi9qjW2HK+wuM
vvotLiFlYkpxPc0ASiRJniTVtWewgpSIIhGdgrX6lMkwNyhDdJY36RPOCDps/+wdwN+h4xyfUEkC
zeUCtXqO0TESdmvonIWgS6FTnqb8yV9kl5TNFbrKU00/U/Kk0BBMDT6eA9LeAGXpfYMegSVJQ2Jm
S6USchXiA2s/hYQtNlAUSZ6ZFee4tfal5zj9ICBKmZpkXfYSja0EXDZChf5BjS/33g93Z8nD3UQ/
/H13Ej7c+ephar5+bPRet3sCg41ZI/Ehg1S0sO4et6x+cOFGkQFmnNEAp9YJKHMnJMIQgclCEKTJ
s26JFFPmnEHpYAC55HyeC4VGUWTKUHxJHkmKnrBkZnbKZYaheDcT1ExRM0dNje4bTXnfQM2eQs2Z
mf01JhGRRH6jIDZzcEO6/RgqnxE1UMCzGWUk/C6NFp7xXfMbE8jtoeZNA5LQCnZR1jBeGm4gOyjS
yKcxwzqXNibO8XlUVJN1kgc9iGQh75UxtqoEyzPqh+ElZnEOBlCIkRfOK2KWIo+lFTFhyCOsKtYg
JhVxJJEXyapJSK6wioZj80jVZGJScY0eJFgqMHfuj9xut/OL20UeVXw5rHAp+EV1RfwV9vwV71PZ
Pmi33d+uYZmqCm0O25nLV2kXY+uKO6/umEHYWDVsjIOYV8QCAiH4qztuL82IaqgEbFfoPWJ3Js0K
/FQWU/2CvDSvyAOIUYCrh6TgkKqhUY/IU49VJYAOQH9QZcgcebJq9iVxJ7fIgx/9VI7ABxp3irqL
vGLmzWBQht6efzoZ3fruYbtzCOaFHZRBg+vu+/drfYGA2atBN6Zs2Dc+F5iL0XnXHRdq5px23UqS
3Ax8OLcCkweqvQ9xtI04qiAmp5Dta4SOuo6F7N7z7fd5dd3NpwjwtaQcXraFuclw9eGag2a4p6G9
f3Bf4G5AnkNmQhZCPi1zBw7L5AnkBJw/nPXqbHbKzcpbW6exECnUcONE69mFrhJ5On5ZY4Ys4CFl
MXp2oVYKCY8M8v7Ysxq/UIG8+GWXfoZZmMIjAz2MqwJJTdrDGDI83XXDPheJzuA+KfNTVqBsZXWF
iW9YYKogFrpYuVTZNqyuxtqXf1Nj94TC9vcu4MDZRHwfcIb19wBdxXMZEKtY7cuMkMrtjFg//bbt
gL4bvj0brOWw8K9yyLAwjVIc244bug4O/yxwtrukEi71lAvCphqmsFwTtqLZWjk3Xk6HLIY317x2
W8IBZyGC13T4+83Qn0yvhpOz0ck39GUy7g+G28CxUe69RS66O30oGf9Mpc5xajoI9PbX7tHRu6Xh
vf2aXfAvN94ct7b4oO6N8wb14UiIqwQJaEQDFJl2ZqE0yZCQXBPbunqAXDVSDalk8H/0S1u9pOnO
vLf33r1nuqIw4nL+XyxsNYb/AlBLAwQKAAAAAAAzuhtHAAAAAAAAAAAAAAAACQAcAGltcG9ydGVk
L1VUCQADAv3fVUv931V1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAM7obRwAAAAAAAAAAAAAAABEA
HABpbXBvcnRlZC9tb3ppbGxhL1VUCQADAv3fVUv931V1eAsAAQT1AQAABFAAAABQSwMECgAAAAAA
O7obRwAAAAAAAAAAAAAAABUAHABpbXBvcnRlZC9tb3ppbGxhL3N2Zy9VVAkAAxL931VL/d9VdXgL
AAEE9QEAAARQAAAAUEsDBAoAAAAAADO6G0cAAAAAAAAAAAAAAAAaABwAaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC9VVAkAAwL931VL/d9VdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIADO6G0c5GnLR
iAIAAGIoAAA5ABwAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVu
dC1hY3R1YWwucG5nVVQJAAMC/d9VAv3fVXV4CwABBPUBAAAEUAAAAO3V0UtTURwH8HOu17xN1q4Y
VqPcrYS1YOZMl4G5ozh0PqitArER6tooZWRqYWhy1KfSaKA9WLAilPRBoYeNBVG+JEUPgQhSBg00
hECmVmyGue7TPQf8C4LffbmX7+/wO7/zuXDvvfraKr3OqEMI6V3VlW6E0hSEhAZpj5o8vj3Qrt4s
Xc6GLu81n7et81YAnSn2tfhsBV5bs7+wsMRutxW1NPuLi212r7/krP+0l7buvEPI/MtVWX6xG699
fnnfUy6L5dPRVOr7o6Djyoh0ciX/9by4lpfY2vmb+OgQRElWCEVYfRCFt4P6bC6Qk2aFHBYwWzRG
0YdJfZa2QFHIVwR1qEMd6lDfXV8fjKWykr1l5tRYPNGzecR0VCu1W2OnlMXnb6qo1mH2AqGl17cJ
l4QpepXz+xz3nQ4JwoprOYNLZtLF9+HJOL/tflmpMzrYl1zdTSEzzrsP2bT9Lyi6M5/s55I2jDus
P3q4X0Cp2npkzsAlnkwp2Hb+23E2ZMyikFBRn8IljYR6hv7kcjJ1GG+Ob6RxyaJ6jsaFBPe76dZJ
QfMDE5dEc+RdRLHVrSFTR3888eSGMU/bs16XzKyeCgyxhVGKDjnQJzO3RAq6l3LYcW9iXNiHQnVa
92cq20TEymZcFoSr26j0qdaVqGetCVxmHnMqUBJ3l7GubkJHv0TYIYZVsI209V7WdYIiSzjAXtfB
A7KynBHbYl1rMHa3Lh3TRi/IV8icYfbnXq3rqCCML0Sc2uhNHkKHTXQ1W+t6Il0EEAABEAABEAAB
EAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABkP8KJGaouLRvutOYS5F6uZy1lTMV
TQP/AFBLAwQUAAIACAAzuhtHpaM0lSABAAD7CAAANwAcAGltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQtZGlmZi5wbmdVVAkAAwL931UC/d9VdXgLAAEE9QEAAARQ
AAAA6wzwc+flkuJiYGDg9fRwCWJgYFZgYGCK4AAKMOyXvbuGgYHjkKeLY0gF49tbp7maDQRYL9wo
t18Tf7d+dWzJU7UFD1Jz+qw5DY3Vd3YkZOsxsXAIKDg0MDCOMohjNOoyXZ7mufr5HnHjuG5rcxYu
7hilralJEplHlZI5U5iK5LhDt/9XVlD4v3m61U1HBeEJZ7SsP1Q8ecE0c3G17NzI/+6iJ1hUNp8K
/O5wt5XVyP26e9VD5QVb5jmoKWyP4zzGcQUo/SRO3CGVpYppZkNF85dvByISG30c5rWyTnFboDyB
88Ti4EZFJqDWes/aWzZnc2fVr57LVa3ROxo7o4xRxihjlDHKGOoMbZZ91z1Z8w7UtlwHtWo8Xf1c
1jklNAEAUEsDBBQAAgAIADO6G0eYKfYpmQUAADESAAA5ABwAaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1kaWZmcy5odG1sVVQJAAMC/d9VAv3fVXV4CwABBPUB
AAAEUAAAAK1YS2/jNhC++1dwDRSSkVhOtrdYMZA6ARogxRbdXIogB1qiZSKUqJKUHW/h/97hQxIl
y8l2sznEMef1ceabIZn40+2X5ePff96h3x//eFiM4o3Kmf4gOIUPRRUjC5qXXCiSznL+jTKGZ3Kb
zRR5VTMJIkama1idZgKnlBQqAmk8s5ajWKq9/kTwE9EcZ2TJC4VpQQT616zqn5JLqigvrhBeSc4q
ReaNLMcioyC5vChf21VeKQZO7DICG5oiSdmWCKtzML8Hwy4QzTMveEplyfD+Cq0YT15qc88+AVPB
mfRsLKjpiivF8yv0ucF2GLJbVaBWeOY7mqoNYP9M8jfMVOqnCKcpLbIrdOFlYtCM4RVhnuUaBNM1
zimDPU53ZPVC1VTupSL5VMvmXU1Jv+m0Xg7FsBupE3HoBV5AqouUJlhxMZRfhVfAlYQw1oas8SRQ
9byYyhLrUrfyFRcpEVPFS8hyU+kVw22lGngWXSQJIwmw1YOguTpNScIFtjSrCvCqCVQ7iWeOqPHM
UX/F073uAA0aJQxLeT2utzq2hI6VWDQxYpUugPZpb8XVnqbXY/JaGmBTU6ExSrHCU7UvSSsaI14k
jCYv12O5oyrZPPJ7zd5QbaicjBd3Tg+Z1Xhmvb8TFyeqwmwgqhW8F/PGaP2viCldrwfi6eX3ot2C
zslY8Jc4lXpalJVCNlCyIcnLir+O7f4LmACKmMgbXGSgoHiWMXJjBeFkjIwF0RU0fhax7aI1F639
wulfxTMjHUrCaRTJPgH2dwrtwFQl5IiYPS+10nt4ep4aUnwAlseED4FyfhxnPgCoocppOG/AMNaG
SscQLIfgt27sxWgUp3Rb93f3pHDcLQVZ01eg68BZN148cKznchRF8Qw86RMvEbRUixFdo3AHA5Hv
IkWk+qsqwOdkZOdR/T1Kq7y8kY8woMLJfDTaYoGS5qi6RilPqlwfqv9UROy/mtHGRRj0DrWgttWI
wcyOvqDmSICuvGkYGFu9BltjgN82YBM2yoi6UUpQ6D8SBl4Sggk6Q0FDvagssmBy3jo2udaOG9jg
6o4R/edv+/s0DLozsDY+2I/A0ucno7VOfwCrPzf7SDXDfjJO7fIHULaz1sN4cHRwUIgFs+RVoYAd
FyBdV0Wiz8JaZck1u/UwHNk9nZ0NGNvjUjN7yHOMfp000AVRlSjm7fEsN3xnc6L3/lQX+3lidY47
3K5LhYXSK9BlRiq15HC8A+u7EqzegSkIbLcgO3ui1C6NIIIL1d0W0vhA4SoEBQoD7SU472ekYyRF
Ah4hiF20m7SyLqju4UZsxWpkujTG5hEGIPhz4iGK6BEZ1KnoZrDx8NxLiCCSqAdNCdmUE6YjCk1c
uPchWphJ0VbLOgTRc2S4FJmJqFMTCZLzLcCp71VBL1qLCm5+JONif2tc27gt/wWBa2BClhvK0o6q
nWXnnuqaCqmM4sQjUGdbdr3jpg8cCnwa9THdHGCdiaiZcOY88edwv/26h3EwidwhOW+duQH0na5c
Www5MhPiO92YAeU58fcOFstKCLBg+69QvbqzNJfeIYw38PQUeIM2rprSL0HLN795VPsK8lH27mh1
U+uoJye2VW733QYcHiNaAnQinhovh4aNOZd1Yu8LRcQWs/vbudcCA84d3kGHhrpdb1BRd1kAktfL
oVUydufwyry46PfesXcvT70Qk84L1MQCORa9aK1++ww7BqtfUGto1nSodB7s0J95iWXdvRvMb/Nw
3piZNyDoP7UXmvPmsnDuDuPnVh/2Rl5B39hF5tuXdegH98dKDezeWYXW/AxdTtAvzgcjRaY2rhW5
l0dtrOwQN5pPjafn+XGnaM1n28HdVlgJgl9agzbvPq72y0lsB7SDqUl83U/XNh/6hjhwiPRR27ME
nsPuFguvMPsQntn/DP0HUEsDBBQAAgAIADO6G0fLT+36xwIAAAQnAAA7ABwAaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1leHBlY3RlZC5wbmdVVAkAAwL931UC
/d9VdXgLAAEE9QEAAARQAAAA6wzwc+flkuJiYGDg9fRwCWJgYFZgYGCK4GADiswqayoAUpolrhEl
yRmpydnFpbkMBoYmhknmRsbmhoZpyalmSUkGKaYp5onGaRZp5hYpKRbt91vFGRjUpnm6OIZUML69
c9FPKluiLfDYlyObry35Xl9/70iIlKeIsUXLw5nzd9jc2h0Vt+uH3zwH67P58ezxLBwCCg4NDIxM
QAYHy7wmXmFkkR/6Cg4yTGAmRGxmA8PJFbyCcAUKCg53GEblR+VH5UflR+Ux5T9wH7RgumyS+ynl
WeW9J4U2HHDFjWtZ9zBv2rriuDJcsUNC4AFrhW6T37XJ/3ZvqK1pfvLj2bFD0qqXXx96//k0omBm
ExRQaN4jMH/esdO//89NSn6rvorlhLrbf2eYQQbzGhgk35taytTtt1/5udxmHe8kwf8584Rhlh/o
FxNQUN73p15s3hSFyIaPCLP7lRQc3GqWXqtjeW3j4fZnc4Ufwlo7Do4J/BKH/yzvT+D9HFShBJe5
zcUxIdd2e+WWpf0JuZ9fyLXCg+RAHhNTivkv7sPnxfc9j0YYJRfh0NDz49Hce4w/38Xv/VQOtPOr
jTo8aLiZmJ4wncu7b8V6Is//gAEizH4DnfB7x71vK7L/C+0qd8gr/rabE2ZmESPjpMnrJWz+Gu/R
rrvSj6jFKlQYGY0erd76TTni/l/ZiVhDYjmDJT+P/E6pj1c/zYG7cp3AjGfb12vX3eu/F5gwq6+1
8Pf06V/KnPvhEVYg37j8t80ad1VEFDYcCGeUP/gra9Pt9RXPk8yrDsM9PbGh3EEpwxipfpXhYzoi
inCnwgROjgk9twSQ0hPTEd5R+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5
UflR+VH5UflR+VH5UflR+VH5UfkBl//PIFZp0uRp+HEKAxB4uvq5rHNKaAIAUEsDBBQAAgAIADO6
G0fE+duUUwEAAFwCAAA7ABwAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1n
cmFkaWVudC1leHBlY3RlZC5zdmdVVAkAAwL931UC/d9VdXgLAAEE9QEAAARQAAAAjVHBaoQwEL37
FdP0sgvVRBdaKLrQUuixhbIf4Cajho2JJNlV+/WNrrYUemggZN7kzcubTH4TxxFM60mPwE03Wlk3
HqQDgULy0qMAb8A3CO/no5IcXkxbSp1cqxrvu0dKucXSywty07ZGu8TYmnYzXcxs+onW0DRhNIrj
fZS7Sw1Dq7QryKLQ933S7+bCjDFGA4NAL4VvCvLAGIEGJ2MFySZwkdg/m6EgDBiEa5iy+2ApV1Jj
aV9tKSTq0IcoSBCqF3zQ0oc3zw7tR1dyfNMHhwSGNCgRGMMRp7uAsysOx26WDcLOmw5MVTn08+WE
Y26UsQWxKAj9i5f+5o2olOmv1Jz+tjrnavC21K4yti3IHKowgU3K2F3Y29WLRe5huHpcLC9fld7/
/NQUV1Kp0K9Vm9t6++3x//XOW3PCghxVyU8rjBdytupro3Htqg7jnaa3j74AUEsDBBQAAgAIADu6
G0d4J1ktzxkAAGg/AAAuABwAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYtYWN0
dWFsLnBuZ1VUCQADEf3fVRH931V1eAsAAQT1AQAABFAAAADtmflfkmn3x6lstJyyxso208apbNN2
d7HVzDVNcUNyXHJJKQ1wA7S9LLBMqUwZs1JTwRQlQaBlJkxcslwSBTQjEwQSBRQEvva8nlGf375/
gP6A3PeLaznv+9znc851bnh5OC9ZvHYxAABY4nL8iDcAsMAUAJjvr/fL1J2H8Ivnpv5tvXDU/0JY
VERYbCIsDnAgYu8um32R+3f9uefAvoiwiH3We8L2W+/dFRqxf9fufZER3oeMDwIAjkqXIwdPJc0T
cZLvRfgmW/VxOPvcrZbsM7+oV+L2+++Lo/749WHInzorFjr/vSjC++Dx9bvbDK7t2P3LjX2/m15a
pnNyo7n54sdHFl5+am2aff2v9CObI+K/ZyjljmSBiLAoqL/Cy7c1ILYLKbEp5gYp6mTOasEjZMs9
OmWF/rz5OnrLTJ3SAVNf3jmdFqyuv4r77+V/7jttMU0fPzrrzukmHZ2s3UXyQzPj9PRMUbozV8tW
7503L7yphLZs1uTzr/P+Zyk3J8CavTGWR2ZWSgd8QcxcATJ2Gy5zeneLrb98ZvGprRjPbcVJEyOw
EyDOnmKmwMohzP0w/1mr+K/K4OdGbFHt2HnuLFKa99RvfYiwKDdFk2RhWQHsxdwAnmZVsxRYX8HA
c5h9HQYm+FyJcRcmeRhXCyqnZ3E7lrEVCXtwCzoJTW3NFJJrzEyscg1QP3isYkeYV8WZ3K0+8c+x
ZR0jSRCLcmAfXMsEhrPqg9pHPtrCh4jCS1emsXhPUUB3MCd5MAkIF0vklJytH9nPD+KlBHSfZ0K7
YNfa2940DCDX2KSTFInS91ALpjEZFFD5l/Hr8Z6pVZSNY0P6rFtrDHJsEsXbygjKQem94snCcqr4
dn5XNV5dVtUdicNFfwrMWudfAM5EdI7IbSN/LR87/i+yXQcX6mQxBJfygxQafMKreaONy53rqZMD
wAJQiwNZvQUtso0vGRhBHeuRCFvH62zFhIFOW4IlEtnVbmadGQNufIqj/9WUn3rwARAdqUh7YtkT
pyiSFhoYexfIyrdTs9re/P3ln0+NlwwIXmIqFF43gNmSGxQfUBaMVqfwb24/sBOoGeHhYgnd1oHN
BUhIN7xHn9VihweHqNifWIIyXicjrkI5bgIb3qDaNv0UNxekA6qa8EM5sFZ3Fk1BONUZovqW0Oqw
HcFL5ue0bss7m+Bb4VkxsIRDGZHxM5QDqLINE9YlOxiTMv4nvMYJkdJ9XBJa06E5FU9P5uxJ/KY2
i9sA4yyxsqc9SvqyIYJbv6ARjGi+oWa33QXDJ1KMog7wJgfVQoiPiefzt/Z30r2nd5LllLf/bMDm
DDMKzcN2qGK5I/tmK0qOVzJU1WrsgKhQXahlr3Wks9V9qeLktID4Ou7yO4WSr1csJ0PR40mhnHbM
OMlsq0IGrDXbFpeg2QR7FOJst1ME4/df6zL3RCuX8MNM7F6STKu6QpgdMlpE/5shfiwkNa77z0x8
DpkmytzfW3PuI12xCdYkEX3d/u978Oryb+d0wh84tlAFpSdE+8p0KUXGrnjvfYnfJhM+uQvvbbHv
b6GoH9vWhjzDYJn5G5JOF+2J7YSeyCtr88CvpQxXtxo17mYOB4EkPszdh62w0nrwQB86ZpnNE7d8
JSceb4kaiQMvSx7vfz2hWNM6DpvgKkICB2+TfP6Blw2wOBr6zKuyPuM1ep7HI4VsNSPbUGB/Q8Wa
GIQCoxwPp945APnyvYjXpk0ZkJkflzAh9S+NbNmTmDu5m5yPPbtNSr4H8xEo6/anPQKZeG7PXNUs
xsDXo8Yz3sq1MiL+ZC1PY8fP0GUPxRV3jMhCVf4Hp52a/tOpxyccghXjaWRQXpLj+GIPGlQzOcjz
ZQ8dQSJF2wKs5H6Yt0SWJeOYwodIV4pcgGqhcAjMK90YfqVKq8Fvt0ztJl+ledhRxjQK8icyW3qH
e4k4HYoMjzkBJjJNIqhNYih1Qn/wUbWPzdgHxRIVBt5RTEzjy2TmLtT6s1BCQ2X+u9c31+xNMWSA
/Ptf/42H56095NgtA37NMvCt7icXTrwxkm9FcCfuUVpXwiZ3jZxpezgdHcp/2mHO1V/hvKEOEp1d
aWD/40dV/1VX3iJa1+nTe1IgkLxwdRd4k8BSoxdWe1jS/rzUp+ckvilCm/Kww5YTnF1Bpid91t8Z
SAq20YxbKYjA1M/w7TPhlJgOkF7Hc2pkpOejAhNWdeOiLfW0YTLvDgc93DPwgV/Fqt0BVLbBYSow
7JPRtXh5Wtarsao3i+PuJm8lJv0TcKn2V3sbRS98U3kt6YZ61XQQvvG7abr9ly3d+uuLH0nfpUx0
T/BziJPHyIoNqY/8/YLPj5/EZBSZPm0qUy0B1nxfDom5G/fIFhavwJB7pVXLeRN3y86BHb7Aty+a
3mlxOmCPYBAOcVCe/5MsS8T3MEiuH5YGL4zJ8RVbQFM+4a4iB63oI41SKs+hggAtjkImTlmauyrp
mCJcLUNTxxpLoFSRC6xKKZUl2z0m7eqchYH8n8kR3g75ggLpJZP6kmBYx+YICQ0r4lVzdIsuFIfJ
iNev/ZNZDEOoxBWrebivt61y/MrZsPjQeBL/tS5omNceD4/a+K/G3NebP7+hBP8ntMDZTvmCZQGx
jK2AuXISs23ZQ76xcMOSnidjhawRpiRA8p3mDVarbS1MKN2jy6IUulvNQhbGnp6K2L+IG+i9r7Zh
pz1uIHhK+0YW2DMINEpv2iibL4TwntYLwTRV+j0pgULPX0XyVIBFIasO41LFAXV5ldwgiXmDF35T
a0/+gHCRH6I5oCqmNKazXFdwRAb/WpTcGhKTeXfa1ez19UzNUCk0V8kGWLsd1VXcMhXU8w0+avRQ
rlquqnOQlQNGOFRrGxr6No9+M/bagEqK4Qy2U/prX69zEBp9NzaOsdqwPjoaESbhmIW/pdQhSOFP
1OVm0+oOmWJS2SpE7LdOq7Yf+3ArYfhFKrMNu9WHjdzKLvWNCyjTnK+PtdqK5CGxQxWBAqGsiwhq
sRWuhOGvCdhFuezH65f5V/aVE+p/vInT9VuS0ht6TTIG5EV+SPH830c5PBqL4yJfUquTqVpmEFcK
UafWJzYUqBCtPR0vnnmaoHKeZbhK5bIawMeL1yNuvJKwSNEQMea3fHigBGXqWtuRTciFeHEnWgZU
IFrkkHvMtF+ftzBN/1UJGOwqMtlyIRZj/YXDeQoHhUwUKNOotgUOUa3eIZ8rghKbgbkghvLWxp4T
CFk5Xps2ujYyvqKHbn9W9RU8cjqgss99f7r9KQ8HmELawyMAb31BSuxI9hPvGUShVUWYKrSnYiYp
Ykxh+6tVfG/tas0pi7rwMuknvKOlB0Pg7mhCCtNmqynMO+Jb3AO/rl9Y6qvVZKv7sREjX4wFyzH6
1EUa7ZjnW3CIRgrNxaIn+xZ3fEOSRN/QbnLeWgn+v67q/5/5qxG+ZfCxsJ44yx15cfBkh9+rjnEG
Oi7JA6Vf3WGqbRx6a3KLJa5cTGQPHUVPDjyUBfTAX1eKss/8s1NWgaq/ir0tvIM1ufdT2eu/buLt
nIpnl02jDFuCsuxGm0AdSDYfAQxmZoZRL0473J9Tmc+IjabSj7GDzKUcs1GPdf390x3kz4XFzJBL
mSuFy7MdKL5m4LuI1xf5rEEgz4LTk9uvFUkqTLAQyXPgWA6MdBoWYIzrPH/euPlHva0HMSzEWEKY
J0qGlfsIL8VWvqQ+QspbIjJ3ovxy6coOeQ8eYkGJon4U11X1JsQ5NusKx5OMZ0WtzX1LoSM35BjU
+sQmekTLIyol2RiJ/BTz6jtnwh6+zq++TJPhQBymq0r5aokWG6qosVZ+R9xDT+A8c9fspQekgkGM
1Euhxu94Nw8UR3R/q3ErPeNVs/1mTdlF4+SvKE7vfTkKrx6G5IDqv5THFzS/Wwf55PkBs6pmnRP9
ubZOd9ZOTNMv4L+bxFy3rt4RuI9GAvzUfxjoz20ROEqNWqG5k3s7pjLJ5cF+Yb1UTsZ7LbUbdrgE
p6vlHaytxfUvhuvOUJ/72G378G48mO2+qufJyNHM3HUwUmWbPFaismJ0V05+MWoVfWtvwgP3cseS
B0Venq9trQpw0q+BJl7OdoEkqbcwZ0bs3J0AQ45tRTHX/U+1WIeRxSvKNynkq62RAkvksOhu/WCH
K3ODr2YUqK27+uC1YXFP+NgqJ6WS7g8ZNITxfDXeb5l8OTRtIIefyks9Hx36mBP1YqfoBZiQ1DdR
Ndk3FRxbvan7y3BdL8KM3zC9d52YzmJWfFevtNnIY1fRS6/F7LKu7alrPhgFCg1EcNYJR+G6YhHu
xXuWAOW5fd3Zc+CAhAW0TbyUf1bm5Y628uhXsSpB40Du2dVnOvJ4aQlWGZOt6JCaXqRiG+elgpsj
+CqNButFOzsQKDHZ4gtlrWnfaJw7TyL3XOhGKopYr3XR5SHRwxLBM7rtQ22iMArDeP720HSGcXJK
maUda3+N3y4qMDYCk9zdHC35+bK9Jml/hI1BLr77LLfk5Dyi/NmA24T76vA4PsA+XJiUSklTZ/S0
3cyJScoDM9unEs9J6d9buCcLJprK/pP1ckcL3lLs3pM/VaIU1OKcA0bP3B2hLD4O6mdZo9I2juLR
0d3h2WWN/ddM/MVUosyuGLPqyEO+elaFs/lhOsA70NT8KTiFrCbTwRtqiVA/8GhtvLoK3V2N4i2O
YBozwJ1BEmUoD95iY5fzs+ggaJHGZ5b2ONL9hgPQvVThy+Kr5FRhVEYMyhjR3ka41RHfNC6B1dM3
GAfQ7GWlDEsRqZZl0VOVZ/BxM95gBwiibvoo1pWSisE8jtXTZsut/O+2gcsm3r+K3zAt4Zuvv/rD
wBTXiR3ZwlGb0yf5VhcSrdlq82duyYfBwEHi5HW8FwNK3gMTvAXjC3m9366QtGOK3NalHPt5BUQv
3mEqkRkJq3+OMWg/H0gbE1fIRoxg9eSrdzoa9UPORUcnurRYD3REPM0RVwhTXalbGoDaUXTuoKPi
DB/EiOkvyqd0iA8w/igfk4/lzFI9Nyngo53yfO/51I4fH0Bcea2lHJ3Lsp1I++7M21yEE8f4i+49
KWS5bKHVkCYMnwafYoZPSFB2t0U2sPWBbxuaZSPXUxZW2PB9iUpJwuuFiazh7riQprv8xu143wJF
vSvVp/ZEcmV8EtjYyKL74NFpByIsZE9YZF+oqynYI6tJkT2L5jTP5/24aonzBakTa+6DmaXqAWhh
wIvyWjaeorq4Hp1m5xv9PkGr3g4f/d3xR4ZnV47IvGGr6wGPmzGRSJwo8pJdzhV9SGDtVAb18Q0v
npp/4DuHvM66dir8MBcsvQ8ii0KYK2Gk5N9nAt7Ijl03FjQYCU5iF8puulNz10GDEaXvB0VAKT65
HT+EUhkHXP0lq5MEji5z/1BwQBQrkwUtS24sQlWMdJ2m7UEqETF63fX1Ghlk6BFdxcH9mrquOZoq
stiZB+V65NiRMFiDHubimeU27XJZ0PBYubXmRgvt/eB2QhLaRkTiUNoq0m7RSTZLRXtqXC2tOCQP
K22hup9DFSq24Lj2NwSyWL2JLiXKYJsklVcY8QTw0UJC1WquwUBbtvNLKJJrwihQX9V0wXELlOGy
1ont+zB+axz9YN61XQjxQjWoJOUs8B0ceEe+9jAO7sL9GZ4wpc4HHb2tyD7ZmweqoPkGCeeSRzIZ
XfmazjyTvZ/7v2SSCYhTaI/uc2/hsAp9QdJQn7H9TDoDmp+9Lz2NoMpiD3nFEpGJCp4i+tMGVWoi
ybWpVhX8K/inWIsTSEFxMBfOGAQ2bHcB5yJN83BYEpuXYnBHgosj0yp/ypMZXbK35fOL9Re89E2N
Ojem37oevulf93yk5/ZmytxFqaEII0m2JyoRofS0TCPZ4aGTq1FnjRBW/FjFyjVDY4/hK57ky30b
+2HDPs7UwPavQZFNUaAGJerM/kBAtJXF8M4uN0dTyf1/ne+1zuZQwBA4RXHZkBvyrRUfIO8dHddg
x+4rrRW7J5MMSmmap+uT+vrNfsmCm9w6YBKeDyMQVPlBzKXY/lgs3s+nmMBRV3qmfIwr0nzQqhie
Yh58sET1efq8Z5ejzuZupJO4fNTCoyLsBGKIYwwf91gCsOrwjLlkq+nfrflbXkqsPtQdXZxIsSs3
iOOKxzke84Q7p9QkGzbUjJ5StoyT81IQztA8IwwFu2QmDT58+u7CrDDhE4kuy2Zw+BSBGn+pSsFl
ytEnUjuYTOWKEviZMavONhBXLeaexBUyfmNuoCKiFb8MCe2I8WsdQeHfNYajExfFcTWpqFu15fVS
B3We35o4I+FMsXHj1R+LTUUfqc5wE1Z9su69/V2TYckTLEaAdhwf0iVqq0APM9Z/qOkNwxq6Uv+Q
fHgKlpVyjGlX7nGDswpT3a4O0j49F1NiW0qg8PdDASIL6f++cvMbugSDFxLrBM/dKTZroEihiwzT
mykw0YoaXWP/QF6Nk44B78lNJlcdOha4FDj5Snyvkk7PFn57b8UM7X8jtM1dF5+kPG7PoeysjQK9
imH9cF2r6FSdmGYforP5JGDCTfGAVOZZY2PquhkveTAZIMNcJH2qTHG2/YXRW9MV357/24GIxklK
oftlfDDrzRUjGHR8qtxbL7vdmp8aqq1tU6yR5cVN56FJwYvc7gKk6puogDpR7ZYc+BBHVKs6SXvB
gQooxe13kJAboPaupBhFSg8Ujaq4ZrlzhSwXfvNz+MMo5M805d1HQsL+j0vW5bmoHh3gjBXXxIwC
a2PLdsw8V//Td3Wy4C693uxerK5JcCHpEzGFFSR8S9LYCgtl0OxelrczmFI8wp8cJVuCgl9EI1Gu
xpAbsjAIqc78qf3kj8+TgTv8f9wQy9j29+GnYp7w/7q0VAhRP1S+fHOc6u88jQej8+6bZbPWJwtO
HhllOSjKgzH2CYyfuhOBA9O5WkNa8i1U1aoLJ5K7WXTfyKakqL+77IcrFWNELXY5GdvcyG2Vfzi8
910fH2POskR7IA43/MwdzOjcyDxwyGALaXvOThBT5dzLPDE79C2a3+BM8fx63YwLZufkTkkDPneL
faG7nFuJYUpbBrFjr4k+VvEnI1vpxPrvR4GrzzN9PJLDJt6asLeG4rrOd15XhRODX/6Qizdpxoo7
jqWVtmG8b70cLdneE4EAemOT1n8WjWAQ68HilwM33soL9g4SEjoDiISM8+c5coJtwe6zJrMqXvwr
HQNTHgHfMPEULIb3MYZb0yKpo0lBtSKHW91dRggiSdZphB2/KXJcjdeM6SrJyJeOtcB6JjzgZeWZ
0Z9Fyxd9ctFxGp+wnAyUNlKF3942fvlHFAPSduYndGz+hoez49/S42QdUEvg+GtgbrFjDXhjmbu9
VvE/5zSOCzefA0Q727DRLUI8VSvvt7hMSmGTXmjf0mniV225sC7aC8WFy0Tm+mroEBgjB8GE9cvl
DcGwww9sRqV70JomaSbEHvG3kbK7tfY7hHeR0w3r3f0FBVvlAkb7GA92no9asq6nK3lTWZeS1qHN
JWj1IeNvn4p1IFYyS9H8ecCJ934R1c0o766zXswHsPuqttaBjH83J164OQpQV69psyOjrBll6CZH
Rl6a4w+XJZPLOV2K2xTBzYyO99i4BEUOJ/bWBUrbq0xyndEChLtEaFdCiB81WbXkrMeU6vRgGx8f
JYosDCdziPX0vBLgx0wwUraXNVRMft8n0jtOpYD0V34SRhV7OdRh9pephpXWFRiY8HMhRtFF55XN
e0Kkahs97PJ9fp5B8h9n1pb25O74me7a9F92mKq6jDrMTLq6lrQSi8CPyfn0yJlTCPP5PkrBnt1c
N5Vnsoo4cVSG7TOBod3IwPuDLbS/elOEay9xvzw4I2a7H5EI8wIVsVoRrxwj101UmaXgbTfEWdjV
yV8WYoDt55HqZFQAZFCutH56trr5KJ8J1KgoqDF+1mHHU0ttv/uo7Uh49SaYfTEmX5i0L3Gjxp+h
LYNNlmL8ICD0M3wXvsKBCBySCXOmIoIXMT5Mi4OPvvuZlMA5siZp+RlwgB9Y1uoKFQvgKyt6oBAa
dSiMWi/+xwgKpqtFxlQba1dJr3gpY7TlDK6LJi7jgIdSnYtzidTJWGOT50VX1k23aV4d+e2+07wn
4He1iHv9dFUkLgzLoaZ9NcObK3iML5WtsZ3luidUZmgJDVtRbNxsUkVzgIQ2UBjyoYeydfHGY+5W
3JfxNuN92BxDz96wD8q2AhKwEahsw+ZuSvRjF4gib0rWiIJyQ9VXYHjRVVGXh0r5Ecdtb86uU4l9
r8ahn6z8VGy5o6w8AUF73HHRlhEWWDdVazQuMGgS0J/GxdKbqe6T0GJ8TRshvqbDDwfHsnaSKxlI
/Q3QioFLsHIeo2XBjCmG97PmfW1DHreZ+lS7LeDlGzr9QsGqw+x8y8C/9tXASD7UzpJZRcmdhewl
q3bo3NVhbz0limposv3W3uaRGBtWZBvi5Ux90/HD7BTs6Uzv4eJit7/MTA3HDKW1Mw0SN9MMZ7ue
lPknk7bPatWE6+uZdr9RGs50dJbNn3/cy3xWY6Vh1TKnqiuyLTM9H1Mdnay/vGZ+YZq10zQ9XF/o
Oat7pqdnerBwVp/INMgJ8H5VJ35WR2fZMqeLhw7OGlObDri7sxw4qzG00TRd58rFWWPOzpv3R5A/
elbr6JATYNHihbPGdE8ZUFupmWXk5XTAbysWzxpTNVXknQ1VL5oxQW9qXvMVc2DmwMyBmQMzB2YO
zByYOTBzYObAzIGZAzMHZg7MHJg5MHNg5sDMgZkDMwdmDswcmDkwc2DmwMyBmQMzB2YOzByYOTBz
YObA/H/BTKL1VL43Hh6xswJM/bkc9ThCOHT64v8BUEsDBBQAAgAIADu6G0eZ6o09AwIAAH8JAAAs
ABwAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYtZGlmZi5wbmdVVAkAAxH931UR
/d9VdXgLAAEE9QEAAARQAAAA6wzwc+flkuJiYGDg9fRwCWJgYFZgYGCK4AAKMOyXvbuGgYHTzdPF
MaSC8e2di7mHDERYA670HZR7KyO7pLqkP++y4K/7nAH/A0NvOjYtmVYRePLpB+cnM9zvFepYW6Rs
/6zk0MDAyMTCIaBAU0ajL4fN18V3vutKs3D0cPnYZnwRfiXIIVSxe85pk3l7YtYtmHIglqPmXOrN
3R2GKX0eP08x9Wsfl+f6bxj8eoP9n3c/Z61cMIOhUb4xnIeFYw73lr7EvtK8xS0H1sW3boDboyFe
IBjkp/Wg48BhD9VSuAOaWG5ZeQR4BSkGqF+45nhnXUS6VlBfQ93Ey9OMVopnPHavTRHkzIk/cOv4
t9sBbK+5JdyvmX/jBRrXIWxQccR0ZYsW6z7t5k5XBf8DEpOuLzNaJXrBPcvWtVvA4q3Y8tuCJz2b
HBoPXNFf0yFSwDVRfUHyk60re7RY7/SErtQMm+cg75w2z3/W9I09IOcsiHqw12pBBQsTi89aJqlA
LoxAqmjcF5QRaLtvbb7hwdn1Zu+Lg19Lrz1gDVYQIfBCWJv7JbdXmaCCw4M41l8aGxkeaF7jtihL
5ea5k5faNLWW68Q7q8Z/0e9LE2tmHWBj/Wfze/n/ZfkG1u0+dInjUcYoY5QxyhhljDKGHONDPpN7
vLnga/Z/d0+AWlaern4u65wSmgBQSwMEFAACAAgAO7obR+D69yCUBQAAIBIAAC4AHABpbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0LWxheW91dC0wNi1kaWZmcy5odG1sVVQJAAMR/d9VEf3fVXV4CwAB
BPUBAAAEUAAAAK1YS2/jNhC++1dwDRSSEVv2boEeYsVA6gRogCy26OZSBDnQEm0ToUSVpOx4C//3
Dh+SKFlOtpvNIY45r48z3wzJxB9uviwf/v7zFv3x8Pl+MYi3KmP6g+AUPhRVjCxoVnChSDrN+DfK
GJ7K3WaqyIuaMHzgpZrMfotgKZ5a9UEs1UF/IviJaIY3ZMlzhWlOBPrXrOqfgkuqKM8vEV5JzkpF
5rUsw2JDQfJxVrw0qxCKgRO7jMCGpkhStiPC6hzN796wC0SzjRc8pbIA8JdoxXjyXJl79gmYCs6k
Z2NBTVZcKZ5dok81tmOf3aoEtdwz39NUbQH7J5K9YqZSP0U4TWm+uUQzLxO9ZgyvCPMs1yCYrHFG
GexxsierZ6om8iAVySZaNm9rSvpNp/VjXwy7kSoRx07gBaQ6T2mCFRd9+VV4xcgkIYw1ISs8CVQ9
yyeywLrUjXzFRUrERPECslxXesVwU6kankUXScJIAhT1IBiCpiThAlualTl41QSqnMRTR9R46vi+
4ulB016DRgnDUl4Nq60OLaFjJRZ1jFilC6B92llxtafp1ZC8FAbYxFRoiFKs8EQdCtKIhojnCaPJ
89VQ7qlKtg/8TrM3VFsqR8PFrdNDZjWeWu9vxMWJKjHriWoFb8W8Nlr/K2JK1+ueeHr5rWg3oHM2
FvwlzqWe5kWpkA2UbEnyvOIvQ7v/HCaAIibyFucbUFB8s2Hk2grC0RAZC6IraPwsYttFay4a+4XT
v4ynRtqXhPMokkMC7G8V2oEpC8gRMXteaqW38HQ81aR4ByyPCe8C5fw4zrwDUE2V83BegWGsDZVO
IVgOwW/d2IvBIE7prurv9knhuFsIsqYvwJnWKTdc3HOsJ3IURfEUfOizLhG0UIsBXaNwD6OQ7yNF
pPqrzMHbaGAnUfU9SsusuJYP4DUczQeDHRYoqQ+pK5TypMxIrqJ/SiIOX81Q4yIMOsdZUNlqrGBm
h15QsSNAl94cDIytXoNNMcBvW68OG22IulZKUOg8Egbe9oMRukBBTbqoyDfBaNw4NlnWjmvY4OqW
Ef3n74e7NAza068yPtqPwBLnJ6O1Tn8Aqz8xu0g1t34yTu3yB1A2U9bDeHR0cFCIBbPkZa6AHTOQ
rss80adgpbLkWcGIHoMDu6eLix5je1BqZvd5jtGvoxq6IKoU+bw5mOWW721O9N4fq2I/jazOaW/b
damwUHoFusxIpZYcT3dgfZeCVTswBYHt5mRvz5LKpRFEcJW63UEa7ylcgqBAYaC9BONuRlpGUiTg
EYLYRbtJK2uDah9rxFasQqZLY2weYPSBPyfuo4gejkGVinYGaw9PnYQIIom615SQdTlhLqLQxIUb
H6K5mRRNtaxDED1FhkuRmYU6NZEgGd8BnOpGFXSiNajgzkc2XBxujGsbt+G/IHABTMhyS1naUrWz
bOyprqmQyiiOPAK1tmXXW266wKHA51Gf0s0B1pmI6glnThJ/Dnfbr30MB6PIHY/zxpkbQN/pyrVF
nyMzIb7TjRlQnhN/72CxLIUAC3b4CtWrOktz6Q3CeANPT4FXaOOqKf0SNHzzm0c17x8fZed2VjW1
jnp2YlvlZt9NwP4xoiVAJ+Kp8aJv2JhzWSf2LldE7DC7u5l7LdDj3OHtdWio2/YGFXWXBSB5tRxa
JWM3hvflbNbtvVPvXp46IUatt6eJBXIsOtEa/eYBdgpWv53W0KxpX+k82KE/8xLLujs3mF/n4bw2
M68/0H9sLjTj+rIwdofxU6MPeyMvoG/sIvPtyzr0g/tjpQJ256xCa36BPo7QL84HI/lGbV0rci+P
2ljZIW40H2tPT/PTTtGaT7aD262wEgQ/NwZN3n1czZez2I5oD1OT+Lofrmw+9A2x5xDporZnCTyE
3S0W3l/2CTy1/wj6D1BLAwQUAAIACAA7uhtHEAc0Qr4ZAABXPwAAMAAcAGltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQtbGF5b3V0LTA2LWV4cGVjdGVkLnBuZ1VUCQADEf3fVRH931V1eAsAAQT1AQAA
BFAAAADtmfs/0/3/xykVKTqiXA5dXSUJXRVyyHTcVUIoc9xI5OwTbcNsi0JdlXXAKmlXSSpsOS52
qqhdWciZrW2Fkc3mvDG2fef6fi98b99fvn8AP7D3++b12vN1fz1fz+fz8XzdOOMKXLt662oVFZW1
J/845qGistxYRWWZt/pK5ZtHsNT/KP+YXj7ufTk4LCQ4Mh4arbJ37+/ng0Os9lvZHDwQHBS8L9Qm
+IJV6IGQUOv9oVZ7g35v7lG7oKLiOHjy2OGzCapCNoIcE1xtM4LwcRVcSftl91mtHR8yk7qfiqV1
WgU/X5bHvd4UnVcBp9gNNVXZd/ts8L1u/izr1G+msbZ1FgZ9FTueebj6eO9xvjnNkST0kzsemZSU
4X3iG4enkkXT/k16weCmZGrTbLC8X0+i5ynle+xRU19n7HRFRXWZ8oPe8hTep+9WZLV/nv7ntZ2q
ap3lskVvgncaX7m1pVL313+HGTs5qYzaLzxdefdAQ904+IQwbdHc65xmtRaejPeGLlv29wN3xLZF
36S2jrZ8kTm3Hl5R2RfaBr6usvDlqnXDKkumjOl6cn1ova+gUd70E1B/UEbagiUpBeu9UeGwsqZ7
y+IF9yEWpT1/+xqV143TBsbGpLXCR1PLqxxI5xXeJY54ML1X4E3LdOEnnDDwa/+doqU5b+qFTQ9a
QNjPU58UNZLZ/8iqYH29OWNUCbJ4dgBt6CsID6nP4rbRrfhTCIgFHvA9E91rVBbCKREkHDZATHRO
vj8yvyJTNbU7tJ/B8gj2TAhPKsD5WrMnauIabS33kETSkhrRiJ2v3jQCckLLWCh7HFcvYIzSh/0M
k14avJ8S5Jh6SutXm82+Kq5o+bAvsoNcJuXDsSaOo/CQq2tjBslVXT26IQxzwh7PwipjmzdR7jeJ
HaP9dl5bvQfv/kskMHW1ujG6eZU9SSRT1B9e1WAKNJjMHGtSJKOmxUQWeqyzqPeFnZzTFEaqlt/C
vep9YhdT1PuppRMecCi1/GVHgT9quipEPKTJSF3RWjOwHdl9iX6zfoaLTuhOHi8i3Wn+UFer7Wau
7fg27iEAHVo93kjP9otFHqke/bSWcQ50KH92JEPhjSfFtIZZxffPltVq6WLZcACJPMu7mFPZSaWg
WRv5vSb8BJehonlHeJCg9AMP9AtQ5yGcu4gUm13GSaKZSzikCEkeCEJJ7I4qj4xA+hoQRB23CZba
bUaSx2PvlmfkDLbG7jFSTCFIrYwTSdqRxaP0OIa5ftaW/SKj8PGXgpiaQVPe8/tii/j+X872N+Ru
nqnM34EYGq20+Oow/hAghCjGpAlxBv031LJS/92/FDVmcRDDQ+OXdiF07HPsrZFmr2Rp6/CQQuQm
AWQSM8QZcrOIqSkPydXh8iaNkGkeAngsnXp/wFGySvajtxrqad/Tmvn8yzA6CniW2TfL4B8sz4T5
Ms0EzXeh9Z5P4jynRzK0zcyvD5GGR6HI2OlWnNcuiHzMrL7DT/GcPOiCG9Y2ESLg+ODDCrDh/DHY
ee+KStlZXD856XWLLv+BR6aj9N1h7miaJRn/Ddr5CMpWtF0a/Cu6V/DZmici2ZhG4hNBNpDg5zjk
6KCHMOu1SWdz5rKGn2h/kmOMP70KSi7OtDbpv2XH7ZVMjiJCmp/lkTyr+hvZhMcJPbmMOMYhj05L
MHP9PWEVqfhb8vh9fn1/V/817wV7Hv1jz88b0Cd1Ml6qJmzrAdxTZGSu5aWh0tjB4X1gTOoEajZN
kxUS52xDyyeGjnR+BJ54ocUZedn0oq2kXOCePS7oHYTem/kiCqPfBRo6DJHkEjTOC9bNIyc98tO0
LuwcrQya8T48f7CoK9TuAGamKxVt6CpWkYuDUfKKQo4NWlweaya8/IxKhWUX+yWZ0X90btnfMYji
V3bUbB8sRJ/zufRxPELdp5osE+JMLZN/2NaCC128ARNfYVIvP8cuxEj2/Mn5oK48OeL8KGy37JwN
+se3eLgZbraPlIEEkvitWy6SXxvuCMdihQ2bt1S1HvQurd9NucE1I8wG9riRkGu3KZonAbMjElD5
D+LT6W8DYkuaQrZR4AhqH71ahzseOR+vSnXWOcmLEyzPVFQbRW8Qv19l5GPdfeGz/VPJ1jWnTwwL
Iu8XK8qKjsm6jYK+wH7m+VpdRn0qQ08TOzUGBFgY5M6Aw8Up8sPjN3MsTXCzUjn2EKKbRs6cj5jo
/aqqfe6DBELhuTyIpbs9Jfcg8nsKEK4ojcUcxZrhu174X27OhM6QawbHj9ogHP8ITNsX3w9mP9Kl
TelfrVrjMN0IZ2a/YcadHH4PmjdaY5vxFQc+vUvzl8InUua+aGbq2D1sMoWFGKa4bR0F6y0HHj71
0FOij4pozqe2/cZ6OztWToKTG6xBt6YaWS5rEIzK7THEe/Ook5VBKh8VMy5oxtyvKcFNf2Ex5DNo
CxGmlBkhyeqkiDRrqeMCCPrk9CQB599J9Kyg2kaRNjuvdihBlDWfoPnGhbQRuVRYXhftPJKTuUtm
2mE275yfiMrsxR+Axx3K43PGZMMAgn98Q2gITdYvHk50khxsCffWBjhUkljwWPoo8iTH3SenO72d
5Gr+5XaVw4gTif6HH7NBy3we6cbDTipbJj2HGsbDgABxV28kT8PtbaWo2sdAOPEaStJoi/aQfuVd
2yh+JSn1LsDLwQYgLfZQonrFzNWs9YRUqzeMtlfL4RcgqMBs4DzRSxbK/DmlCj7TCfZDzbAm6zup
VcBEFitJomrKi4Yi7c3DFCISk7In3WIuDtoEUYgc9ztPHW/iuO3Z4/0NvuSIGxHSiVV8h1xYX35i
k//5mwt4HTTVjbejkijOw4bxX/xIzqLGJ8igPO0WuTrqqIKzqm2AgT0kcShS/P33951zsdEw8UJ1
TVM4tFZ41Sapw/KrvV1bjMPBlrLpfpDEyKD7eYzIwHxLOECwgBirRDw0LoWu1eLu0dTFn1XGDstM
1OmHLSLnZteSCMZGvhEdAbvfon3w+1vO6x1UTkJvOk+fm3CJfTEoAPFlg1/W8mXjA+h8M0tqQkbK
uauGcOXBlw+wtH2HNeaz8pTyqKQjUcIWEuYy3DpWokio1ZeT0BiiVve4kD0OgxZv9tJDZb9IcR4T
T1aqtKReDyl91xBSkE3tMthhJ5vgyJx0YotMAkqmznTDuRulIEryZ5eI/7UFa6Qqum35RiawyEw7
vgG7AAYKmORIk+l2VXoVF02bhB0lJJFRPQMszt7GOgWfLMbJJx5affnmRURe6hJ/JvW8j1PICEVP
o4NshRWdWRBZRH7QpmGUxISxUv+b0m8RKUMHlH4770q9IKUrTXTn+S6vNWKEYKNBqNneix8HQZTP
A1dhQ+i4QKV37khkpafkG1fyuegywOxTDisYa1c92xOTqrDn2n7jHbeUhs7lkKIz0RwgK0ZOv6Ao
GZVr/PeSbuyYW5IDAlQZAQTAun70lPFyQB3bfxW0HQJbhxE+uoFBREKHkNTuBYCQa2gRhbqyH9qC
jovRrLTaKrcnm4kdROndsa9Hczu2G3EtiRzptbLxRq4pnF0Zuk65uSDfOzN8EISJrqVrt0U3YYSr
52HeUEaIuoGpq74y8jcYy473ZT/EEAh4cbqbiIdsE2/1//ISeFos8rp9+SQnw9C3NFlcLmyhRG+R
c+Uc6egUFCx7SsDnrygy478lZzoLwtIHOi+FGsTzE4B5A6PFW1s6CJNB0Bj6Id5QOdzSL1Z2v6yv
nQBjDqbGNR+3z4E1ZXOSH0naZQCPhdow8JnG21q/5GeUfCO6AdzpoVUk2IaQT4iNWKtHscfRY2r/
JLYD3gxkdZL7K8aeSJKfraEQPpbSqQWzApocmHdZ1sAUpEvZ+tqCvXKvCltzZxtCSDWPv2k26Xgp
7NybfIzjm1z9Vs6wjt/sM/LUR+7P/u6omkGoTE0Y5k5S7XOewSEWCpywZcv+kNyQ49Ovl9c/O26W
peMkZkumRKdOFwy5E6sUHABzrG3rHphFayEOwpnt38hYD/xlX9iAvci76HESP5LhOFNRZFeZvyz6
VlMB+0Kpy1ZIRdi0O1BTP5ompqKnGS71TSixNvvxoxWaLz7mOg6TA+o1wSPCBHB9byTyjIEwrPm1
czFow78GnT6gqvp85hjm1bbz7tP1IDHf9b1vciwmpbVQ/o3OsfiMQCUK/DCmikmIwqP2y/cbrdH7
kjSNkUgcgTDeXDMcgcb/4PLEBLRsB4/ERaLCg56xw0rNhaUB+ITv0y2z34sIqOENJKsi3fbSSIMP
9A17T/17pq9t+inbbLuNy2yhvkqz0vsihMXEr2Oee2Dd9T1HSmanIAoLosY+1HDvMz7pc8/ocJ1i
R4lgaPv++hW6Q2dr6bM1Y1Mf9T/5TEo7cS0uxrQZUTvjkKS44/aMyK/AYXakzeJaRb5hp3+5D7ym
vdBxEi/6w2P/lpohIreU96bW0V8+gJa7sdtAwHFFht2jXkv+m3mlcfqskknyq5VXWc6ki/Qd2Cij
+03OiZGyL6uMPuvJsH/9XiVzhu8oxOuNhYzuSMS89jM0LIOSDwWUyt8Jwz7utiI3FAdX/5Ma39LZ
Pk/kE5EMEQkXoGXbd13kOiY8UAxRSD8XNKSF329ixfGy/XIwyX2KnGgihRxV1W3F+3u7tsiVtZv3
raZyxd3QRLSBzsLZUmqtLB31U+FYTrSiJBabIRTkgjvJr/xoExDxKy4xrhvaGZu91oZ8qYuYhxDF
/KM7Orn+dJ/aKgxh84yyXn5iJyr5IaTa+f7le4aeB60wC67U348qzgS1z6CKzz2ZeJ7rbF8i/NOs
arD/asXngeWMyk5HSsVMyoFynRalOsnbnBBlYH59NizQBrOQF48F3lt1hyGgT+WLUJsgsz1FJNtf
hKhNni/INXjcpC6qLrJjmFW0h/htewDuKfdbf1qFYkKS46bNdlB9QvDnHiUR6DlQckWmpONSEqVY
FD05ehFKLkq/a1WTbxht8RlEHSsrq98taZ+kFLA39kHkPFpN/m/RPUmmwrYSGHH6Y1ABsZCwEFt9
5szhNGN6MVxiegZ17IUNkqoo92d+HjgKkFpvoVwG1UYU/rY2wNVx+nZBA24X757dTgZawgqP8msf
/bz1BMrPCPMay8s7B5a2EHI0LR8HhDZGjZ/XsZyTILoeTFOlh3nTzQRvE0a1di9kEfOvjfCHzxnR
k1mvLDuLbFyEMTpTfBC6tJgqZbefDzUonMTQ0kNP+ATfBsAkK2x/XIO9bunhyWcuXh7/lTPDwXRm
C3f9/eqmjeufEb5IbCxBcqy7xNUXfbg7NNfslCYaIYRK/4JzY7534Xd1GGrbhbmyxY/s8K9rz5Wt
PJz4r/DUy1h2/+CVZLzhZMJLcGl405wO2vP7NFkGlHtipvMdRt7lM76qtDyqMouu1GB6FqKqqSjN
X92SvxCs5FujvIdz48CJI+8v5oAo/FuNg/bc7sQuVphr9LMkfaH6n6R87e1l8wpJpLYzXMXnLOCl
dXO1zXTyp1szjMHC4fbbMbx90pb+gxWMNovq2X4bAXzciGnEoZBQCvq9XBN3irtPIg9dNCz5OiaC
o8tubXJi8pB+6uEgEzPeAzvHM0DSMuxC7CavPt2i0oJvuRwZPr6W6XCtu9xyiHakvUymx5IdY0au
CWC2P/FVGRTY4w1XTAeyv7m6PLrFUIWelwbxppsUMXCpXyzqS2CGsyXSdfqjZdVuv6hmPB4aZGCp
R756ccFlTgXeW3mn6bKRh71BBGUSxZJJkPy2EHRsJuxGNwx38+lcju4MyISRhBZFuXJS5vJ00b6T
T5p2jw/EQmrpknote3//RkeEZD1XYjswxDRyssCzVtxZf7f4t3/bFxtTTuo5MXcEWYpEPch6U8Kw
q2IwDQMbGHfB/qDDwuGeVBjk7l1XywjgYWY4pOAXH7ocWlF03IUa0n6OtbmM2ulzW8eJeVsTwYDe
1/7bfue/wWrv3LxJWM6h0TobrDLoZyPFtk8V2w/hHRvB6UbDPyo7aTlXtR3j6lRaRFeb+68W0+SV
UFpsZyljX7JwtDWC3zZZYwQTVsYaTWbIZcNGXJoQ7y4pTVko0dVPl81c+XZuIOCxFz1L1EIiDcWB
16rQXuHaPkFnW/fJ68QEQnlcdzQxnmRfrB1NDWseY28uTRKwdiSaCFpyFfuQ0uX5yw4UccYK/8/E
KvuIrlLUm8dzwSpd39piRmhDVHgyiY4WAs+/mHnNED8gJJFunwQMSJef+pJHgoRLVio3mxaz1RF0
4ad84/j0UTYrQjKrF+0DbUfM2JRYMy06Nhovgq50rwI4RuSYYxuvtVuAn8kYe6aLLJeP0o4EEOFE
VDfa9mVktYRjkg07yXnqTOJ7kuyTNE0p1cZHJQ/WNCEKzzXk2kS22ZCmJophuokLnaIEnQfHVPsY
k/HS6Or+Rw01tltik3s/h0zzdNsBclY2tuOkdA2rbxC9WwiYMr92q+KXxL73bNMgJLKwreF+bGZt
6gqby3ts2BNZdxNqoH7R7RbvWTk/sAdEJZIFIUpWP/1MZeyVaH84CBcR76Tj5sg1mS7nG6wILwya
zLy8BlUtIKAj4Ke6skw1+enW61Fx5pq64BbKD6W8C22zofZm6kpi9ZE4d1r3yvk4RTNLObnBiQpq
JuyaU07KXMKe6+zszJ0twyPOG3RLshMuIW+bQAnEVlfdtqSpliPuseGF111e3OjAZvuUx5gKd4O2
s9+UPqxoCs+NRvkXWSuC6VX1C52vzBU7T6qEY+vMCxpkCSPvs53tZa+J5FLH00JCuaGvwvozZc+l
tgLEVojF28DCuPZzTS+bYkt6b3kDxMdzb3rUb8fcaiB8lEnQFQiKtfYLg+yt4bZ9d7ZLQTSyI96h
xaJj/fz2bk8pnXYej13dIrJGHVZu4jlGM9DIO8dPdLeMbggRKG6AAScAPpp2BeSRtIGsbC/fgz2R
hpfqtskEgN97xKU+3TPdOhb+4WvAopf7gj9Vs9duA0y+gt+eSvKLSQxRZNczQxK4+3scvebLpVuW
KSfXOTl2IX+da6a14Csmii/K3hZXh+YOUU4aMMYaBzDi9wSITYwyYzyGPJGQhzFve18VUqtmRXBh
1hszwdSn6zMXCMnfU+xrsFO9Rp16owUn7E/93tOYj4/CsmWBh3ou/YdI9+PERc011NayEB3FiQXs
4lI4VkpsF7rpV2EWaQi3wNRVd2Lb3fpSWyzg9iMQcSGAwk4km9tPGH4aEoyTQEmN8RYGo5tZyL2O
8lGJOHbGCZmcUCfbB3KcCmzqB9GYYXXYcODdJAZ5PREgrUfw+7cri1JhBEjByYtr39mPQ0nBtdTo
kkrRrgGcoklm85+ojU0A6yijRRq78J2alrFwF3CmKVEWL+ECvqbd8ZLI8zmvS8FJQL+5as4dMvW2
V2sXhdEsfybaf7FNFmf97awXRFZfFvi+YqwcJ6u9bjl6HxfFplFXkMoFb+PrZPw992rkNtBkUqZb
h+0O++wMI3BRx/BrrCO1UqD4NiAPvGH/vtNF5kxyejcnnp7IhozarfQ7L3kZ9KMmxhPmtwuRorHV
CV+sCMIFAB5DsEayn93svvEUt4jvmJ9UKqHzHGhtsSsq6j6JIAIHP2+9vRJMbqDovY1MgnCfQie/
2emsjXJNigKwjof8+AC6jNVw7L0Fgm6cBCaVRhKQSbbjX6y3kA1Uw0GSiKfn0+yYpmcxhGD2VuvQ
DvoraNQZugWUXNhImo6ROUhrZghDVaxq3sOm2fDqvntCQdXHfwpb14NBuH9aE1Fvf9yG1pYLwrA/
owsJPgsdtj/fZUkzgoZbgL1yg0pFFlHxCOKh6KK8nAmukb13QIjTeFWsji0Toka7yKaYX5WWx0Fp
Yq7cXBCG3ksEPJMQekv7yzwjMLn8qQADmw7cwMAkVPQS41kvZkE8UFO16GIBEKIFmJXxvh5VlKMz
xOXD/nQv6BCYHvxQczRDKoO87sVAK6TpW/VQvsuPIMDoFn2bPcJNpU/B7E9yS2H/7VUGBwqHqgd8
QsYbCHigiwgcFw8iFoUpw4ov28WIxYNaUiZseX5cZmXu1fK+RqFohDSMgiXyzGht7Gwq/HLExxoG
rX1Ubuf7tnShCv8tRUMZu0OiEMAt/U04n7mmZPLIVSNzpY8Fdw1YKZNKgewujYuKZ1SEa6ZHxTaB
DMtElsiaGFk6ayWy1ZwYdUbLfqh2ru9rWIGqMBFixrSRP4+GjD7OrrpIetizLR/J8CimvRWV976R
KVMuZOqDoCZxn+RbOfONEFN1Pm2z/KyXn/BJWc+f2u2txS9y/lEWI+8mRH7Mqn4WmVWngEl99IV8
L1YMIlHSJR40N08gl2ZK2kvdY7MXytGNroFHVt6hi015asrf+9cmw11Vtvx0FGOEZ0tgv18BtTW7
Cn0LF91BHNMJs/F+s+6PDWGFZyrzt7XyH5wD2jeU3C7sKI02EK4G1WLOtGcviAKN3XtTMq+c/ur2
N2vhDmZvipqhIEqgcexHyaJrljvmxlcuaArcFu5mnNTVjQ8/XfgPJ2M/J5XPOh24RRcr69Y5pR45
vGhM1RWVe+bFgEWXQErNr5aWumhMlKrqb37e6EXXOUecVDRWr1g0pluphKveyBdd8Vy7orJh0+pF
Y8pWqN2JCpJpLCxBXTnvrk2LxlzQVDfu/iDduLCEdcp5z+xadNf0t846p7K0SZNFi1RTu/PXmSUw
S2CWwCyBWQKzBGYJzBKYJTBLYJbALIFZArMEZgnMEpglMEtglsAsgVkCswRmCcwSmCUwS2CWwCyB
WQKzBGYJzBKYJTBLYP6/YEYUqh5xbjHBu1brqCh/Th53PYY/Epj6X1BLAwQUAAIACAA7uhtHfNPZ
gyIBAADtAQAAMAAcAGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtbGF5b3V0LTA2LWV4cGVjdGVk
LnN2Z1VUCQADEf3fVRH931V1eAsAAQT1AQAABFAAAACVkM1uwyAQhO9+ii29tAeMm6pSVBlLqSr1
WvUNCGxsFAwWbOI4T1/spFJyLAf+NPPNQP3AeQHz2PgJdBimaNuOwCYwaKxWhAYoAHUI34etsxo+
Q6+sLy+ujmh4F0JHVGSPqEPfB5/KEFsxLHKzqMUZYxAvZSUKzpuiTscWTr3zSbIrYRzHcnxdjKuq
qkRWsCZn1GTJYfODO4zoNc5ldId6DzvrHChvIFEMe4Qu7531bS0ulmJ25wtU8SsqY9HnZxnJKCqf
BpVptCRkVaIwwDzxMChtaZKsYmKJF/eESyU8EZwke6sYZOk6L7vgiSd7xusxd5Ns6w7IrvUkO0T3
9HgT/syaDXzktpn2L6wP/gY7oXNh/Dvz0RrqJFvdwev5O5viF1BLAwQUAAIACAA7uhtHvLeCqaoB
AADkJgAALQAcAGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDItYWN0dWFsLnBuZ1VU
CQADEv3fVRL931V1eAsAAQT1AQAABFAAAADrDPBz5+WS4mJgYOD19HAJYmBgVmBgYIrgYAOKzCpr
KgBSmiWuESXJGanJ2cWluQzmJsmmiSamlmZmaYZGiUlm5iaGFsmGZsaWSWmJRomWpkZ2Pp0MDGpl
ni6OIRWMb286dh12EGBxPP3if7yc9H6H5UdYNz5vlXKq9ayZ+/7+aXlGJhYOAQWHBgYgg6mxfENi
EwOSkD0j4yMBuDyHwAkWFg+33A4kJYyP2EblR+VH5UflR+VHnnyj9MF6zpjrX+P5P0mBxGYIWDz3
2XNZmVNA4YG4gDlMH1Cpg5qCg1GWM6K24eAYlR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5Uf
lR+VH5UflR+VH5UflR+VH5Uf5PIF6d5tcpxziuX+zq9Xgsts0HggPuHo+mdnETrdWFlOvGj/nIOY
Z+9mYkr5uLrSGDGvEsjIaPTroc1suPkHFjUwRP7JuucDtzIhxKGhp87ivBqSXQoOYvtnmQvDJ2wk
RAUUFsuf28wJd7UOF8eoc0adM+qcUeeMOmfUOVR1TiP/r0C+tS8XHK1kAAJPVz+XdU4JTQBQSwME
FAACAAgAO7obR2sfhERRVQAANV4AACsAHABpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0LXNjYWxl
LTAyLWRpZmYucG5nVVQJAAMS/d9VEv3fVXV4CwABBPUBAAAEUAAAAO289VfV68L1DdLd3Q3S3d3d
3Q1KSDdId3dItyilgHR3h4J0d3eudy3ce59znvu843n+gPunNdShMhbzmt/PnPNaRKooSSPB48OD
gYEhycpIqIGBQZCCgb3RgQX+BlgH0XIVGJgImKyEqIYn+LHfe+8tHmQL5QCfMsG7FUcrWTlYCbD8
FPcFOW2spyIJ8ECY4DXxzIqTgJf9Dqt8PBvorMD/ffnfl//xsiaI+LQbWQM4pQ96euSluSVqdWm9
VFl83g2Aake3uuw+y4tQU7j57DkHeFxVfwwQlt42tr0O8E83Av5ag4G5+Ou1Br6NrOVgf18H4Luz
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
AAIACAA7uhtH5vkZHQgBAAChAQAALwAcAGltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2NhbGUt
MDItZXhwZWN0ZWQuc3ZnVVQJAAMS/d9VEv3fVXV4CwABBPUBAAAEUAAAAHVQwU7EIBC99ytGvOih
pV3di4EmJiYeNTH7AQhTSkKhAXZp/XrbbvfgQQ7wZnjz5s2wu7IsYD2vbgbpxzkY3ScwERQqI0VC
BclD6hE+z9/WSHjzgzCuulb1KY0vlMqAIpkLSj8M3sXKB03Hja42Nv3B4GlT1bQoy7Zg8aJhGqyL
nOwKOecqP22Fh7qu6cIg7dKDWeNQhPcglEG3GFOcaAJ6j0/OpEXkHDF8jULihztFJDA1nDR1TWC+
genAyXHL7KDdBmAx+RHWq5Te+sBJQEXof58zWuszAd91EdMifaUy+tfllgsoE0w3H/ubjUo9J88r
7nFd9R50xtpljmAf7vXjqsrWFbTFL1BLAwQKAAAAAAAuuhtHAAAAAAAAAAAAAAAACgAcAGluc3Bl
Y3Rvci9VVAkAA/j831VL/d9VdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAC66G0cAAAAAAAAAAAAA
AAAOABwAaW5zcGVjdG9yL2Nzcy9VVAkAA/j831VL/d9VdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAI
AC66G0fM6dSaTwAAAJoAAAAtABwAaW5zcGVjdG9yL2Nzcy9tb2RpZnktcnVsZS1zZWxlY3Rvci1z
dGRlcnIudHh0VVQJAAP4/N9V+PzfVXV4CwABBPUBAAAEUAAAAOMKTs1JTS7JL1JISk3LL0pVyC0t
SSzJzM+zUtBLy8/ngksnppWkFiHJFhck5oFVcOE2Aa4GpylJ+SmVCnYQq5LzcwtyUktSQ1KLSzQ0
uQBQSwMECgAAAAAAUrobRwAAAAAAAAAAAAAAAAYAHABtZWRpYS9VVAkAAzz931VL/d9VdXgLAAEE
9QEAAARQAAAAUEsDBAoAAAAAAFO6G0cAAAAAAAAAAAAAAAAMABwAbWVkaWEvdHJhY2svVVQJAAM9
/d9VS/3fVXV4CwABBPUBAAAEUAAAAFBLAwQUAAIACABSuhtHaZTRjfAAAAB3AQAAKgAcAG1lZGlh
L3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtYWN0dWFsLnR4dFVUCQADPP3fVTz931V1eAsAAQT1
AQAABFAAAAB9kEFLw0AQhe/7K94tScFgr0IP0qYgShWJIoiH6WaaXbrdDdmJNf/eTbyUHjwNvPfx
5s1s7x+e7lDbEzcIg+BMVqxvcQg9fBB7GDfBMyRgz9DkHDdK1RwFYkgQZXSzmxzogSNsBHWdsylP
h75nLW4sVfVe7epck+8cjWL6MLSmUGqxwNqwPsL6tJZcmjd78g2kp6RGIeGoXt92ufWTXk/yEit8
24ZDKfwjsxQ/b78KVX28VOu62iC/tkvHvhWD1QrZMivw/HgBX0aXjnw7UMszyv5f9mhT04nT1IkN
Pv7R13XLU2hSHrJowjn9NkuH/wJQSwMEFAACAAgAUrobRw1/+IScAQAA/gIAACgAHABtZWRpYS90
cmFjay90cmFjay1pbi1iYW5kLXN0eWxlLWRpZmYudHh0VVQJAAM8/d9VPf3fVXV4CwABBPUBAAAE
UAAAALVRXWvbMBR996+4b7Fry166FbZBIVvswuhIR+O1e5WtW1tEkYx1tTb/vtdOFujD2NNASAid
e74khIDiwZmwR1+UkmRRPW6LR2xuNZ2Or0EbVdyjQemxMPLgAglCT2JEHwz5Yo9Ky4JG2e6Ou9BW
NNIq4elgUODLgC2hyumFojRN/7+ibClIM+utViCW2XtIl9kHWK2i9ObLt++fodbMAUwMz1KTth08
uRGsI/10KJ1FIAcNQiuNQRVBBDXrA/WSYJaY3vkN2oAetAc5DEYzY+vGkcOaQx5B9VBt6riVduAM
1I8udH0yG/qYLS8h/XR0BNWvH9W6rkqItZ1C1FOiZW6k7YLsEK6vYYF2kcDd7V/BO23VDGzlQNpZ
f4Lf/9y8Be6dYkZY+N49c+xFEomTz571kK/TyG+t0OWT7zg5IzziDlXCbYiLi2MhbeC4djq5K2fc
6Bl8dtghrd1+CPz326m0mGGl9hNtZXDPg0k+T83Ox66JL6+uMvizJccM/yDccKAkbzhcxw1btX5D
+C6DaZ2pNiXc3UBdbetIRK9QSwMEFAACAAgAUrobRwz65Oo2AQAAMwIAACwAHABtZWRpYS90cmFj
ay90cmFjay1pbi1iYW5kLXN0eWxlLWV4cGVjdGVkLnR4dFVUCQADPP3fVTz931V1eAsAAQT1AQAA
BFAAAAB9UUFqwzAQvOsVe7MVUpMUcszJcS8FpzRuKZQeZGuRRBTJWOu2+X0lB0MaSkFIMDs7mp1l
DQYC0oIg0NkikAdhLXQjBjABRN9bgxI6PwzYkT0XrHqt6ibvhOutOJMe/Kg0Z2yxgFJjdwTjDBlh
43vXCieBBhHRQIIwsOeXOjcu4U2C17CFTyPRF4TfNEHhffXBWfX2VJVNtYP8tlxYdIo0bLeQrTMO
+8cr8rV0YYVTo1A4UdH9yz2a6DTxOtGT8S5c2Ld2i5OXUQ+yoP2XcSrjcxw6foZ8arg4TunkfK4H
xCPKS0xT5N0YA3XpxRiu9UO4sqaQSn/qR0J5SFvJI2tnQpKsLJ5iHy+mpsnyoNr8frNZwnzx21H/
0qvjJLxo41QqrtDJ8pfeagnpzEr1DvYP0FSHhrEfUEsDBBQAAgAIAFO6G0cGcNfl0ggAANciAAAw
ABwAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1wcmV0dHktZGlmZi5odG1sVVQJAAM9
/d9VPf3fVXV4CwABBPUBAAAEUAAAANVaa3PjthX97l+BsaexvWNSkiU5krx2J2vJ005SJxO7Sb91
QBIUsQYJhgBtadv+914QAEVSpKxt5M5kd20+8Dr3ee7l7MdIxuz26GNEcACXmEiM/Ahngsib01yG
zuQUXgu5ZuT2aMZo8nyBZi9UUEkC9K8jBH8kWUknID7PsKQ8maGEJ+S6GPJ4FpDM8biUPJ6hQbpC
AdyT4ProP0d6O7OJzxnPZuikP5wWY+49ZWROw9CMe9h/XmY8TwLHTg0n6m/1IH2C4IwG6CQIAj0W
8kQ6IY4pW89QzBMuUuwbgDHOlhQgD0iM+vpVykG4Qo6MMJDohRSAokED6XA4bNlf4EQ4gmQ0rAwK
+oUUZ1QPdRgJ5Qz13bF9H1CRMgyb0AQ0YxC+0kBGsLjf/5PBh4OAJstypcZmTKPu6tYxcGkSAShZ
To/4C8kaEo3H4+suZROi1eAqm/wAZwmzOGQcgxgZXUaybjk16w7ExyCLPYqD6qkEEfsNkSX2GHF8
wlhNSqfYt6al1wikcwobKld7zXC6QfZIfGW7TqcpFtddpukuxmet3sGh+ulKn7BYpWBe2B9EIxfI
VZemhJ3wBA2It1a/UQH1E+P+8084ky6IOgtpJqTjR5QFnYpVxz3C+otdm2UkBtNevHGeOcOqXzuc
46kpNbcbW68Db5HUx8zBjC4hNiRvESsjytP/gpOAEasOs49SoXqOiDboxp/9PBPKNAp2MwKxB9bJ
rcXgzNJxdPAU8HahqPn5tjssM7K+bjimO37LXlrFyJX8TTW7YcbjhrJNflRnKK0/5LFHMvAmUvUu
/dYC306jxmun01oCtOHSlgZtJI9Go9Z0U7V+mWPURmMdAjoMyoRv/MC4Z5uLaLg1dxqahFURvBCx
NeFokuhUy44klWYqOhVMo0CbTYzXWEFqsQqLHB2txRDos3gEOTKCnx31QgOiMV6SmmVm6LJUuMew
0qKa6ENqAAwAxdyhptwbq0xG087cG5JwkwCUW8GOJT1WorllaRAG9aVgbNE9fUqm17s4vdzJZJkq
DhMV3XQdBFsboICw7hVk+iaa3gf0mKcpzyQwbWY8GZQaxySRAn3owXk4lxHX+tZsrIoZ8HoJfupb
SxULijkd/F/OUWAwuEQx2aazK+vYKt1gxu4sgtbZl5rLYrxyGvQeQ11gXl32S95pHg1633lOGdll
SNeOacPp8pRo2nReifdMpSMzFXZaExo4ci/FdUWMkRH6REgsc/Ep94DDSz50VfS0wlFLJOfMw1l9
3B4dMlJE6GYg5l/Kt2VyGuo4NnWUurXVgrrvLgm7MsfOUm7jFiFdEb2Pycf9ukguLmoQHWbbLP5K
IRdkDVcr9/zi0CQgK0hSO0TbEGEFQptcJhnV6G1isliiYJqAbaUmOM/jqzeBXm2ADrQTWxLSTwVY
c18ymHksAZeVWe1oGmY41ggbcVIvIyoxcteRabd1s4Zak78aricMCkeomfcgpqvp/ca9DCd3DBaK
qI+VZWSwXR7Xi2Ozh1bftg93lgSBzbP6mO9sUrCtTr86+mQ5stGTXH1rE9o2zB1BUul2RIx1LV/N
uQnP4PV1R5Yx8qsSTLQdruWwcd1vm8KwR9gMhxBhF1vL9ftik4KQExD1GP0bHV8flURcoe/maoah
QuehI9cpad3quBORmdhocSPCigRZFqNYFaMdHHUSEyFs4dGp5zazVKLjsUjU+1AhUAwURC+U5+Ku
fAPF7BeS3FXIso3nbcnRpJgquahcDl5beILN7ebZeKJJIkPLgXuhMa4BNQ6RKiZqdGHKvo6ir8qz
Xg5RlVTzjuX3gL7MQu4bHfJcqnxRDT+P5QWTmCHwlxCwAIMNrCBVsix2gRrmKSL6pJ5h2iXgVzJI
jiSMeXq2cTWBXihWOVn+zfgEgPUy/goGh0ogwrDWFEVUuqoIKuUYjU0VX5Yi5tlmB1XIqp9+nUTt
J51mjR/TALosLZgykLDNdwujQB3GBX4B3YMGSINXqp3eFtU5A3eoS6bNxw/L/i02OJnP55WQPpnc
z+/H9635CYrLdi9eLBZtqGckTiFD1YxvyrTGTBduAWkt8hfTSX9i8pbPCM7+WZQHthVQb4q2KVJT
PvbMV7ePws9oCjbN/JvjSMpUzHo9/Bmv3CXnS1iUUqFct3jXY9QTvc+/5SRb9wbuyL00Dy6Ulu5n
cXwL+xb73aL6zj4PiKNsSF5h3p/B0sqYN6NJZQmAMh8KPR6s4QLxALixEDenthNQ3wujwW3vF7An
5KzeHEvcW/z62PuVeN9TaS6fcsqC3s/Au1iQHngKqNORBDIstO85k6IXk4DiHvCD/6x/Q8HheMBZ
Oms5UL7kmLlyJQHUoI6l8inodHukaNG73qvWHYGXNcZV04Lq33vMJMgkiZ1VdPubEuL09pvEE+k1
6A8m3damQmRXJw5a5wA7n97ef/fXH2boiYJClNOhVwwxA56lGp6ESxqu5xBjKlV4kCLAq0lgNgNz
gQj2UhWn4n2nt2bYzP1qZYkIGo+39fWmrgZ7qOmyW01NmX8fmMs9wAy7wTyBJ5tMrJxVGQcMg/yc
CEQFwmnKKJgTOtoM3JSt3cOiH+6BftSNfvHL4uHpzMeJSuEygsy4jM5/j0+Zi5cdNkwP5XmTPdQ1
3aGuf/y0uHtazNEZTVSCelLZauAynCxzxc43N+ibEyj6SFJcztGP3x/W3NN9Ekz/qwV4hg6vBO/j
tOhq30mEDngNGXZkyZ///lBHHwOfIQNeRBza7qXG/n9Njvo719tkspm3W037JMkdpFMN7wj8k5x/
lRn3hnl5AJjKoi80INxVaejs/J2gDg+mUUHIMwnO/5jkO9on/r6Cfv9QUTU+gA98gDZOsb6fA6cn
6kp04S/ex2+vDuG3ZeKHhhM66RQ6sOBRVSxnAH+ue7gFI6orPncLaUpCyJbe2eV4fIHsr/P/jRr2
Fvjbdxf4ASjj3N10g3dbAvcvkPr33qJODiHqwxz9eI+eFo9P7wNyegCQBygq7aXoSKEVLP4/y38B
UEsDBBQAAgAIADG6G0cNi3IiYQIAAJUQAAArABwAcHl3ZWJzb2NrZXQud3MubG9nLTI3QXVnMjAx
NS0yMzE2MTEtZXJyLnR4dFVUCQAD/vzfVav831V1eAsAAQT1AQAABFAAAADtll1vmzAUhu/zK452
00SjmI8EGu72kW7Tpm5KqvYiqiwDh8aKwcx2mmW/fg5JV6pmu1nbbRLiAoFtvY+PD4+YB54/OvZO
joMYgjDx48Q/cWIvvIL55avp2Yezd1dAacl4Ral7ielMZks0U/y6Qm3esyoXqBLwXe+PLl5HLlM1
g2PIZI4w9IYOlKg1u0Y45QKhkgYKuary3vwh8dgZDgNLPJlOP08P8c5Q3Ww5J98yrA2XFfAKaiUz
G8Gra1C7/UChZJlA/8gP4obLP3IgCof+aNA7VyzDlGVL6JfSTlWYYWUgY0KAYNoMkh7sUF+Q2UYb
LMknniqmNuRUsRLXUi01+bIxC1m5xe0bcoFKWx5NAjcmgqekbmZsn9robr154YDgFcJoHDotfLpn
p2ahkOUWAkCjKNyCV1wvbof7+7sDmeAWnLI8V3b54Jmow3DYUN+nuqO931FvbEX1r5CdZkUL/EKK
lW0W8pYZRiaXM2LP/SM35FxKocksU7w2mqwxXXJTb4hZcJXXTJkNKWVO640d0Q010cbmMyErbKFH
UdCgU2rZDaU/oR34DeF2/89V3GjkHybcN0H/uUBi32ud8h3GurDhbiakxsdn2Z1diyKIxw1Fk9eq
hVg9RSkexIfe7gNt8u7i6Xaiq3HbYKJ/w3E9XytukMqi0GiS9sPLdFUUqKjm3/Fq0EOlpLXXfKJU
JSG0qnut5BKtA3iNvQNGDDwnGsd/2+Fhy+FSpTzPsToMG3veY+o7SfbiHkYO2I70On13+u703en7
f9H3yAlOvKf7oY1GcWfEzoidETsj/pNG/AFQSwMEFAACAAgAMbobR2Yvv40HAQAAjwIAACsAHABw
eXdlYnNvY2tldC53cy5sb2ctMjdBdWcyMDE1LTIzMTYxMS1vdXQudHh0VVQJAAP+/N9Vq/zfVXV4
CwABBPUBAAAEUAAAALWQy26CQBSG95PwDuwbyyVSpiQsUEqRiEKBaNjhOMAgMsCMxfI+fc9el21i
Y3p2f/5z8n05bhwHknKriIqsiNFAOCpJU4hBTzlFtGYCSNqiz/bYEAe8YxQdMBfAnDYNRpzQxhC/
ewFEGE02eBd97kwshHDLDTFTndlQ59JSavC096BiwZbKp97yQ1MAr4YABADc/7ZAjrpf1ueikoIj
8fyVs+qobxdhe0zM326278NLwggbetoUH/EK2Z8Zd4+QkViLq0Ww0O3nvFLHjTTdnofYMi+CXfuY
GZXnNjx5XbVOE1cbu4cXOLpQfjpcKPAnmubrJzXmg+3e6GFI7jOcp5lfppwVX7Q3UEsDBBQAAgAI
AFm6G0fkfEWjniYAANukAAAMABwAcmVzdWx0cy5odG1sVVQJAANK/d9VSv3fVXV4CwABBPUBAAAE
UAAAAM19a3cbyY3od/2KNp2kyYgPyTOTnYgSfRyNHWvXr2PJm+RqtDpNsij2qMnmdjf1yET/fQHU
+9FN0uOcc2eztlldhUKhUAAKhUIdP/vp4+nFPz69jubVIhvtHZfVY8ZGe+N8+hj9uhfBf4ukuEmX
R9HBkH7O8mXVmyWLNHs8it6y7I5V6STpRmWyLHslK9KZUa9M/8mOosPDVTXce9rjUEfRHy3IvYzN
qqPo+9XD0Cyt8pUohIbzQ9HEhPo9QnVbHPZ/YAtqs7J7GedVlS9gGP3vRIWqOFrmVbtfsHKdVWWv
yO87UTUVze7nacV65SqZQF/L/L5IVk2tjmZpUVa9fNarHlcsDKNYJBmHMSUYdpuOaFSxh6pXFUDO
GbQ4irL8nhWTpGSiqai2SqbTdHkDI149KDpV8yO2WFWPXcSI/uXWPhD1RHnvno1v06q3hpmD2cvY
pEJMl4xTtrfI/xn6BiD6E5gKBrOBfyfpkhWS3kDsOUtv5pXsrQ+DlSSZ5FleHEU3RfLo8UkJ9MlY
wdsY9BVNx8nk9qbI18tpT0Ah+vrV01mRLFg3sgsXN3JW0inQKfrx4ECynET3T7zIgXc5Taqkxx5W
yXLKpietWZKVrHUloE3TcpUljwZlnld5no0TSY9VXqZVmsMKmqUPbMp7JF59IfsvePfqN7FAkqU3
0Ii+cZxmWZ5UMIs9wIRl7syqBeTTqbgZJ+0XP/zQjfQfB/0/d0T9vJiygjNSmWfpNCpTWNaF+bVX
JNN0XeoV2ef06I3XsKyWm2bIIDsIA4fqh2rcPiaaTxSd02UG3NYbZ/nkdmhLqOg7aHggJZUmfMEy
INydQGSyLkrEbcpmCcyx4OZ1UQA321xa4HSZX8Oj5hRy21hVezilHkMkYxjlWhKIeKIn5BMWcMF4
KNc2SU9gguSmlvWoDlW5YdNwXU4+jmIJXa7YtFesl0vkK5YU2WNvwcoyuWHW6I6ItHxOnk8PTF1w
L6ZxnGfTjVOluPU7e6F5UqQBRhOXSFb4vha8IxzML0pCyB7EMGEtoI7L5JIEqvGFnq9wHsst5JOs
CsRdrp1e1DgC2kyuDEW3F1LacwgPvXKeTPN7/kH+//Mff/xxaMl30ieC63LQRylohv6L0hc3yHPD
RjYVwqpB3NQNO0vGSmyp+RUTi3M1T6dTtjRJtMpTUDJFj93B6itNzSQGoVSMCVsQSxgW30lEa7jV
VUB1o5JCEXtbgSTPev/M84XHuPXi/sBc1QeWUPzzn35v8+/hgTfzukjRTs4u8IH7BRW3Kq4nY/0w
A7L/xcE2gtpkSpDF0Q9QhxTQASgd/r/+f/zQaSCkthCNAfZmGXuAHg3DxCv10RpniaslFOPmME5Q
qYAmZ7zN7BxGt1+CbAApmi5Aajbwg62Fwr1LJXlw8HtbSX6vTZOa7kaGAGtUMSE+5MBAxwH9iNsk
5XEBL2BxUEdFUnJ1+VyoGFBrZbXdEpD29/eO0aN+i6H/IEeOdqQo+16batsaN5LD6jAdRfMX7gYH
/u97NCD8hqVnRiNbD0P7Izlh/yG1uJzoHizLclLkGe0Bjgdip8V3XFEKhuV6CTYDWNnQKRW2RqoW
VJsU6aoa7aWzqH2fLmF59RGzz6C6WdERclz+7k/Xi9Wr8gIEexvosHcH1ujNdVklyAiz9XKC0xPd
ZPk4yc6xtN3Z4yNE8M9EVbkjwf9EUXRilJGlBDwxv0ASHUWXV13rG1Dw9vFTUpY13+dJ+baqVuIr
mdVehTNkzDdJmq1BX9dVwnE21lmkZQnz9pkb9T4mhfzw65P9oZzn62x6kd/cZIxQgTpVsXbAz6Bv
AF8zTGKgv6XV/LyC1VUEKqQLlq+rmuaaKyxSqjpPe/rPglXrYqmnGvhYzfarn366/vz6/Mu7i/N2
ulytKznlFhvIjQ9MNFUSvCqYT7JhVBYT2Aits+xa1O//UuZLYlin6khjALoprV4/wK6xhJ9tpIvE
ARkUmJo9QL9YDvq8rM6w4OOsHfdjsVUR47ukKuV6XFYorVCzUONON3K+cJj70WHnyqYGfl+FcRGd
hLC9PHDALJJqMmflOe2O86K9zKdgW5bip7mo8EtfVO/sacajvsyPbdUaFq7Vmovk93aXYVjBqvWQ
QZtuBdavZ8I0CbNKcMP0cXbxuGI1VAG9CoKPPsKsE3ze6gP805Q9iOYGQnec5axQHvqrY7nmIlgj
W7AFSGmCKZFz0OnzKqeA8pTXsyHM8uJ1MpnTp3dpWXVBLC2nGVODfVWAgdRfFXmVo7OnLxr0QZdn
gVYufrjGzmjn0oalJ4EOBtGbs7+/f30UrUsWJetpmkdVclMiOtGrLz+dfeTC56VaY2AcSklzJpYb
wOuncqW909/lmsNmS+h4qFjGA/LsJOodmjOGbVAuF8nE7QGMiIlgz35e3MQd3npotV0VDEwHaCqB
vIzchoN+vz+Io6MojnVbxBNaieb71LMWBh7e+5E54EHcz9jyppqLgT9FDBSJMyqUSz+ByjOpZ8mq
HnReVY+SeppmVjsimMWzmwGbIMVA3fGZIFDoSe5XEwnc8YE3bXsd9FdLnA6OG1Kcb5WJxmBaxobQ
kGBg6uiTHgpAjfah9CU6L5PqpHqoYkt2x8fT9C6aQM/libsFHxnfaEM3imEYNFaYquMBfB0dY5Hs
H0q5Kor5ZGMBKiGnzog3je1VVaFWB7qRXm9znnF0wLbItvj2k6xoNEZaosdjNMl5lWQJX0GJU28R
uRR5l4S8op9iXRoHNG/Anb0mwyChLXYbRCHsnC2Nyl1Q79LlLUy4+K6Xsf7aJxTVjPqeK2OCbZga
xP+uWfGoxHPcDwExOMhoid9OuTMZmS/e93qzx6laCvbGVaoawKYgS1Ylq29iknFTbUHLOmQR16FB
bRDh2sr8nN+jKDL1oIbTBXmGvrq44xHO8DzLFc8J5kLXVFqvgJ9wEOSh5pacX7/LLWOHBKG2BVZO
S1moFgXsOUpWvapA3MC8snZsecZjqw3HnEMnnr8Qy+0CrN2i7WCRrFaw93x78f6d0Ox4HOWZT+my
ZEX1avpLMgGiYm1Ng5oK7XjMQBSx10vEj6AGuEY0hlWNbVCAYU0bxWZWNFZdsWniC1O18noX5Nw9
IRJrq2Mr3qKm23CRBrZELYHs+/P6xcHhd4KHa7mc129kRUNLbsuMuI0yNBqXuKa5pq0Pds8HPM0n
a5Rh/UnBsA8u0doGRXlVQ57BIE1SDE2gpyzLmqBODahYtw/i4hyGJebJIvkrMOOohbAhhlrn8v6R
rmVtS+mNhgVya3IH2j+mmkIItIql77KI2rR3gvKDIfx1bHYncYnS/X3XPMu4BDdqX6ZXthXGvzl2
TEhik94Dg9HxDYSQx1kfBvbe+MnSx9TRjS9tuIKMOwbrPNmL2QJqmc4Ecw4ApCbC/0zRw+e5K1p1
hooNhQkl2Is3EZsB3qYjvbV6STq1cJmIbkNLhNdQy2In6VlfzxBLMBv/nZbpOGOvLFPEWAANQsQ9
BEU0W1dR3zJrTH31rKY/k0kmGUuKM3RN3yVZ2/ZDWNwg6xiTvkVt3FWupUPflzGGv2uLng20K8Md
1N4ZJdCgasgmpG704uDgQJnslnYsH5eTNv7sRklxU8ppBVAX3HfUlnXbgGiEP5D9ssc2EkA0GkZP
XfQsO8xzxyeJtkDtfFVdKwvX5B7tOT2JrErRv/6lGEjPfr7MHs/n+f0X5byS/rl2x3MtKFghkYpL
iUdcSEidOKTCt4UVh4f/Wim/0vKF7jSQ8EKqHUdUYyTXja0BfA0k336B2pYJE94uoKQOESakdboR
aBlrL2DoHdBH8G+ugLTEJXb27aludGkAAXV0VWOu//8ziNAGYuMwuFP5S8nQtWGznJjpZ0GfbJ87
MK7Jp3M9TWntPcvyCfULAuec+wE62tsySzN2NBjwbf2BjYbhDvlLUrJPSTW3KDkWhXpVhxB37YqC
Ic1zJGZ4ELKClpuyIzTW5lW1AoRdL1Gg8v6J7utl1I4HQPS8qGjvLz900HcxGIP+gn1BDZAYOlsv
bweWJ8j0AIXw3HJ+YBs/sN0fmqjWdh5aID1Dfuj4OBEuBDrCIrsNbRju9AhOIno/oIR7EWLj1/Eg
GR2XaMJyiBQgki8nWTq5xfMn/N2u5mnZaY0i2Bz86c+HxwOs7/ofRFX8w2QZziBvEKplpyJ+H5K7
9CYBgUVhKVjStvZIWKq3xV0DVidMLDxS4Qv7LyT1wsQzRmsH76hhB3wpggS1jUnAjvYFbSSJBKH1
RIa8uOrrJzJkYZzrGf0t4unK2uk3tggGA2hQ6AIjWDTvnovJrikYQ3YqmSNy5jkthbp7LZRWW2ov
MCom1TrJrBOcUlazLH0UHbwyuZfO/+vsU+yKDQmW/ORcENPvPh3DtOPI9H5iAw5QVue/gpVDeySj
cd0eye7nv5NszVQ/1NDaLhluLT0MJYYNGMK/Gv3hD1Zb/K+mcfzm1dk76ZcFie+1i0z4ROGL13+/
iKGLyP1w9v7VX1/v136mIwPYWnW8PqyZNRZ2zQGkru6cChX5hJXlX7X0fAMbDWTMj+NfoL7JTCSz
+Gkg/9i3TyGMD7DVuC7pcLVTZ4zbZ7D91bqcm/2KDZfdyDyf9mS+9RH0MB08qjlDNaa17p7NTPao
eNnQ9tAYy0jXVKXQXfzp1fl5rKkRVkjrkpXXzJBs12gQaCIZwK0Z3mLZG75cOSrgoPdn5+dnH/5q
LW99SrVIbhnIqIJF1TypcDeNoYcqRo1IWa5S+BN0WgSityfWdfVQRYg5LmYTLm9yD/MaiZ7lUX6/
hhHsSIAAHzTsFfUMXuS3bFnWyx3u2CtLNkWeo/3dR9hICKKeLT+zqtBii0O7PLgiEjqrU3w85B9p
AceuWNV1VDPNisQo4pQNOaddY1xSbJOwXdgyAat5iuA2DsOyAG3QdgDIbsR2GItGgfioRfBMlrpH
xVYNTjAa9/bDFstZrAxQmfjrmoL0XRVhAw3EajSM+mmH8Z9+fnX+Nq4ntY7D+U1kvjh7//rjl4uG
jsxgla27UsLN4Q8jbiYAyz/wkj4X0+aQnsWm3XHQS6Va44ndJgiqYty4f+TYhLeOjsWTCu8bb+I5
Xylg/MRA0KrBFeBD5blilRAXQ3XY1W8DWp9PP2/gmDRY1seDVYFJk0cWbUgpsPEo2XXQboGKg/1v
RUYZkQ46ARcbIvJZ+8Kd42Dyn1aLzHKYizpdsyM87u7SCSr9Rjz2bJ+001IrOGzHf21uNU1nM9kG
/20drYblHNpIPDTheoWxNNoIoIHt14yMN+EdYkXskZdFO3R8j3W37PHe6uve6kWYl/7hHPGDUOro
jjcESTcyd1vCeonc47o49gwarUK5EumE41wQugoTQ/+uHzdm2K8d0NJ1HmM33FFtopxlH9RMqBtr
PumBPDsJjUKc7Toz0uRZ+ORxfg8MK4rR6sutpiJBF4/gZpGsYO7Nwj3bPRgSxVghG4TLbyXUSS2h
vgWx6mjECracMJdAT97IbLbxY1S3w9nGDddZqZadPNFzMAmRehvgliC25ONwZ1ib+MEwbsxliuOz
t1M0xmssv16xYqLOL3ahmESDoLdxWulfoHx+34k7vsqpFTF64/RM+Afszdm12LhcE9bGycNO1IK/
RFVXpAIcJ6IRbPd0CZt1PPsf50kx/fL5HezW+TmRxq109+wYyAiEbrXqj6iN1spU2t9PrTM2CWnf
nDM0goQbwJKJKVLNhxr1IifKzgTb6rYsU1g63IQL2tiV9qQuM8IPp5Is5UCR6loV0kJ6DivzHszH
z+tleYKS/A+0zThBNoGFnk/Zl89np/lilS8x4EDi5lq+uCf5nN/bbhLLXSBU2DH3nf5Gn4DgqFiG
tiG27bCj4KWxkikSk8yuVhx00vwWZeUjJ7WJaErklZ52UWd0XBUjqdZl4XE1tRy1QSeyqa+5ZxRb
GX4cw5V6EgolNwEM/f6deJwGr1CtvCAvQUBFeRaFeTfCi78QWLnGrx5ex9vBhZARfkMfm631wn1y
Z+oFHstsCtAt5ZyAIyi6MxTTrkaiIBBpgO4mwF2nRFiYE4KdrzGH5EAp5luL9M1d4rC+qkdBFruv
LT1jg5/L/YGx7Z7wyKsdrXblJzPDTAiU4y2T4n9kiv9t+oTRwWJm5SB2bDfHz9ZxpQoKCClaqCNX
auwqj9EH5bJYVC8PZd+C8X9r7/UdNPA9P6B4GfRYK+VgoWUCP06MQ61m4+NS93DFNc5oDnozLx7p
fDPYwwB0AfyBCnJkn8j6lg+/mkEnlOI+RpdiXqqCMf4v3zuA30RoDP0Tpi9McDIBDC+x1CIaLLn3
5QCU+XTLHqN0Sf24O9Alu1fKSIB4GbV1JDlxM7TH03D4y5YS0oKWwC+hxlXoIEwTndSIqDn0zCtD
92EAlsRt6IQGEl1r/KJ+PF9wThQSXd1NMH4K1KCO36E+3VNWKuuX+YKpSCouQDGcSgZl8CMefbQV
PQXj8BDJDPjxNF8vK+2slFeEmryM4oSfbqpCYzwGV4FdVOJOvRmWZZ2mU23amNy5J6fYyalsV9rc
sF24k5xqDQW6/9ooLi/a6eugx2ZMJ43ecS7aIFWYLnFLx9363CDgOUumrHDDuytxHGjFzVm01+3k
BGifMbEAgTCmlnOkM7VWLIVtttWEUwiwVuBEYHhyn/GW0HwLGxWBsRd5MD8kmc+/0mWbthkS4XCr
jIPoHEVKmD9vGZEmvQQUowq7kFQWsRYUigIVuAjHnodBrOUoOVJdvj06U3cU5EIuKmMhJ91obCzk
hIRTHwOnMob7L5i89liY+08dw84XPl+6BkTaj8JaPVlC2xmOBx068bPoHhXFdJVKB5G4uyW8+c2v
K/H2eF3JvBBUP1ukTqmZUnf6qDWZTqNqzvRx2YyvY4yhWy9IySG1qQ6dtOM8ligDdrETjAthHHs8
gqATw1KO3nP6As44ADCX5iPsGbTynH64qPIPA17b04eOO6Ex1t1WXVg7cNxSH23gYE/SxhabX2db
WXCt7XbNfnsjmzXsxq3OaGtsbEXNjw1zKYw7HeAE3TRHY4UIqGxl17Ft9GsPLUgxY78SusyNOxcO
Re5c+C9X7WzLvmbXAQt3A1A6nuURDoqYv37tsDiwLL+RI6OCCApcP+gutEoWq4wpWtGvgJvdHZg4
Dm4cmpZKaF6AoTnJ1lMm0x6IPcuAHKcy+8CcFdTXPROfoR1GhlBgiKyEskAC4TKgZrZs70aIApar
toFn/z27FLcvb6vC/S9mFRL76mpo49lYlVNAmbpl7qh592Z6CeqZ2ffSXY9kkS7a/M6xmzOBCkEA
rrJkwtqD/7n8ufz5ITm42v+X+tfvBhjmKaLTgTX+cw2SN6FbvpQpkaYVnaPRIlnCXp1sZcpgcoGD
PgfVTubur09APaOofw0N72ESYEDCH1re3USUQOWkxTPJUA4lkaEF/90aHa/y7PEGQ9MwRxLI34Pu
QXSIf/zQPTxoyeYguLOj55PJhFJc3N3Q1FmdY2Kab9H7IXV/iP3v0j1aPGx6KsM5T7RxKQ2lBBFz
5ovKyAohEwTnlVc3beeOqkDVad6svvm2hxsop/LmnYUDbM/eWiYmGbjQnJc23UHStczbRbrUdbSZ
UGn76VfT4aqvsgK+Pn5md7AloMg33ZxfIkT274vNR9mOC1HTFbR0COGC88Mog9BF9ola2N7mqBYS
GH1hMMGDOwOEvVMKfxjubT0Sf86+mgBPzvW78JjtDl3+tEend10oYenOHbeJXZeA+Fxzz/OSN7qy
SfQUWJYAI7wY8J6h5BRnf0lAzGVxwypxMfUvj2c0y/xqntC4xo1RAk2ufiH3NcDQUOZqdyrX5Cnf
IZxIUMrXpxeTebuVj267zvhG3fCeOls1uVMzYzwx4hBmHlZnlUfleoWXPKKMPaST/KZIVvN0QliT
2ljCdNlR4hc8jKqOH7BDPWbHUTLe1Hhc09gKfeVKiePI/he9s3cYcF1G40e+66DNqCfDxCygZ5uj
ccLxCcaoc4cAOdyaRnrgrEYxyM1tx35bOgPRbU80IF/siRV1MAxl6dFAjg1kXqIvWSX2c+wy7LsI
ClkNE0h2LGbwZYSgzBwzgfvCwXYmDsoxELx0jaxs7kCt/btYEOaFYGwAm1BfWlkr0HD+YcmH9WJs
61C1JHeQFTVS4NLsQ+yOPVlmyQAHc+6XPUXvjok6q8MXNhtJAbhqra7lO/lmVEISRC8YWboTflSh
0SrZwqqxOrAP4bUREdJT9TaElLvSclSAXkYNFuZRVGv7Dh1lqRNbnEQNRqOpmBQ+5iiDmi2ozoj2
OK5PGF39//J8oU12owhDl+4/Ln9iGV3i4U5O8/s1ptp8kyCfwvc/iUyGt3w39zc0qqH4R0xHbJS/
JQsb6+MH/oXgTe12Fpg/RjX9Dn0AqgO7wwYQ/qAoUOvU8N4rrlwXWd3F67pMFYaTX/vJrRwYlLLU
yRhqBTSkFdkb0DnPQ9ce/NxrX/7Pz72rP3Z+xvChgY5cNLKJYdajrfCiqjZOVBSbn00B6cBEgYwp
UdqEaccbrdmUgLnLM3UJvgXSdhsb+3AW1jjUK5cIPKa5bYIWwcxAdKsQ93z9e8mlPuvCdmz1EPtN
5oovA9xa14jnzMUROVlz4yANTDrzULSmmbAbm1PiXtcniWGtEj4twSViqZRKpM6xE+4I3aIvlA6d
aKkqlDbHTs1D2P+UzmbNuVuSS3QJ/e6khcukdeWl2/k2KziUetjlNnlc4ZZbqShE6i5vLMZAjGBQ
PR7y/LmAXE+7Os72ajYF6w+Ng7sQG22QnsZRtx1p2vmWkI1Iyo4fFhUyCm3+CZuHX4eWDRmDIimr
jbRQFZd5eWgmzlq0OpoWCYYriuwy3idzBToL272PI+NsTsOntm2eNHDoL5G/YGbn0m8OzEOfgKPA
wIShfQZAjiwlcYZZrTG7oQNRiNNB9CLq2YMWob9/B/Xti9pOrdis8lWoGyGC6/v5h9sPF8+6oxDl
X1Hkkk7xskNEwS4ZyzHcwOvbZwZu57/P1yX7uK6Ccpmu4fUp4TmbXpAkprt7dlHfTCN59ubzq/ev
A3a+PNg8m7nto7SMeH6bexbfsWiBKE3piCCf0cmmokyzMHZ9jkFZa4hBI0OOxpZ8WOb6qifbe6hq
0y3SdLNmYCGrizw/HTt3ksz+09zGCAKrU5I1Q66ZjW9CSCc/mqnoFWamClSZ3ExQ0Uu9pxdtYGdU
O0ofgBFJ6OKByVWcsqAYcz3QAe6o4ZANd4053u9Efhdjx9wsDsPijag6ocp/B9lkwyax2QGx5RST
1KyH+g8T6j98qCAkA0C5jDSY8pmmiUPKmr2i6wNrZH+eciuUJ8vzUzXZn23m3jHp4rsEnZBPK+i0
2hp4zdXZBlWt1l8ynb7GNz7Q48AQbkzUQMaLbdnuSCOdG3QTLCBiPSjQBxoSP7MzQ5XUqZ0VvwRr
jFlqRE6NXU28wYSFMkeydOn58VA3oCNEnBb2+OT2yXH+L/ZIQ7Rk8Z2RRJf0GBb0F6xKoDoKBV5Q
ztNZZZVMqiKDghqZWd6nsK2O2jxHU39W5IvTeVKc4p5WtBc/LYGCD79FcRofWWxmD+aaPytxkb/B
9+QoFMxhyzGw2+3QAfrLdkA/wM57a5i328H8hAmagGG2hpttB/ddssP4WTNMnvDnVHPdVkAnzUBl
vrBdwVbNYPnt+F2BznYE+oYvrAbYT/5K85kzZMriQnPbscoc0IFhjNT04Iy/HhXJJiFMZG5UL8TT
MBWaMc2M3R7dQPt2iMu1uB0JfYlpXx7YVoqowJ/mcW/ofP+bUsKUIP9Wargi5dsQ49uwhQFWeHV2
Zmfhh6Mql81IX21A4bWZGd5DRHTUPIJ2Z8s88j4inrgOIRHI4b3NeNqdMPl9YR7qNJhk/jd068nl
UKeBpHbfskuhCuo4rtIcuWnCGxMESjhdfvlCv1XgHKkJky/uqKgyEXB4wQ/Ypf3JQ+OXcRXdLvP7
KFk+VnOwxqJkjBsFgoLGWXRWiaqYsWycjLPHaELB6xhpmEeaAkWEUMEMJjj9vfA4rKgT+E35oa1A
fYd2wumr6nqrQqWCjDv8eA/PR4b2LU0DvHOxmsN0YmgUDZvuGUi7+lJieQVoHta8lxLqSsb6BHqb
wvAqtlWn1lbZbsCPbd8YzYKy069Wx8sGBkjkcf7QdNZuvRpnuRd8OK7z3Kix40GVeG3Na91PcYnG
4Tfw4g1treMH++3hTU3NE+f4eP5iJOUFUfp4ACXHq4K/emdRrCUzUr6epjLGFSqacer1zu0QKuat
oG8wk4Z3xtlminjwW/bI04danCvv/xhFPPDJDAFgq6QQu+RapGCP3Vuye3wSF3CCLSOb3PKL+D8v
Keg/ir2uxFitSbEw+SVPl23VvUBpK7qYnjThGBdPkLp9CHMYECU08QXSOGjfWWaUKzjJDtnFUleN
ouPoQOZ14wWjk8i01L1k3iLLpXZ4WmhtaTApn6D+ZLhwdWFAQoqv6l7bRm+IGppo8NUIh/EiJeEi
JWMlKXKj3lrfYKwYzs5djAYSq7pdg7O6yO8/i9s/qnqzExVMCNkoLfFuLHdygnjKi2kZtdM+66sX
XdEmuEvZPYYmYubiHO8t/IJx7ffJkiwGvI6FeS3x2Ah+4tmEfFOc00g9mtoPnOBJMq7oLgdHqy9f
obZpVX+B83SeLBtMNptbaj36BgNo922IuQPHN/na7mbMJqhd+Pu39OgGq0zSKL7sb5WOH0+Ywqyr
DUWdeOgrt8FWaCrMQ75YrT2jxcXfe3ilTmRttc651JJBuSbxDSdMgxsXVBSo1LKMu1GTU9Rw5Oqr
H030tzd69SpMv3IrAhO1Ihs617YRH92VzNpAjKz6+0hPjP+tSCl6MrlTITbqlRUHz5r3r8Kj2WYY
pPjijhNF38iq+tgq1kkSftXvd9ML3dGTfN/QGI97uzy0f9ooBNo6Qs8kn/TPWyS9xswDePjmZOrt
ibfdY7cBzkGdlBFtmpNtisf08PlZM0gAQ0YEhvUJOEUHW2Xg5HV1I+tSKPZ2yT+AFX2lamlW1ecz
FK16DuhTfACrziq2aHtE7Eb/ef7xQ5/fkUpnj23sQuxYrcr0cksdBfGdXRQCZpc3dV2aUhob+u90
AcF5K0sG1RxIihmgYYC1WLI2AXXnY4r6kgbnpjzFKW0wb9Opk8JGvFNsxZ1jkTJ8T/g8wQSZ8xEa
mr/mze/bR1Q8F8zSg+9ryaTGXX6OMqxljmi+nAhx5aeL4PKNJ+77UrIPwq7fLNm23PEGO+IZAneT
ofYrXmFqunW8VyF4902bG+5l6sncg/ZK25TzEI95jcKgL4R/MrlyiwmnbSjlrngucijxQPpOpLNa
XDrpyK46kRcVSC883LGiusglrd6KLCiKeUReGTc3p0hUU5cJtilt41PHfgrh3zTadHFzWRaT7YZr
xQZ26l7b3QLZuoBFo+8P+dLtXtNxR9q4aaSbuzHST4zLPAMr0X7xo3GWxYN1dkv1wEdofp92ezIO
1t5nO7bFev5aIMOf3VSPBlM+9b9SHoDA+96h8JroSLzCbT/jtA1jvBHVHZT07Q3nlXCUNOsCA+Xq
saYPGHTN0aKoSVvj6AB4O5b0d3EnGM5TR8dQlgETto4m/V3cCd3pkk9ZB+hc93Ks6RSuvbhZh3A/
Bz6T7qHgRLgX5ylfSqc5rfbmdfg106yijGkStwos3mrYNkah/N5e/lp6bKqmVVOm2qdAdnthjbwH
w8LSn2RpNOhN0yKR8PHflge37ZbgY1u08xbtlG/OLA3ZERTp81N+78R7PquLuntu48cDQUUgW8oz
mcganHl9V2/ziG1PtYf+poimKQwF3wa2B2dsf3ViKOO9AroMJZMR0aWULli+FkHMvDSeezE2r98s
6dJdPvM3bBRNbjjJeC7Yt3ag/3ZJcYyDGRMMZsgwU8yKa4mmUHwmy41kNLY0rB/A/r63jZjLG4A8
r5L9ZqiXXMnIICTyUJ34+ZQELY0aRpZXK3kSvz9kJFgSOZToLALbpFPx+rpMU1RY+ZhiK2+R+4Wg
oOyVvo0eR6k1Er/rW/FgbLcZD6e3Gv/mnI4GlXAwImeklXWpLh1TgNBYd4e0KCJjViAfij20lOeX
oSdk7OwydeMQeJa1iIrEKlY+KZk1RaY4s5dGINXK055lRYEYAeJ/SozNlJmrMPjgVSDDGGbL3jCr
KT4aW6xX1tqTKWFaxyuxJGIg6WqFzrX1conmO0uK7BHEYVmi0TpCtPDImz2kOLn0tX88WI1adQgY
T8u4ssxMiETJ2epaghrgB2X08BOV04PxocRIcuYEbF/o1j8i09XLyugOa2D6AFiWA4pIH/C0uZTZ
txv5uRR26t9+USqMwTyZgq2ik7HJDEZtFV6wZPcdxMXadDW8rmE9w7PjtJht7YnBL3SBghIgh1I7
1SPkvLC2K052865HPp69C3FbrY10Xl/LNNbLVMakvcEPIsdjWzLOnEUzPA2IYE1FYCaIR7EietQR
n8BCfAKS6mtz/4KFtPldqR0JHAChiKz4ssqJchGY0mKM9GqAlRGtdlDmi3imxa7TVq1GmFt/GiUT
FIqYsMxIFckLr0Vas9bI/s11xMpSnVx9SqDADGAG2TCpTIO0fiqIln1Sa3IuYNPQE8EJMuhGbBvm
SlcIHaEItG1KBpNcW6dx8M1ZyqyJxzrhrAzapFVnTcHEE+0D1/77+vyG1qZgpzOhrrwh7kcWyPCB
BhydzPc2UvUeSN9y88514o0dW4/4uHv72r5D9l9j59uT13Gs7kDZJ9+35B9ABXzSdJYrncj+4Qb3
Rh0PykmRrqrR3jHd4c6XWZ6AJWxbVa2RduXifkEmyhRrUXubREVVj0zxPM/GSSGz0LbsMCa3hai0
zCvWGn0pGUn+tBv90o1uSe5nmD8bT/FlTCFs+uB/EyzhsaVUTUZ8dunXjMRqltxw+aC7lFLql+Qu
4ZQ4usvTKQxZZ8mtebW9NZLd8Yy5uwGtfUe9NZKfdgIMlDZ38O7TypZfozUSVW3ocsLMnb2aNWNL
b0wZtSNGHh3zkyUE4IuSVoR5DWHUeJwwzh8ArDg9kocz0EPzUXNrRFmoNGy9I+MIbEDKWoDb4xM6
sWmNxEEKB9aAAPdKnLSQkWXMWJQuQVmAOZXPIsq2SMwsYr+YDNni9k/LIqsReLbrAKyzLb6wDHxU
pyhUjgfUpcEYes2If+4pXjFVcmukPg8oc+be/wFQSwMECgAAAAAAWLobRwAAAAAAAAAAAAAAAAgA
HAByZXRyaWVzL1VUCQADSP3fVUv931V1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAV7obRwAAAAAA
AAAAAAAAABEAHAByZXRyaWVzL2ltcG9ydGVkL1VUCQADRv3fVUv931V1eAsAAQT1AQAABFAAAABQ
SwMECgAAAAAAV7obRwAAAAAAAAAAAAAAABkAHAByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvVVQJ
AANG/d9VS/3fVXV4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABXuhtHAAAAAAAAAAAAAAAAHQAcAHJl
dHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvVVQJAANG/d9VS/3fVXV4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAABXuhtHAAAAAAAAAAAAAAAAIgAcAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC9VVAkAA0b931VL/d9VdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFe6G0c5GnLRiAIAAGIo
AABBABwAcmV0cmllcy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxsLWdyYWRp
ZW50LWFjdHVhbC5wbmdVVAkAA0b931VG/d9VdXgLAAEE9QEAAARQAAAA7dXRS1NRHAfwc67XvE3W
rhhWo9ythLVg5kyXgbmjOHQ+qK0CsRHq2ihlZGphaHLUp9JooD1YsCKU9EGhh40FUb4kRQ+BCFIG
DTSEQKZWbIa57tM9B/wLgt99uZfv7/A7v/O5cO+9+toqvc6oQwjpXdWVboTSFISEBmmPmjy+PdCu
3ixdzoYu7zWft63zVgCdKfa1+GwFXluzv7CwxG63FbU0+4uLbXavv+Ss/7SXtu68Q8j8y1VZfrEb
r31+ed9TLovl09FU6vujoOPKiHRyJf/1vLiWl9ja+Zv46BBESVYIRVh9EIW3g/psLpCTZoUcFjBb
NEbRh0l9lrZAUchXBHWoQx3qUN9dXx+MpbKSvWXm1Fg80bN5xHRUK7VbY6eUxedvqqjWYfYCoaXX
twmXhCl6lfP7HPedDgnCims5g0tm0sX34ck4v+1+WakzOtiXXN1NITPOuw/ZtP0vKLozn+znkjaM
O6w/erhfQKnaemTOwCWeTCnYdv7bcTZkzKKQUFGfwiWNhHqG/uRyMnUYb45vpHHJonqOxoUE97vp
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
9z2PRhglF+HQ0PPj0dx7jD/fxe/9VA6086uNOjxouJmYnjCdy7tvxXoiz/+AASLMfgOd8HvHvW8r
sv8L7Sp3yCv+tpsTZmYRI+OkyeslbP4a79Guu9KPqMUqVBgZjR6t3vpNOeL+X9mJWENiOYMlP4/8
TqmPVz/NgbtyncCMZ9vXa9fd678XmDCrr7Xw9/TpX8qc++ERViDfuPy3zRp3VUQUNhwIZ5Q/+Ctr
0+31Fc+TzKsOwz09saHcQSnDGKl+leFjOiKKcKfCBE6OCT23BJDSE9MR3lH5UflR+VH5UflR+VH5
UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+QGX/88gVmnS5Gn4
cQoDEHi6+rmsc0poAgBQSwMEFAACAAgAV7obR8T525RTAQAAXAIAAEMAHAByZXRyaWVzL2ltcG9y
dGVkL21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQtZXhwZWN0ZWQuc3ZnVVQJ
AANG/d9VRv3fVXV4CwABBPUBAAAEUAAAAI1RwWqEMBC9+xXT9LIL1UQXWii60FLosYWyH+Amo4aN
iSTZVfv1ja62FHpoIGTe5M3Lm0x+E8cRTOtJj8BNN1pZNx6kA4FC8tKjAG/ANwjv56OSHF5MW0qd
XKsa77tHSrnF0ssLctO2RrvE2Jp2M13MbPqJ1tA0YTSK432Uu0sNQ6u0K8ii0Pd90u/mwowxRgOD
QC+FbwrywBiBBidjBckmcJHYP5uhIAwYhGuYsvtgKVdSY2lfbSkk6tCHKEgQqhd80NKHN88O7UdX
cnzTB4cEhjQoERjDEae7gLMrDsdulg3CzpsOTFU59PPlhGNulLEFsSgI/YuX/uaNqJTpr9Sc/rY6
52rwttSuMrYtyByqMIFNythd2NvVi0XuYbh6XCwvX5Xe//zUFFdSqdCvVZvbevvt8f/1zltzwoIc
VclPK4wXcrbqa6Nx7aoO452mt4++AFBLAwQUAAIACABXuhtHeCdZLc8ZAABoPwAANgAcAHJldHJp
ZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYtYWN0dWFsLnBuZ1VUCQADRv3f
VUb931V1eAsAAQT1AQAABFAAAADtmflfkmn3x6lstJyyxso208apbNN2d7HVzDVNcUNyXHJJKQ1w
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
G8cmydpxDRtc3TOi//ztsEzDoD38KuOj/Qgsb34yWuv0B7D6A7OLVFPrJ+PULn8AZTNkPYxHRwcH
hVgwC17mCtgxBem6zBN9CFYqC54VjOgpOLB7urjoMbbnpGZ2n+cY/TqqoQuiSpHPmnNZbvne5kTv
/akq9vPI6py2tl2XCgulV6DLjFRqyfF0B9Z3KVi1A1MQ2G5O9vYoqVwaQQQ3qfsdpPGBwh0IChQG
2ktw2c1Iy0iKBDxCELtoN2llbVDtU43YilXIdGmMzSNMPvDnxH0U0bMxqFLRzmDt4bmTEEEkUQ+a
ErIuJ4xFFJq4cOFDNDeToqmWdQii58hwKTKjUKcmEiTjO4BTXaiCTrQGFVz5yIaLw51xbeM2/BcE
7n8JWWwpS1uqdpZdeqprKqQyiiOPQK1t2fWWmy5wKPB51Kd0c4B1JqJ6wpmDxJ/D3fZrn8LBKHKn
46xx5gbQd7pybdHnyEyI73RjBpTnxN87WCxKIcCCHb5C9arO0lx6hzDewNNT4A3auGpKvwQN3/zm
Uc3zx0fZuZxVTa2jnp3YVrnZdxOwf4xoCdCJeGq86Bs25lzWiV3miogdZsu7mdcCPc4d3l6Hhrpt
b1BRd1kAklfLoVUydpfwvJxOu7136t3LUyfEqPX0NLFAjkUnWqPfvL9Oweqn0xqaNe0rnQc79Gde
Ylm3dIP5bR7OajPz+AP9p+ZCc1lfFi7dYfzc6MPeyCvoG7vIfPuyDv3g/lipgC2dVWjNL9DnEfrF
+WAk36ita0Xu5VEbKzvEjeZT7el5dtopWvPZdnC7FVaC4JfGoMm7j6v5chbbEe1hahJf99ONzYe+
IfYcIl3U9iyBd7C7xcLzy76AJ/bfQP8BUEsDBBQAAgAIAFe6G0fCgQO6fQkBAMdvAQA3ABwAcmV0
cmllcy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0LXNjYWxlLTAyLWV4cGVjdGVkLnBuZ1VUCQAD
Rv3fVUb931V1eAsAAQT1AQAABFAAAADs/XlU0/e2/48fD6fSXpXU0paiCLVUc3pUIkaEkKktLdQK
pJZWCiIoKFFQhkQMSUjQ2ooog5pqCGSoYo3IVI0IEcJQxpiQiEAQCAlDBgiQQEaSEPiiteece9f3
+1uf9fndez/ns9b9y0WyeJkX+/Xaez/2c+93cr8KD1n3bxv+7U9/+tO6vV989vWf/uT0/p/+9Ofv
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
am603L/+/v+kMQtP36MTeNcS39ozOA7Ly1OpYpOta2eI0uDe9b7/679+yX75d+GrfP0KS9gKlu/V
xzR5/WiXcu1cpfXA9FQfmXhLWxhZe8b54VUbErFqvtp5P5vPXp6+AW6y2Jqp2jkQmy+nZc6ma1Z3
woe9+5Ap8Wy8H7LDWbhh7v9g5b2jeNQ69GXy/ZvQ+x/O+h2Ej5T7iEXtII4DJD7dTqMgI+LWCdhz
1/sJpq7db7PApHXQPWBiZvxh5/Bv/mU088Nrmmqylq2yNUax5n84pXCsoPiClDBOaUkiJqjLPFuj
FmyNgrX5uLS+vfv3eeoyQRO2ZcjtZYIrYTbaCPlG8hnLQn8PcTbh7nVI8u2zd20HMhlKcP5HxJUS
4txvYx6SaZ0dpm3Levggtm4mDkN50nLRVlqKZoIq17Nss1KwbVXMINMa2zOkBGPMGamYPG0e0CdY
DI2PO6Pv5jd48pSnY7Ob66t3a27mFcYHAg61/XcmP0MgnqAV96l/Opaiws/qYKTn78NlAG3CLI7p
Q3gAZhH3qyjyaK+SaM99jnODzPMfz3JOl37aYQ8nCRRbv6YUUObuzga2eMfuJb/G/TQ0LZupOSZr
k3ZtmrLzfcyCv5hwbK9/eeV0lPED2ndPonnZhDxby2tY2589fd5MCx7k9e5vF9GxqvuwvQezBCcN
Ifv7xc4mFbwH1geMwRLVB55DSVTU+G4mXex1ennVVvstIzdbuETQyQUKAkHSZWYpQtwJa0OBJu/0
RS5RkxNirDnHeIPO7Ui5gqUU9Ujo3nBI3ZKG/kkBew75rP6KsWElsGEZEt/Q02U0H7SWfGo5CIV0
pEqjzRtECaInebjA4FaBQfJQJPc4nmH2wGmCBu8f8wSRh1VKphzjyi/d7B4sNVvGuYxvwDEnEPfa
STuP7xAeFM4aVJyfwyvO/ptOghDpQkLEEHmGwQ8nwoRYyMbg6Ry92UBKnNzykNjA6jjLbXAEAa99
SIA+sowchQnyveetW86PP0MbjRZa4ynhsjese3/tZLap1bTluA1ImxCOlty/W361U7aNQaQZKyJB
0ANwjR7IyGYh0Ic+/nV+08hcLQLZrgjX8b+OT9fxHT/ourqPBCyxBs3V1jFbmL6Pf1SGPqJfyqa4
18M7KJz7t/zpb/8B33Z/iv9g4f9gbbdhTYdBqK+r2FKflfCNP10oASmuWJCxu7nfGL8fG+3asfqS
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
XsuJf+xKJpzzlhFWIxx1zvkw5yvi28vz26XN89Pl+TdVto5RlvqjsdlXxW/4nTTS8Rvq7JiGLJkm
ds2NnH3j90gxMqYtipf971CUUww0jPBcS/krYjm35ri0Tc1vOrumT1Ed50uaK6QmdsvEHmuZ7XD4
xu9Z1Nbt1SgrKnBmpjZNqFz3I1d///PVEH/4fLl//351pK67+OI6Xbeq18vj89v7dTJX6pdfeRML
QbPa7G7JTvZrCvnb92/Lqedt2Xk/3H97FD/AalCzDfN7u3/+8OPjp8erx/v28rQcC7/dvwoiqV9i
pcv7hjd+af3Q/Zf715dn+UuspvaS5mLX3nnXbetT7fd132C/uIf6f++v2+A2X0NyMnHgud+mvjdu
WsPxRs4KdjyRmRmsAW/lhE3P8re5azrSL2e5hjN4J9Mfe/q6Tb5v1uP4Mv2BZboubrFde9qNeHn8
wMbnhnakXx4/8mcHdRJ2wn85tdmzbHBfKw2lCT7IeC5/K/DfyG8fPOdf3SHMhH9yEn/g6b61/MJE
f62sPz6c0F8n4yPXv1bvaYKX11/s688tJsLRZP5W5l/oydJu4Z+b8c/IbzA8f95Uw45hwn8ZH9kr
iFBT+ifrx8r67+N+/U7kR7L+hbRbf1P9kfkX7Qn5k7x+Als/sY4/s38y/wLj37DzD+PL6fIhnlg/
Rsa7vLd/E/oNsB/mhP5bef16/iojCPbHyOvPxRPyM7L9dGz9+5Z+NsED+pn++GYEJ3hZf12Z0L85
RB9+vn99rMfrT7e+nqKHwHudNM+qzaRGWn98vdz/s6L6//zw9PJydYK/3D99/vDP++e5I1iPduuX
60XwsuCvf9Lu2+vHrm7a58dfhSD58q2tR0e9kI7V9V13LPat55fXr/dPH769vL3jr62lQWJ1y6v7
ksuBsrf318eH9yVmfnXNv96//lP+XmHfc+0mZs3XOVKn821Nsa1ztanGubIVqDsx1y4FG1sfnfWO
6Pi1L799uzrk4FuBUbbcjtL2fGBCmSbSNQbeRJrrs/uc5urxeD001Frkihy2/qU1i8fU0hom7j95
//395QTfYmB8Y+ei40zPUrcGkdcv1jJIrkypO7G2qM90sb+UkqBvZ/Q3s69Vd4jscaVWyh4uz9fZ
CsHoShgTQf3S8UPbMlUVpH/KlWXJXv+UPnZaQ7rStWp0S9my6UyvR7XL9ZS2mFGgJN0srW6sEzT4
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
LWNyb3AtYm94LXN0ZGVyci50eHRVVAUAA93831V1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAk
uhtHAAAAAAAAAAAAAAAACgAYAAAAAAAAABAA7UFbBgEAZmFzdC90ZXh0L1VUBQAD4/zfVXV4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIACS6G0ccHasYOQEAAJYDAAAkABgAAAAAAAEAAACkgZ8GAQBm
YXN0L3RleHQvZm9udC13ZWlnaHRzLXpoLXN0ZGVyci50eHRVVAUAA+P831V1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAAAiuhtHAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UE2CAEAZmFzdC94c2wv
VVQFAAPg/N9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIrobR3L9ZfKFAAAA6QAAACUAGAAA
AAAAAQAAAKSBeQgBAGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAUAA9/8
31V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAiuhtHiR8h/pcAAADAAwAAJwAYAAAAAAABAAAA
pIFdCQEAZmFzdC94c2wveHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQFAAPf/N9VdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIrobR8+PZg5QAAAAoAAAACQAGAAAAAAAAQAAAKSBVQoB
AGZhc3QveHNsL3hzbHQtY29udGVudFR5cGUtc3RkZXJyLnR4dFVUBQAD3/zfVXV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIACK6G0eBSnetSwAAAKwAAAA0ABgAAAAAAAEAAACkgQMLAQBmYXN0L3hz
bC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAAPg/N9VdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWbobRyifn9q0AQAA3wMAABEAGAAAAAAAAQAAAKSBvAsB
AGZ1bGxfcmVzdWx0cy5qc29uVVQFAANJ/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALrob
RwAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1Buw0BAGh0dHAvVVQFAAP3/N9VdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAO7obRwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1B+g0BAGh0dHAvdGVz
dHMvVVQFAAMS/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAO7obRwAAAAAAAAAAAAAAABAA
GAAAAAAAAAAQAO1BPw4BAGh0dHAvdGVzdHMvbWlzYy9VVAUAAxL931V1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAA7uhtHFTU1knoAAAC8AAAAKgAYAAAAAAABAAAApIGJDgEAaHR0cC90ZXN0cy9t
aXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQFAAMS/d9VdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAALrobRwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BZw8BAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvVVQFAAP4/N9VdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAALrobRwAAAAAAAAAAAAAA
ACoAGAAAAAAAAAAQAO1BtQ8BAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L1VUBQAD9/zfVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAC66G0djqqxsggAAAKgAAABA
ABgAAAAAAAEAAACkgRkQAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAP3/N9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgALrobR2OqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBFREBAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVy
ci50eHRVVAUAA/f831V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAuuhtHYEtmEJEAAAD7AQAA
RQAYAAAAAAABAAAApIEjEgEAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1
bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAAP4/N9VdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgABbobR+qKfEJhBQAABQ8AAAoAGAAAAAAAAQAAAKSBMxMBAGh0dHBkLmNvbmZVVAUA
A6r831V1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAzuhtHAAAAAAAAAAAAAAAACQAYAAAAAAAA
ABAA7UHYGAEAaW1wb3J0ZWQvVVQFAAMC/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAM7ob
RwAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BGxkBAGltcG9ydGVkL21vemlsbGEvVVQFAAMC/d9V
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAO7obRwAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1B
ZhkBAGltcG9ydGVkL21vemlsbGEvc3ZnL1VUBQADEv3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAADO6G0cAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQbUZAQBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L1VUBQADAv3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADO6G0c5GnLRiAIAAGIo
AAA5ABgAAAAAAAAAAACkgQkaAQBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxs
LWdyYWRpZW50LWFjdHVhbC5wbmdVVAUAAwL931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAz
uhtHpaM0lSABAAD7CAAANwAYAAAAAAAAAAAApIEEHQEAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1kaWZmLnBuZ1VUBQADAv3fVXV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIADO6G0eYKfYpmQUAADESAAA5ABgAAAAAAAEAAACkgZUeAQBpbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxsLWdyYWRpZW50LWRpZmZzLmh0bWxVVAUAAwL931V1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAzuhtHy0/t+scCAAAEJwAAOwAYAAAAAAAAAAAApIGhJAEA
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1leHBlY3RlZC5w
bmdVVAUAAwL931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAzuhtHxPnblFMBAABcAgAAOwAY
AAAAAAABAAAApIHdJwEAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFk
aWVudC1leHBlY3RlZC5zdmdVVAUAAwL931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA7uhtH
eCdZLc8ZAABoPwAALgAYAAAAAAAAAAAApIGlKQEAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1s
YXlvdXQtMDYtYWN0dWFsLnBuZ1VUBQADEf3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADu6
G0eZ6o09AwIAAH8JAAAsABgAAAAAAAAAAACkgdxDAQBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
LWxheW91dC0wNi1kaWZmLnBuZ1VUBQADEf3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADu6
G0fg+vcglAUAACASAAAuABgAAAAAAAEAAACkgUVGAQBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
LWxheW91dC0wNi1kaWZmcy5odG1sVVQFAAMR/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
O7obRxAHNEK+GQAAVz8AADAAGAAAAAAAAAAAAKSBQUwBAGltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQtbGF5b3V0LTA2LWV4cGVjdGVkLnBuZ1VUBQADEf3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIADu6G0d809mDIgEAAO0BAAAwABgAAAAAAAEAAACkgWlmAQBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0LWxheW91dC0wNi1leHBlY3RlZC5zdmdVVAUAAxH931V1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAA7uhtHvLeCqaoBAADkJgAALQAYAAAAAAAAAAAApIH1ZwEAaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1zY2FsZS0wMi1hY3R1YWwucG5nVVQFAAMS/d9VdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAO7obR2sfhERRVQAANV4AACsAGAAAAAAAAAAAAKSBBmoBAGltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQtc2NhbGUtMDItZGlmZi5wbmdVVAUAAxL931V1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAA7uhtH1tc65JIFAAAeEgAALQAYAAAAAAABAAAApIG8vwEAaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1zY2FsZS0wMi1kaWZmcy5odG1sVVQFAAMS/d9VdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAO7obR8KBA7p9CQEAx28BAC8AGAAAAAAAAAAAAKSBtcUBAGltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQtc2NhbGUtMDItZXhwZWN0ZWQucG5nVVQFAAMS/d9VdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAO7obR+b5GR0IAQAAoQEAAC8AGAAAAAAAAQAAAKSBm88CAGltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQtc2NhbGUtMDItZXhwZWN0ZWQuc3ZnVVQFAAMS/d9VdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAALrobRwAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BDNECAGluc3BlY3Rv
ci9VVAUAA/j831V1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAuuhtHAAAAAAAAAAAAAAAADgAY
AAAAAAAAABAA7UFQ0QIAaW5zcGVjdG9yL2Nzcy9VVAUAA/j831V1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAuuhtHzOnUmk8AAACaAAAALQAYAAAAAAABAAAApIGY0QIAaW5zcGVjdG9yL2Nzcy9t
b2RpZnktcnVsZS1zZWxlY3Rvci1zdGRlcnIudHh0VVQFAAP4/N9VdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAUrobRwAAAAAAAAAAAAAAAAYAGAAAAAAAAAAQAO1BTtICAG1lZGlhL1VUBQADPP3f
VXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFO6G0cAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADt
QY7SAgBtZWRpYS90cmFjay9VVAUAAz3931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABSuhtH
aZTRjfAAAAB3AQAAKgAYAAAAAAABAAAApIHU0gIAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1z
dHlsZS1hY3R1YWwudHh0VVQFAAM8/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAUrobRw1/
+IScAQAA/gIAACgAGAAAAAAAAQAAAKSBKNQCAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUtZGlmZi50eHRVVAUAAzz931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABSuhtHDPrk6jYB
AAAzAgAALAAYAAAAAAABAAAApIEm1gIAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1l
eHBlY3RlZC50eHRVVAUAAzz931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABTuhtHBnDX5dII
AADXIgAAMAAYAAAAAAABAAAApIHC1wIAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1w
cmV0dHktZGlmZi5odG1sVVQFAAM9/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMbobRw2L
ciJhAgAAlRAAACsAGAAAAAAAAQAAAKSB/uACAHB5d2Vic29ja2V0LndzLmxvZy0yN0F1ZzIwMTUt
MjMxNjExLWVyci50eHRVVAUAA/7831V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAxuhtHZi+/
jQcBAACPAgAAKwAYAAAAAAABAAAApIHE4wIAcHl3ZWJzb2NrZXQud3MubG9nLTI3QXVnMjAxNS0y
MzE2MTEtb3V0LnR4dFVUBQAD/vzfVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFm6G0fkfEWj
niYAANukAAAMABgAAAAAAAEAAACkgTDlAgByZXN1bHRzLmh0bWxVVAUAA0r931V1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAABYuhtHAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UEUDAMAcmV0cmll
cy9VVAUAA0j931V1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABXuhtHAAAAAAAAAAAAAAAAEQAY
AAAAAAAAABAA7UFWDAMAcmV0cmllcy9pbXBvcnRlZC9VVAUAA0b931V1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABXuhtHAAAAAAAAAAAAAAAAGQAYAAAAAAAAABAA7UGhDAMAcmV0cmllcy9pbXBv
cnRlZC9tb3ppbGxhL1VUBQADRv3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFe6G0cAAAAA
AAAAAAAAAAAdABgAAAAAAAAAEADtQfQMAwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL1VU
BQADRv3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFe6G0cAAAAAAAAAAAAAAAAiABgAAAAA
AAAAEADtQUsNAwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvVVQFAANG/d9VdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAV7obRzkactGIAgAAYigAAEEAGAAAAAAAAAAAAKSBpw0D
AHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1h
Y3R1YWwucG5nVVQFAANG/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAV7obR6WjNJUgAQAA
+wgAAD8AGAAAAAAAAAAAAKSBqhADAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9z
aW1wbGUtZmlsbC1ncmFkaWVudC1kaWZmLnBuZ1VUBQADRv3fVXV4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAFe6G0eYKfYpmQUAADESAABBABgAAAAAAAEAAACkgUMSAwByZXRyaWVzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQtZGlmZnMuaHRtbFVUBQADRv3f
VXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFe6G0fLT+36xwIAAAQnAABDABgAAAAAAAAAAACk
gVcYAwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGll
bnQtZXhwZWN0ZWQucG5nVVQFAANG/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAV7obR8T5
25RTAQAAXAIAAEMAGAAAAAAAAQAAAKSBmxsDAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcv
dGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1leHBlY3RlZC5zdmdVVAUAA0b931V1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABXuhtHeCdZLc8ZAABoPwAANgAYAAAAAAAAAAAApIFrHQMAcmV0cmll
cy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0LWxheW91dC0wNi1hY3R1YWwucG5nVVQFAANG/d9V
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAV7obR5nqjT0DAgAAfwkAADQAGAAAAAAAAAAAAKSB
qjcDAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYtZGlmZi5wbmdV
VAUAA0b931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABXuhtH4Pr3IJQFAAAgEgAANgAYAAAA
AAABAAAApIEbOgMAcmV0cmllcy9pbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0LWxheW91dC0wNi1k
aWZmcy5odG1sVVQFAANG/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAV7obRxAHNEK+GQAA
Vz8AADgAGAAAAAAAAAAAAKSBH0ADAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1s
YXlvdXQtMDYtZXhwZWN0ZWQucG5nVVQFAANG/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
V7obR3zT2YMiAQAA7QEAADgAGAAAAAAAAQAAAKSBT1oDAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1sYXlvdXQtMDYtZXhwZWN0ZWQuc3ZnVVQFAANG/d9VdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAV7obR7y3gqmqAQAA5CYAADUAGAAAAAAAAAAAAKSB41sDAHJldHJpZXMvaW1w
b3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1zY2FsZS0wMi1hY3R1YWwucG5nVVQFAANG/d9VdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAV7obR2sfhERRVQAANV4AADMAGAAAAAAAAAAAAKSB/F0DAHJl
dHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1zY2FsZS0wMi1kaWZmLnBuZ1VUBQADRv3f
VXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFe6G0fW1zrkkgUAAB4SAAA1ABgAAAAAAAEAAACk
gbqzAwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDItZGlmZnMuaHRt
bFVUBQADRv3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFe6G0fCgQO6fQkBAMdvAQA3ABgA
AAAAAAAAAACkgbu5AwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDIt
ZXhwZWN0ZWQucG5nVVQFAANG/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAV7obR+b5GR0I
AQAAoQEAADcAGAAAAAAAAQAAAKSBqcMEAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC1zY2FsZS0wMi1leHBlY3RlZC5zdmdVVAUAA0b931V1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AABYuhtHAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UEixQQAcmV0cmllcy9zdmcvVVQFAANI/d9V
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAWLobRwAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1B
aMUEAHJldHJpZXMvc3ZnL2N1c3RvbS9VVAUAA0j931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABYuhtHYlvJtAp0AACH+gAANAAYAAAAAAAAAAAApIG1xQQAcmV0cmllcy9zdmcvY3VzdG9tL2hp
ZHBpLW1hc2tpbmctY2xpcHBpbmctYWN0dWFsLnBuZ1VUBQADSP3fVXV4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAFi6G0dAM1nYujEAAA9QAAAyABgAAAAAAAAAAACkgS06BQByZXRyaWVzL3N2Zy9j
dXN0b20vaGlkcGktbWFza2luZy1jbGlwcGluZy1kaWZmLnBuZ1VUBQADSP3fVXV4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAFi6G0dqDXankgUAACYSAAA0ABgAAAAAAAEAAACkgVNsBQByZXRyaWVz
L3N2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlwcGluZy1kaWZmcy5odG1sVVQFAANI/d9VdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAWLobR9HjqtgnWQAAbOcAADYAGAAAAAAAAAAAAKSBU3IF
AHJldHJpZXMvc3ZnL2N1c3RvbS9oaWRwaS1tYXNraW5nLWNsaXBwaW5nLWV4cGVjdGVkLnBuZ1VU
BQADSP3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFi6G0dYQtmEzwAAAI0BAAA2ABgAAAAA
AAEAAACkgerLBQByZXRyaWVzL3N2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlwcGluZy1leHBl
Y3RlZC5zdmdVVAUAA0j931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABZuhtHMoVojIrbBgBH
hycACgAYAAAAAAABAAAApIEpzQUAc3RhdHMuanNvblVUBQADSf3fVXV4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAEK6G0cAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQfeoDABzdmcvVVQFAAMc/d9V
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAATbobRwAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1B
NakMAHN2Zy9jdXN0b20vVVQFAAMx/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQrobR2Jb
ybQKdAAAh/oAACwAGAAAAAAAAAAAAKSBeqkMAHN2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlw
cGluZy1hY3R1YWwucG5nVVQFAAMc/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQrobR0Az
Wdi6MQAAD1AAACoAGAAAAAAAAAAAAKSB6h0NAHN2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlw
cGluZy1kaWZmLnBuZ1VUBQADHP3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEK6G0dqDXan
kgUAACYSAAAsABgAAAAAAAEAAACkgQhQDQBzdmcvY3VzdG9tL2hpZHBpLW1hc2tpbmctY2xpcHBp
bmctZGlmZnMuaHRtbFVUBQADHP3fVXV4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEK6G0fR46rY
J1kAAGznAAAuABgAAAAAAAAAAACkgQBWDQBzdmcvY3VzdG9tL2hpZHBpLW1hc2tpbmctY2xpcHBp
bmctZXhwZWN0ZWQucG5nVVQFAAMc/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQrobR1hC
2YTPAAAAjQEAAC4AGAAAAAAAAQAAAKSBj68NAHN2Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlw
cGluZy1leHBlY3RlZC5zdmdVVAUAAxz931V1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABNuhtH
YO83XYAAAACNAAAAJAAYAAAAAAABAAAApIHGsA0Ac3ZnL2N1c3RvbS96ZXJvLWRhc2hhcnJheS1z
dGRlcnIudHh0VVQFAAMx/d9VdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAQLobRwAAAAAAAAAA
AAAAAAsAGAAAAAAAAAAQAO1BpLENAHN2Zy9zdHJva2UvVVQFAAMY/d9VdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAQLobRwSDSwGAAAAAjQAAACUAGAAAAAAAAQAAAKSB6bENAHN2Zy9zdHJva2Uv
emVyby13aWR0aC1oYW5nLXN0ZGVyci50eHRVVAUAAxj931V1eAsAAQT1AQAABFAAAABQSwUGAAAA
AF4AXgBwJwAAyLINAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>260129</attachid>
            <date>2015-08-27 23:27:19 -0700</date>
            <delta_ts>2015-08-28 18:52:40 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews104 for mac-mavericks-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>972217</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
nGWcZZxlnGWcZZxlnGWcZZxlnGWcZZxlnGWcZZxlnGWcZZxlnGWcZZxlnGWcZZxlnGWcZZz/RTg4
kwxPPT29maX/Avj/ZafUFmaURhD0hlGpznK9k8d8j9KOXLj1fwBQSwMEFAACAAgAk7kbR27uRj+N
AAAAlAgAAEAAHABjc3MzL2ZsZXhib3gvY3Nzd2cvY3NzLWZsZXhib3gtaGVpZ2h0LWFuaW1hdGlv
bi1zdHJldGNoLWRpZmYucG5nVVQJAAPW+99V1vvfVXV4CwABBPUBAAAEFAAAAOsM8HPn5ZLiYmBg
4PX0cAliYGBWYGBgiuAACjDsl727hoGBI9rTxTGkgvHtpY28DAYczAa3/ue7zd2x0MWIO8elTcu1
gYGRiYVDQMFhlDFCGQf8G41PV7d9qDv8uXu/9wH7t7vaTUZDZZQxyhhljDJGGTgYCi4PGPOnMLL8
/+y3C9Tc8HT1c1nnlNAEAFBLAwQUAAIACACTuRtHvwc3XJwFAABLEgAAQgAcAGNzczMvZmxleGJv
eC9jc3N3Zy9jc3MtZmxleGJveC1oZWlnaHQtYW5pbWF0aW9uLXN0cmV0Y2gtZGlmZnMuaHRtbFVU
CQAD1vvfVdb731V1eAsAAQT1AQAABBQAAACtWEtv4zYQvvtXcA0UspFIzu7eYsVA6gRogBRbdHMp
ghxoiZaJUKJKUrHdwv+9w4ckSpaTdLM52Bbn9XHmmyGV+NPNt+XDX3/cot8efr9fjOKNypn+IjiF
L0UVI4tEyq+zNSO7Fd/N4GGb6c/QrYQbQrONCnFBc6woL0KpBFHJJtK+4pn1MYql2utvBH8RaGZk
yQuFaUEE+tes6r+SS6p9XCK8kpxViswbWY5FRkHy+aLctau8Ugyc2GUENjRFkrIXIqzOwXwOhl0g
mmde8JTKkuH9JVoxnjzX5p59AqaCM+nZWFDhiivF80v0pcF2GLJbVaBWeOZbmqoNYP9C8lfMVOqn
CKcpLbJLdOFlYtCM4RVhnuUaBOEa55TBHsMtWT1TFcq9VCQPtWze1ZT0H53Wz0Mx7EbqRBx6gReQ
6iKlCVZcDOVX4RUjYUIYa0PWeBKoeg4cKrEudStfcZESESpeQpabSq8YbivVwLPoIkkYSRTxk6fI
ToUpSbjAlmZVAV41gWon8cwRNZ65JljxdK97QYNGCcNSXo3rrY4toWMlFk2MWKULoH3aW3G1p+nV
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
65rpDq5bug14R86H4RT3ZN5VQuaJkG1j/dxr7RgzU7FTcd9qP6oPndvuJ9obOxWKi60uwuMou8LJ
jloTZ4h//Ly1tLqjs+5Ss+FsvLXUbF6cV1iL8Lv60uouWdwsi1YrpPCbTlQUiNkwVcKwLDe7YQ/N
32RD+/U6g2MjwpKVLUtNVGwSJVZetrUXYftfXqoV6XhIbrycve296M6mojzWvvfl0lcv7ZvNRZ6R
/ljHl28eXs2n9OC15of+uqU6FWagyWeMwSvUtGP6aVLV01U+Cgu3oxutSz9PVCeITarpnPfT9HGt
1doVPvxu3FTR8xtPg3KXKCxzf3J5z6Q6Hk0NhtwE+v24V+4nPa/K75hQQmRsODCQ7aDPm6jcEt5o
JlwygMKs+bFcz60LbxS+FYU1YdvrdfBWSOvKfa3GWhXkd2EddWf0Oqz31sp34XBFJ6JX7WturX1X
jexxZmEcyzTc24v96qC31rEm2wmdvhOm0YvGcH3zh/DPavXP8nK4Vf30ZuFCEb6864TBH8Itx79S
4V/f0y58CY+Ck93yB+EBDv/mYfo3/k8O5P54AeHn1f0uVzdR+fhL+W+oOHzZ297f331dK++yuHib
sdZc5Jl4bOyRsuMxopJLm+O+9p2DnFSFR7KtfM+a+OhKFWfaxeU/FUznR6kSrqfUpWNx7b5GfbVi
JdSaaR+GBqqVC6yFBdaqBda6unO14sY3FzoL1EW10uOtuslTI5OnXud64wl0qBmE4sIOqlPDQodJ
fmkYK/MJIyxpt3qwy/W6bgTnSo97Kj6qtiPi7NhPdIKGtcl25wEVXv5wL3i9lcJt2hFhj2c7TX+Z
nIYbn7m5tOjmvA/qywWH5VaL/cbqT0Z4J6ywUMNYFeUux7eU/mJldXlP2WrBJo8SlWuVtEIGKi5P
tj6/tRRyszPetXuv8q7vledOn0cdGQpJvjGU3IjJXqNIq2WHYbhnTdeW0+YbotmzKpO+b1Wkyh3M
zsnO7XjvzbWiC0p6oKXcLfCwTFHthd/kMO1cAifn1n/95f2lBa8+gY2Z01mRqrlHUO1znD3Sp99d
bWdl6rxVeYI71FrupIhY5rFKxcql1b28z+qSq9XSz6unaspDTDE5dWRVoeRXjgnut47OgtTRXZA6
egtSh16QOg4XpA61IHUcLUgd6YLUkS1IHfmC1FEsSB1mQeqIF6SOzwtSh12QOtyC1NFfkDr8gtQx
WJA6jhekjuGC1DFakDr+tSB1rCxIHc0FqWN1QepYW5A61hekjo0FqePlgtSxuSB1vFqQOhqc331Q
dfC8Gs+r8bza4j8fpXk+iuejeD5q4Z+PMjyvxvM4PI9zaR3tu6tj8ym84LH68+zxhYuDWG81nsIr
P7/yN5ghgbX5vPAzN+Uf3ZUvOw83T9Prvvxz6FIv2jIROiuM9aJvdW14QYEvW83TAsu/m4vVH1Es
+92ej/bf/e1g95effohcr+99+bYwiTnO/+v/AVBLAwQKAAAAAADBuRtHAAAAAAAAAAAAAAAABQAc
AGZhc3QvVVQJAAMp/N9VwfzfVXV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACuuRtHAAAAAAAAAAAA
AAAADAAcAGZhc3QvY2FudmFzL1VUCQADB/zfVcH831V1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA
rrkbR3/Pt0iXAAAATAEAACYAHABmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4
dFVUCQADB/zfVQf831V1eAsAAQT1AQAABBQAAADVjs0KwjAQhO8+xb6AoU3FQhChtOJBbx48iIdt
u9hAmi3ptv48valv4Wm+GYZhiukBOgedmTQzEeg5pslGOW7QQcO9wmFwpK5Un6wsUrIX8qIqmsnx
0Ee+bZNc6zvsDiFw2Bsoj7/WSy4kZ+upwrEzYP2MzrbQRgcYAr4NoIAjHAXYE5CjZQ76KQY1gWe/
/lBgtSr+4uUXUEsDBAoAAAAAAKq5G0cAAAAAAAAAAAAAAAAJABwAZmFzdC9jc3MvVVQJAAP/+99V
wfzfVXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACquRtH2wjTQjsAAAA/AAAAKQAcAGZhc3QvY3Nz
L2NvbXBhcmUtY29udGVudC1zdHlsZS1zdGRlcnIudHh0VVQJAAP/+99V//vfVXV4CwABBPUBAAAE
FAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OL
i1NT9LgAUEsDBAoAAAAAALG5G0cAAAAAAAAAAAAAAAAJABwAZmFzdC9kb20vVVQJAAMO/N9Vwfzf
VXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACxuRtHwUfdAuEAAABOAwAAMgAcAGZhc3QvZG9tL29i
amVjdC1wbHVnaW4taGlkZXMtcHJvcGVydGllcy1zdGRlcnIudHh0VVQJAAMO/N9VDvzfVXV4CwAB
BPUBAAAEFAAAAO2RMU/DMBCFZ/orbgSpcRK7bSqvtEMFCBBIDIjBca7pqfY5cmwQ/56A2GAEiYHp
LU/f6d4nq3pZVOtCNiCVrpVWC7GoarDBCzMMDsUDtheUxI3LPbFQUmzwGV0YPHJ6XFVNs9YNVu0T
bGMMEVwwHXEP5SW10cTXcscJI2OCd0Kx47G8zWSP9+QRPqHDR5TnYapyGssrY6/vvtQ0QDfdRT79
efYc5Gp5poEDjJmSaR0CedMj7EPmTgBsqIM9cadnJ7/xmjf2UIQ5tDnBSwzTgCbaAyW0KUecyW81
qX9Nf0vTG1BLAwQKAAAAAACtuRtHAAAAAAAAAAAAAAAAEAAcAGZhc3QvZG9tL1dpbmRvdy9VVAkA
Awb831XB/N9VdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAK25G0dEJ3tM1wAAAEYBAABFABwAZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1pbnZhbGlkLWNoYXJhY3RlcnMtaWdub3JlZC1h
Y3R1YWwudHh0VVQJAAMF/N9VBfzfVXV4CwABBPUBAAAEFAAAAG2QwWrDMBBE7/qKqc9FpA2UXnII
xYVCQgw29Kzaa0ugSEErVfjvu6HNobTXnTfDzA7EmZGtyXDh03g3YbQmmTFTYphEcEuIiSaYWU4w
qC5MseKS4oVSXiGmQlqpUwCXcSTme6yxCOc9mEgsTMkRI85oun3fNzgLZRYSco7exyrxHyuaoe0H
vJyO3aEd2kYy1ev+7YCqpziWM4Wsq5uyBdtYvFgID49bjXfDeN5s9B/aklts/g9/uuLXLqi42+1u
o5y8IhX6Vn7WzMX7tTOJpeRNV7+aKvUFUEsDBBQAAgAIAK25G0fKD0R7KwEAAFoCAABDABwAZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0eS1pbnZhbGlkLWNoYXJhY3RlcnMtaWdub3JlZC1k
aWZmLnR4dFVUCQADBfzfVQb831V1eAsAAQT1AQAABBQAAADFkMFuwjAMhu99Cq/XkoYNaeKCVLZ1
0jQm0IrWc2hcGik0KE5W+vZLoePC7lMkW8n/Ob9txhjwL6P9AYm/CCd4Xha8xN27cmN68kpL/oka
BSHXojfeMYfkmEXy2hGvBTkuzYGXqpWm4905saM1R7SuZ6r9FlpJVjXCisqhJab2rbEoGZ6OGF5k
6k4uSpLkX5sJVy/0uZUsAzabzCEZQpZFsG6BfFUh0QSCKXRKayBEECFahQSmhnizLIoYQvsk9hjI
2mhtOpSw6yHe5sUWntcfm1W+zeM0gnDYUAFdKk0Vpm5d2inpGlAE9w+zW7VBtW/cr5y8Lt9Wt8XU
GK+DJQ5QCqUgmE+n6S0+/vYH/zjwcHGHu8UCLlscjJ31OErjQmqvdb8RlsKcVyD6AVBLAwQUAAIA
CACtuRtH8Qz/sr0AAAAkAQAARwAcAGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktaW52
YWxpZC1jaGFyYWN0ZXJzLWlnbm9yZWQtZXhwZWN0ZWQudHh0VVQJAAMF/N9VBfzfVXV4CwABBPUB
AAAEFAAAAGWOMU7EMBBFe5/ikxpFAuotEEoH2kjJBYw9iS157dWMjZXbMwi2WNHOe3/0VpIqqMFW
xPxlU/RwwbJ1lVhgmRD3XJg87KYnWPSYfem4crkS1wM6ajQac86Q5hyJPOIoTb2UIEQ6EeJIgrJh
mF+XZcBFLbuTmltJqXR9/3lgWKdlxdv5Y36f1mnQn+ZHRx99ce1CuY49+hoQBU/PL/9goLiHek/x
cDrdkhVUbvRL/lq3ltIxWxZNuHFz12HMN1BLAwQUAAIACACtuRtHLEEzfWUIAAAHHgAASwAcAGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktaW52YWxpZC1jaGFyYWN0ZXJzLWlnbm9yZWQt
cHJldHR5LWRpZmYuaHRtbFVUCQADBvzfVQb831V1eAsAAQT1AQAABBQAAAC9WWtz27gV/e5fgdrT
9cyOSUmW5Ohhq5P4MdtptuupPc3HDkiCIhKQ0BKgJaXtf+/FiyIpUlIm2Trj8IEL4NznuaBvE5my
xdltQnAEl5RIjMIE54LIu8tCxt7kEl4LuWVkcTZjNPtyhWZvVFBJIvTvMwQ/kmykF5GQ51hSns1Q
xjMy10MBzyOSewGXkqczNFhtUAT3JJqf/ffMLGcXCTnj+Qxd9IdTPeY/UUYeaBzb8QCHX5Y5L7LI
c6LxRP2rbmR2EJzRCF1EUWTGYp5JL8YpZdsZSnnGxQqHFmCK8yUFyAOSor55teKgnNYjJww0eiMa
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
ffe96jqfH9f3plPfP7Rc/CiKmpxgzUm3NRXvoDX6090dMtyNKHSneUF+bCGfnoByegSlpdK4YGz7
rP74Gf0xWAf9E8B2CH037TQuuoOD/kj//fd/UEsDBAoAAAAAALe5G0cAAAAAAAAAAAAAAAAMABwA
ZmFzdC9ldmVudHMvVVQJAAMa/N9VwfzfVXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACwuRtHWCpn
dTkAAABDAAAAMgAcAGZhc3QvZXZlbnRzL2Rpc3BsYXktbm9uZS1vbi1mb2N1cy1jcmFzaC1zdGRl
cnIudHh0VVQJAAML/N9VC/zfVXV4CwABBPUBAAAEFAAAAMvNLy1O9c0vSw3JV0hLzMxJTVEoAbIy
81IUEhVKEovSU0sUyjJTyxUSSxQMDQwM9AzAQMcUzuQCAFBLAwQUAAIACAC2uRtHMLVt4zkAAABD
AAAAKwAcAGZhc3QvZXZlbnRzL21vdXNlLWZvY3VzLWltYWdlbWFwLXN0ZGVyci50eHRVVAkAAxj8
31UY/N9VdXgLAAEE9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTK
MlPLFRJLFMwNDPQMwEBH1xDO5gIAUEsDBBQAAgAIALe5G0fnrr1fOwAAAEMAAAAvABwAZmFzdC9l
dmVudHMvbW91c2V1cC1vdXRzaWRlLWRvY3VtZW50LXN0ZGVyci50eHRVVAkAAxr831Ua/N9VdXgL
AAEE9QEAAAQUAAAAy80vLU71zS9LDclXSEvMzElNUSgBsjLzUhQSFUoSi9JTSxTKMlPLFRJLFEwM
DAz0DMBAx9jCFMrkAgBQSwMECgAAAAAAr7kbRwAAAAAAAAAAAAAAAAwAHABmYXN0L2ZyYW1lcy9V
VAkAAwr831XB/N9VdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAK+5G0fbCNNCOwAAAD8AAAAvABwA
ZmFzdC9mcmFtZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3VzLXN0ZGVyci50eHRVVAkAAwr831UK
/N9VdXgLAAEE9QEAAAQUAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQz
ixWSUjPz0hUKivKTU4uLU1P0uABQSwMECgAAAAAAtrkbRwAAAAAAAAAAAAAAAAwAHABmYXN0L2lt
YWdlcy9VVAkAAxf831XB/N9VdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIALa5G0chj704MgAAADMA
AAAsABwAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdlLWNyb3AtYm94LXN0ZGVyci50eHRVVAkAAxf8
31UX/N9VdXgLAAEE9QEAAAQUAAAAc8tJLEl1SU3OT0m1UkgB0Zl56QqpRUX5RVYKmXnJ+UVFqckl
CimJJYkKyRmpydl6XABQSwMECgAAAAAAtbkbRwAAAAAAAAAAAAAAAAwAHABmYXN0L2xvYWRlci9V
VAkAAxb831XB/N9VdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAK+5G0fbCNNCOwAAAD8AAABSABwA
ZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUCQADCvzfVQr831V1eAsAAQT1AQAABBQAAABzLClJ
zS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBL
AwQUAAIACACxuRtH2wjTQjsAAAA/AAAAUwAcAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQJ
AAMN/N9VDfzfVXV4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRn
ZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBBQAAgAIALW5G0fbCNNCOwAAAD8AAAAtABwA
ZmFzdC9sb2FkZXIvcmVsb2FkLXBvbGljeS1kZWxlZ2F0ZS1zdGRlcnIudHh0VVQJAAMW/N9VFvzf
VXV4CwABBPUBAAAEFAAAAHMsKUnNLShRKMlXSM0rLE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sV
klIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAALm5G0cAAAAAAAAAAAAAAAANABwAZmFzdC9yZWdp
b25zL1VUCQADHvzfVcH831V1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAubkbRwAAAAAAAAAAAAAA
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
HABodHRwL3Rlc3RzL21pc2MvVVQJAANo/N9VwfzfVXV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADi
uRtHFTU1knoAAAC8AAAAKgAcAGh0dHAvdGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJy
LnR4dFVUCQADaPzfVWj831V1eAsAAQT1AQAABBQAAACNjkEOwyAMBO95hT9AIO2hFb8hxFUsGYyM
kfr8EuUD1V5WO4fZLKURJyOpgKqiET7ECKdZi95vj9caZrb4DiH4Qj17xS5DM3b/7WxuT4ej0kTN
DaV1bsBUEZ6AjAWrwU2XSeJdIcKoaZ8aE2BJx3+6Kn3k87qXLDEvP1BLAwQKAAAAAADHuRtHAAAA
AAAAAAAAAAAAFgAcAGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9VVAkAAzb831XB/N9VdXgLAAEE9QEA
AAQUAAAAUEsDBBQAAgAIAMe5G0fbCNNCOwAAAD8AAAA3ABwAaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L2ZhbGxiYWNrLWFuY2hvci1yZWxvYWQtc3RkZXJyLnR4dFVUCQADNvzfVTb831V1eAsAAQT1AQAA
BBQAAABzLClJzS0oUSjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNT
i4tTU/S4AFBLAwQKAAAAAADPuRtHAAAAAAAAAAAAAAAAFAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
VVQJAANF/N9VwfzfVXV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADPuRtHAAAAAAAAAAAAAAAAKgAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUCQADRfzfVcH831V1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAzrkbR2OqrGyCAAAAqAAAAEAAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQJAANE
/N9VRPzfVXV4CwABBPUBAAAEFAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXta
htnNcrbCmxepBFXRRHth0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xc
KmglMM4h0A/YAfg0aHpDbVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAz7kbR2OqrGyC
AAAAqAAAAFIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wt
dW5hZmZlY3RlZC1ieS1zdHlsZS1zcmMtMi1zdGRlcnIudHh0VVQJAANF/N9VRfzfVXV4CwABBPUB
AAAEFAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth
0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpD
bVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAz7kbR2BLZhCRAAAA+wEAAEUAHABodHRw
L3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0
ZGVyci50eHRVVAkAA0X831VF/N9VdXgLAAEE9QEAAAQUAAAA7Y4xDoMwDEV3TuELhASWVplh6NKe
AQVTIpkksp0Kbl869AYdq7++r/dC3kqkSWNOgMyZPSyREFbV4q3t+kvrznX+6pyzgqFy1MPuImYY
77dxMLuQmXOoGyY1X+DB8RlTu28EFBNCD0j4IUD0IJQVUZvz6V/Icro95EQHdK2DBSetjAITI0gt
JbPi3IR/6I9D31BLAwQUAAIACACMuRtH6op8QmEFAAAFDwAACgAcAGh0dHBkLmNvbmZVVAkAA8f7
31W4/N9VdXgLAAEE9QEAAAQUAAAArVdtb9s2EP6uX0G4MLAVk5y4cecNgQHXcZosSZ1ZTgMsSQ1a
oiTWEsmRVBJn6377jrTlF8kRCmwOYJPH57k7Ho/Hi0/kI5FjzjVqtHIlG45zyYP5KU0JCHQmWrdk
dkF1K9FahF4Kaw3nmoavAQQNG44fcEk+cCxfhSmDmBkEGJzQjPBco3cHB84FIaKf0keCRsy5ws/r
+Zj8mROlFTrcRhXUw47jXFHmCyyJb7cEQMPfkXQcX2OpdwCDlBJm1HYOzLQwc03kIKFpaMzBx0QF
h1c8zGE/ONfJyzThSk+zpSSlM/JMghYWOEhIuwXi6QblKb5NpyxI85DUcVeQEjHl8TTgLKJxHXeD
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
qqjWYfYCoaXXtwmXhCl6lfP7HPedDgnCims5g0tm0sX34ck4v+1+WakzOtiXXN1NITPOuw/ZtP0v
KLozn+znkjaMO6w/erhfQKnaemTOwCWeTCnYdv7bcTZkzKKQUFGfwiWNhHqG/uRyMnUYb45vpHHJ
onqOxoUE97vp1klB8wMTl0Rz5F1EsdWtIVNHfzzx5IYxT9uzXpfMrJ4KDLGFUYoOOdAnM7dECrqX
cthxb2Jc2IdCdVr3ZyrbRMTKZlwWhKvbqPSp1pWoZ60JXGYecypQEneXsa5uQke/RNghhlWwjbT1
XtZ1giJLOMBe18EDsrKcEdtiXWswdrcuHdNGL8hXyJxh9udereuoIIwvRJza6E0eQodNdDVb63oi
XQQQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAEQAAGQ/wokZqi4tG+6
05hLkXq5nLWVMxVNA/8AUEsDBBQAAgAIANi5G0elozSVIAEAAPsIAAA3ABwAaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1kaWZmLnBuZ1VUCQADWPzfVVj831V1
eAsAAQT1AQAABBQAAADrDPBz5+WS4mJgYOD19HAJYmBgVmBgYIrgAAow7Je9u4aBgeOQp4tjSAXj
21unuZoNBFgv3Ci3XxN/t351bMlTtQUPUnP6rDkNjdV3diRk6zGxcAgoODQwMI4yiGM06jJdnua5
+vkeceO4bmtzFi7uGKWtqUkSmUeVkjlTmIrkuEO3/1dWUPi/ebrVTUcF4QlntKw/VDx5wTRzcbXs
3Mj/7qInWFQ2nwr87nC3ldXI/bp71UPlBVvmOagpbI/jPMZxBSj9JE7cIZWlimlmQ0Xzl28HIhIb
fRzmtbJOcVugPIHzxOLgRkUmoNZ6z9pbNmdzZ9WvnstVrdE7GjujjFHGKGOUMcoY6gxtln3XPVnz
DtS2XAe1ajxd/VzWOSU0AQBQSwMEFAACAAgA2LkbR5gp9imZBQAAMRIAADkAHABpbXBvcnRlZC9t
b3ppbGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxsLWdyYWRpZW50LWRpZmZzLmh0bWxVVAkAA1j831VY
/N9VdXgLAAEE9QEAAAQUAAAArVhLb+M2EL77V3ANFJKRWE62t1gxkDoBGiDFFt1ciiAHWqJlIpSo
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
1ujtHveJbYdioDraz77d3ruqdx7P+j9QSwMEFAACAAgA6bkbR3zT2YMiAQAA7QEAADAAHABpbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0LWxheW91dC0wNi1leHBlY3RlZC5zdmdVVAkAA3X831V1/N9V
dXgLAAEE9QEAAAQUAAAAlZDNbsMgEITvfootvbQHjJuqUlQZS6kq9Vr1DQhsbBQMFmziOE9f7KRS
ciwH/jTzzUD9wHkB89j4CXQYpmjbjsAmMGisVoQGKAB1CN+HrbMaPkOvrC8vro5oeBdCR1Rkj6hD
3wefyhBbMSxys6jFGWMQL2UlCs6bok7HFk6980myK2Ecx3J8XYyrqqpEVrAmZ9RkyWHzgzuM6DXO
ZXSHeg876xwobyBRDHuELu+d9W0tLpZiducLVPErKmPR52cZySgqnwaVabQkZFWiMMA88TAobWmS
rGJiiRf3hEslPBGcJHurGGTpOi+74Ikne8brMXeTbOsOyK71JDtE9/R4E/7Mmg185LaZ9i+sD/4G
O6FzYfw789Ea6iRb3cHr+Tub4hdQSwMEFAACAAgA6bkbR7y3gqmqAQAA5CYAAC0AHABpbXBvcnRl
ZC9tb3ppbGxhL3N2Zy90ZXh0LXNjYWxlLTAyLWFjdHVhbC5wbmdVVAkAA3b831V2/N9VdXgLAAEE
9QEAAAQUAAAA6wzwc+flkuJiYGDg9fRwCWJgYFZgYGCK4GADiswqayoAUpolrhElyRmpydnFpbkM
5ibJpokmppZmZmmGRolJZuYmhhbJhmbGlklpiUaJlqZGdj6dDAxqZZ4ujiEVjG9vOnYddhBgcTz9
4n+8nPR+h+VHWDc+b5VyqvWsmfv+/ml5RiYWDgEFhwYGIIOpsXxDYhMDkpA9I+MjAbg8h8AJFhYP
t9wOJCWMj9hG5UflR+VH5UflR558o/TBes6Y61/j+T9JgcRmCFg899lzWZlTQOGBuIA5TB9QqYOa
goNRljOituHgGJUflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+V
H+TyBenebXKcc4rl/s6vV4LLbNB4ID7h6PpnZxE63VhZTrxo/5yDmGfvZmJK+bi60hgxrxLIyGj0
66HNbLj5BxY1MET+ybrnA7cyIcShoafO4rwakl0KDmL7Z5kLwydsJEQFFBbLn9vMCXe1DhfHqHNG
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
oHOaBZWthgpmduYFFTkCdO2NwcDY6jXYEwP8tvPqsNGGqFulBIXGI2Hg7T4YoQsU1JyLinwTjC4b
xybJ2nENG1zdM6L//O2wTMOgPfwq46P9CCxvfjJa6/QHsPoDs4tUU+sn49QufwBlM2Q9jEdHBweF
WDALXuYK2DEF6brME30IVioLnhWM6Ck4sHu6uOgxtuekZnaf5xj9OqqhC6JKkc+ac1lu+d7mRO/9
qSr288jqnLa2XZcKC6VXoMuMVGrJ8XQH1ncpWLUDUxDYbk729iipXBpBBDep+x2k8YHCHQgKFAba
S3DZzUjLSIoEPEIQu2g3aWVtUO1TjdiKVch0aYzNI0w+8OfEfRTRszGoUtHOYO3huZMQQSRRD5oS
si4njEUUmrhw4UM0N5OiqZZ1CKLnyHApMqNQpyYSJOM7gFNdqIJOtAYVXPnIhovDnXFt4zb8FwTu
fwlZbClLW6p2ll16qmsqpDKKI49ArW3Z9ZabLnAo8HnUp3RzgHUmonrCmYPEn8Pd9mufwsEocqfj
rHHmBtB3unJt0efITIjvdGMGlOfE3ztYLEohwIIdvkL1qs7SXHqHMN7A01PgDdq4akq/BA3f/OZR
zfPHR9m5nFVNraOendhWudl3E7B/jGgJ0Il4arzoGzbmXNaJXeaKiB1my7uZ1wI9zh3eXoeGum1v
UFF3WQCSV8uhVTJ2l/C8nE67vXfq3ctTJ8So9fQ0sUCORSdao9+8v07B6qfTGpo17SudBzv0Z15i
Wbd0g/ltHs5qM/P4A/2n5kJzWV8WLt1h/Nzow97IK+gbu8h8+7IO/eD+WKmALZ1VaM0v0OcR+sX5
YCTfqK1rRe7lURsrO8SN5lPt6Xl22ila89l2cLsVVoLgl8agybuPq/lyFtsR7WFqEl/3043Nh74h
9hwiXdT2LIF3sLvFwvPLvoAn9t9A/wFQSwMEFAACAAgA6bkbR8KBA7p9CQEAx28BAC8AHABpbXBv
cnRlZC9tb3ppbGxhL3N2Zy90ZXh0LXNjYWxlLTAyLWV4cGVjdGVkLnBuZ1VUCQADdvzfVXb831V1
eAsAAQT1AQAABBQAAADs/XlU0/e2/48fD6fSXpXU0paiCLVUc3pUIkaEkKktLdQKpJZWCiIoKFFQ
hkQMSUjQ2ooog5pqCGSoYo3IVI0IEcJQxpiQiEAQCAlDBgiQQEaSEPiiteece9f3+1uf9fndez/n
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
slvz1hOrvKNpfS0PN5dBImjBx1YS6Wend2uN2JLPUGKLjGsrdztgxW4i4eOjEs6P858M11QO08Ja
vNuhWHnpCDhBS5gahjZSpkTa4ZaDI00e7ivZ/CdCD70SBtmRI0ALvszD66ny+3vb1xm/ylxvBsyN
m8VpB4adjuu+Tne7fWga1LAhRQZUD4MCacEKd5cyMvi9d1e8tnVLT+KKjjg3wv5QdQsZSB1lO0+n
oLfThLv7ir9KizvGXGtj1pznR6ucmZfE7DEU/YCwyYCV9NuFhFoVJ0yOzNyYRiS5xTzu0B2VEJ+o
oIXvZ8XNpsW7HPnR8BXxhFXLo6zK25Ra+prd1YofFZ+lG0EZQ4W2q9EYGzd5qd02tt1ux2OKPvRF
xRyTjyuRDYPPAnfb7kZ+Ugeyy1o/95XpWdoQdihIN+BHI8ym0aW8I5WwW3R9YUr6+h2laQu3lvcT
07ZQ6DnV6RYKw3y+O92W42s40qJzn7DLF/ceGnFOIOTQqbaPOzACt9o0HDF6zWsLj3Tqa/z5lJBq
0XxN8cSVkaC+pEvBuxJPdMKUf3cT/Vz7bZPHwpXE3H+rtsB71xD9MXxyPL8sIBMv9vzJ2quYLrv1
IcFyc0aBpXxu2D2D1knXK6MePcRJ5kcpUJi2RYC/1XZw5MmOztlDzJCNNm4nUpyuxwd6uuv3Jl1b
15yXf4g4NPxLWybNMKptjIGFts37PdFy6DgiVaxCsKBu9zRknX4iIf2s7eM6cLK0rMU3pJ2mpOnb
ev0sdh+bgjTn06Lw780dNR4BoTJGD957WE9daUivh2XYQiJ4ziFgZyy10q/IMLLb9OLuMr24ozvn
9D2DZnXe14ihpdNuXoQTNjCHpPWx9+Y85bx1GzBa6jg9nXMRnbF/8nii3DurRZbwBZe8nTZ11ChB
z9InvpMmHN2j11jTtPuT455MD5/Lt6PGy6Zrt5aW0NeM+UFmAmB50NK6X2xq0RTxe1mfrQIfSuEx
MqD933n2e5JhzbwQnqIS3UdJlfZ/IpxJuLUSuNGG1P6WYhY22+acONuGeoiT36f0Ic8kzg4jNFfW
gBVVK5tvsSydbWilgj2JYSyJNevs7IfU/bo62B7FyJVLJ195bzz11XG7+46dk4NBYxkCj7DEE+Pq
vaHv7VC0XKmh9oUkPopptvOcmTvQ55fc7D5dOpO8g207/LZhILPhUabb7YT3d3nscFatnCk5SiPg
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
VcH831V1eAsAAQT1AQAABBQAAABQSwMEFAACAAgADrobRzkactGIAgAAYigAAEEAHAByZXRyaWVz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQtYWN0dWFsLnBu
Z1VUCQADvPzfVbz831V1eAsAAQT1AQAABBQAAADt1dFLU1EcB/Bzrte8TdauGFaj3K2EtWDmTJeB
uaM4dD6orQKxEeraKGVkamFoctSn0migPViwIpT0QaGHjQVRviRFD4EIUgYNNIRAplZshrnu0z0H
/AuC3325l+/v8Du/87lw77362iq9zqhDCOld1ZVuhNIUhIQGaY+aPL490K7eLF3Ohi7vNZ+3rfNW
AJ0p9rX4bAVeW7O/sLDEbrcVtTT7i4ttdq+/5Kz/tJe27rxDyPzLVVl+sRuvfX5531Mui+XT0VTq
+6Og48qIdHIl//W8uJaX2Nr5m/joEERJVghFWH0QhbeD+mwukJNmhRwWMFs0RtGHSX2WtkBRyFcE
dahDHepQ311fH4ylspK9ZebUWDzRs3nEdFQrtVtjp5TF52+qqNZh9gKhpde3CZeEKXqV8/sc950O
CcKKazmDS2bSxffhyTi/7X5ZqTM62Jdc3U0hM867D9m0/S8oujOf7OeSNow7rD96uF9Aqdp6ZM7A
JZ5MKdh2/ttxNmTMopBQUZ/CJY2Eeob+5HIydRhvjm+kccmieo7GhQT3u+nWSUHzAxOXRHPkXUSx
1a0hU0d/PPHkhjFP27Nel8ysngoMsYVRig450Cczt0QKupdy2HFvYlzYh0J1WvdnKttExMpmXBaE
q9uo9KnWlahnrQlcZh5zKlASd5exrm5CR79E2CGGVbCNtPVe1nWCIks4wF7XwQOyspwR22JdazB2
ty4d00YvyFfInGH2516t66ggjC9EnNroTR5Ch010NVvreiJdBBAAARAAARAAARAAARAAARAAARAA
ARAAARAAARAAARAAARAAARAAARAAARAAAZD/CiRmqLi0b7rTmEuRermctZUzFU0D/wBQSwMEFAAC
AAgADrobR6WjNJUgAQAA+wgAAD8AHAByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQv
c2ltcGxlLWZpbGwtZ3JhZGllbnQtZGlmZi5wbmdVVAkAA7z831W8/N9VdXgLAAEE9QEAAAQUAAAA
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
0RrqJFvdwev5O5viF1BLAwQUAAIACAAOuhtHvLeCqaoBAADkJgAANQAcAHJldHJpZXMvaW1wb3J0
ZWQvbW96aWxsYS9zdmcvdGV4dC1zY2FsZS0wMi1hY3R1YWwucG5nVVQJAAO8/N9VvPzfVXV4CwAB
BPUBAAAEFAAAAOsM8HPn5ZLiYmBg4PX0cAliYGBWYGBgiuBgA4rMKmsqAFKaJa4RJckZqcnZxaW5
DOYmyaaJJqaWZmZphkaJSWbmJoYWyYZmxpZJaYlGiZamRnY+nQwMamWeLo4hFYxvbzp2HXYQYHE8
/eJ/vJz0foflR1g3Pm+Vcqr1rJn7/v5peUYmFg4BBYcGBiCDqbF8Q2ITA5KQPSPjIwG4PIfACRYW
D7fcDiQljI/YRuVH5UflR+VH5UeefKP0wXrOmOtf4/k/SYHEZghYPPfZc1mZU0DhgbiAOUwfUKmD
moKDUZYzorbh4BiVH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5UflR+VH5Uf
lR/k8gXp3m1ynHOK5f7Or1eCy2zQeCA+4ej6Z2cROt1YWU68aP+cg5hn72ZiSvm4utIYMa8SyMho
9OuhzWy4+QcWNTBE/sm65wO3MiHEoaGnzuK8GpJdCg5i+2eZC8MnbCREBRQWy5/bzAl3tQ4Xx6hz
Rp0z6pxR54w6Z9Q5VHVOI/+vQL61LxccrWQAAk9XP5d1TglNAFBLAwQUAAIACAAOuhtHax+ERFFV
AAA1XgAAMwAcAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1zY2FsZS0wMi1kaWZm
LnBuZ1VUCQADvPzfVbz831V1eAsAAQT1AQAABBQAAADtvPVX1evC9Q3S3d0N0t3d3d0NSkg3SHd3
SLcopYB0d4eCdHd3rnct3Hufc577vON5/oD7pzXUoTIW85rfz5zzWkSqKEkjwePDg4GBIcnKSKiB
gUGQgoG90YEF/gZYB9FyFRiYCJishKiGJ/ix33vvLR5kC+UAnzLBuxVHK1k5WAmw/BT3BTltrKci
CfBAmOA18cyKk4CX/Q6rfDwb6KzA/33535f/8bImiPi0G1kDOKUPenrkpbklanVpvVRZfN4NgGpH
t7rsPsuLUFO4+ew5B3hcVX8MEJbeNra9DvBPNwL+WoOBufjrtQa+jazlYH9fB+C7s3ky4Oly44m2
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
AQtL6A/Y4D4dSQrdOUhgb6RirsJEnuNmQXPbF0HZ9K7MbfXciAxWT9mS5sKTbB/vtinQVmPhYiOE
GZTfWXGjsd9dLCx//Pp4sgnB2W6zRsmt1Nlmz8RB+IjGTfpquroXatvdkAAy26GF+S7YytJxR+wN
IMiYhrSzPene4FyIOZzauJtVEc4K9ZFzIxjKOeghYGmsimkMdg6IDIMdQZmBbhWuvU2qbubCZl/X
PFfruf45RPsoibyRzAPzcfqsMJyiPjzQKRRt3Umpuv9kZlwyM8hC/ErXg8jN8pbky9Huwx6aFgCx
cZqp72/lWGibvTvyiS1qKcJ8cd0k77YLI+t82KbBX4v6w0nF+Cc/D5uojy7Fymcy6Pn45jfFPfXb
+PX5aoPJw8f94st7P01yU15XBZ+mcsoSTMCyqOt3YQcIxM6e0kqzV6ESY2SxH9f2626N2wufka18
YiKsAoUs00bZKlnXDOQwieXVDjO/WOjLQVjSYvVMeFBZzwA/9tlPifIrSUvMxENXvOUGc8zd5HzH
Xic/QgSh5pZt7nF02Jbt9WWb9m+2WYBUSqZ8PBMWahzxbfpz2FrMDVWR+8vZz4u7rRwXSOl5/tmM
F7gwKf6Ikjdbx1fsPC0pe8HYBG66LxcJQA2HNcsS9G/2+ZtZxG/i0yBDta1lmf4MN+7j9m6HfS/C
HD9M/qwKdt5BCt5MvR1vzsZ41eaGoy+vJi3WgzRFMMqdkp8vuxEpq3nCgl8CavHng96SIxPfYNKw
9h2a0AyQydFke56+TNrp4fJ+eJRyjG6z4s5rE6ll816F27LVJlh53yasBKlW2xvSsjnZgSkNp+8g
70BJvTx99XJn216JjoHyyff1KS1B9ab89X36fIg65t5n96+n8fY6jp6KKPmwyqv5+ays5OgwI8aP
5ng+2H4346ffbMB/uP328OliywGkib/K2+llvSUaYuduQ5D57MUzjxYEuhLCO37yPf7cqz3cLh9X
2RrN7opKfXbyhplZuW2/rgIR7eJEjllEFwO6fRV7eFvoMXC0knI4j66JiDM0p/H5LmrgNh5Kt4QW
8ZOtybMGykJX1ma9H8XNA7lv/J/BBk8W83U8vrzet9VdF18H5u59nN+ncPv4++TLbkp/XeuSzYMl
XFuc28Ob+wfHzpv/J3nNOiph48aYer23vM3kET7bYpoxjniRdUuVvqAqWhd5/obyqefFQLnrPqeM
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
xJ4cHZEfsFB5VU1i7gmzEfDv7PxSn4dxLHTSC0zxAfHEdwTnJUuwzDR5cphQkcA+hGUTarMVRBOS
v4H0Vt7o0pCAD5K6LtqR/C2i9utv4ekRQLlvxdxkTo4nyaFOvJKpC8wUmtjtaG/XAhzilBYI75ut
rZp2IyUxkEBwKI5v+TQZFdYLBtJAjt+mhXwYQVNNRo9Yt6Mm2hjym9mg+0X8Cfyj6lIbvXzYDCuF
rkXPiY3z01kthjApiFyfvivNz5XILYRfKrei/uNPeyCjrDBtPZiQHB7wsrKh1kmkQAgWVSuhqYsN
YHN2GmlIIfpSRHQh7ncTyApD04gnBlo0SwIuJpzIblVL+ezFCpNzg4JCx3BsqPolaVAswU8pvosT
TO5Pn41wW5cVEtxgEJtaLHefOBFKrO7NwStifFS/QXMjbZs05KCzmspUd5LILSc1FIN1Rs9oK8kT
TJg9hN4CVxBY7p8Ot/H5QnXHUK3L2+2j4+fpF2/ugafj7f1wf3z97jOx3xb6rr1L2PnmDYsblD4/
sOfV8jwcZPK8tI3+eR1/PzafSp+v2fOm9P6Pk92/j/7tFXnaa5L49t4MHc/Hu39Wy882Vdw5bOOd
7Bz97S4+3xR+m351vzzrChubwm837Lfb+NtxhHG66+zdh/juUOOBu27Yr8czh3Zh+DR997p0Zvi0
Zk9HeYUELD7N9t0X7LinnQlT2ZkpJi9VKqmlM+vZnjfJngd/Pf52y347frXz9b2szobGPf+nw41/
exdlDipL0/dv2ftXicyF74/vz87c+9jxzIfCb9NzM+lv++fdc78cri/jjq8ftvUklbs+PQGTfb1h
pwcnrxfSRnpb6e61qczrwrvT+zqsNJ0zOKfJ4pyUe+Txch3dX86Xp/F4vo3X+6fJjl3FQdl1u3R9
cxXrwCl4urzd7tfj+cVORDjexzfxYNqly4FfA3o0f32fXuP5crw9jdfj5/Hp+Xp5EzfJDUUalnWA
GTN6O34b78enw316q08f9/F8YytpD1P5leKshKdw2aal5r9+XI+ixrCfVsdPg76Adoev49vl8/j4
ejw9sVcJdK24waa0ggQTuxWC7Lh3iHBDfspSgsafslqWgMEL8yZMl+9o8b/x/HixnH522I2Bw47z
g4qHrcnOhg7Lfp2IORQPuybvE/iYcR01C/Dx7d0vdrDhwHV8mUT5+lW8Zfa0fS4uCrKKO30b//Vx
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
AAAAABAA7UHuKAEAY3NzMy9VVAUAA9b731V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACTuRtH
AAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UEtKQEAY3NzMy9mbGV4Ym94L1VUBQAD1vvfVXV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAJO5G0cAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQXQpAQBj
c3MzL2ZsZXhib3gvY3Nzd2cvVVQFAAPW+99VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAk7kb
R5FkDYdSGgAAaEEAAEIAGAAAAAAAAAAAAKSBwSkBAGNzczMvZmxleGJveC9jc3N3Zy9jc3MtZmxl
eGJveC1oZWlnaHQtYW5pbWF0aW9uLXN0cmV0Y2gtYWN0dWFsLnBuZ1VUBQAD1vvfVXV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAJO5G0du7kY/jQAAAJQIAABAABgAAAAAAAAAAACkgY9EAQBjc3Mz
L2ZsZXhib3gvY3Nzd2cvY3NzLWZsZXhib3gtaGVpZ2h0LWFuaW1hdGlvbi1zdHJldGNoLWRpZmYu
cG5nVVQFAAPW+99VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAk7kbR78HN1ycBQAASxIAAEIA
GAAAAAAAAQAAAKSBlkUBAGNzczMvZmxleGJveC9jc3N3Zy9jc3MtZmxleGJveC1oZWlnaHQtYW5p
bWF0aW9uLXN0cmV0Y2gtZGlmZnMuaHRtbFVUBQAD1vvfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAJO5G0eI+pTaawEAAEsCAABFABgAAAAAAAEAAACkga5LAQBjc3MzL2ZsZXhib3gvY3Nzd2cv
Y3NzLWZsZXhib3gtaGVpZ2h0LWFuaW1hdGlvbi1zdHJldGNoLWV4cGVjdGVkLmh0bWxVVAUAA9b7
31V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACTuRtH0MpHeVMaAABoQQAARAAYAAAAAAAAAAAA
pIGYTQEAY3NzMy9mbGV4Ym94L2Nzc3dnL2Nzcy1mbGV4Ym94LWhlaWdodC1hbmltYXRpb24tc3Ry
ZXRjaC1leHBlY3RlZC5wbmdVVAUAA9b731V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAMuhtH
Laua8RcnAAA5JwsADQAYAAAAAAABAAAApIFpaAEAZXJyb3JfbG9nLnR4dFVUBQADuPzfVXV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAMG5G0cAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQcePAQBm
YXN0L1VUBQADKfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAK65G0cAAAAAAAAAAAAAAAAM
ABgAAAAAAAAAEADtQQaQAQBmYXN0L2NhbnZhcy9VVAUAAwf831V1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACuuRtHf8+3SJcAAABMAQAAJgAYAAAAAAABAAAApIFMkAEAZmFzdC9jYW52YXMvY2Fu
dmFzLWxpbmVEYXNoLXN0ZGVyci50eHRVVAUAAwf831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AACquRtHAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UFDkQEAZmFzdC9jc3MvVVQFAAP/+99VdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqrkbR9sI00I7AAAAPwAAACkAGAAAAAAAAQAAAKSBhpEB
AGZhc3QvY3NzL2NvbXBhcmUtY29udGVudC1zdHlsZS1zdGRlcnIudHh0VVQFAAP/+99VdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAsbkbRwAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BJJIBAGZh
c3QvZG9tL1VUBQADDvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALG5G0fBR90C4QAAAE4D
AAAyABgAAAAAAAEAAACkgWeSAQBmYXN0L2RvbS9vYmplY3QtcGx1Z2luLWhpZGVzLXByb3BlcnRp
ZXMtc3RkZXJyLnR4dFVUBQADDvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAK25G0cAAAAA
AAAAAAAAAAAQABgAAAAAAAAAEADtQbSTAQBmYXN0L2RvbS9XaW5kb3cvVVQFAAMG/N9VdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgArbkbR0Qne0zXAAAARgEAAEUAGAAAAAAAAQAAAKSB/pMBAGZh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktaW52YWxpZC1jaGFyYWN0ZXJzLWlnbm9yZWQt
YWN0dWFsLnR4dFVUBQADBfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAK25G0fKD0R7KwEA
AFoCAABDABgAAAAAAAEAAACkgVSVAQBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnR5LWlu
dmFsaWQtY2hhcmFjdGVycy1pZ25vcmVkLWRpZmYudHh0VVQFAAMF/N9VdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgArbkbR/EM/7K9AAAAJAEAAEcAGAAAAAAAAQAAAKSB/JYBAGZhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcHJvcGVydHktaW52YWxpZC1jaGFyYWN0ZXJzLWlnbm9yZWQtZXhwZWN0ZWQu
dHh0VVQFAAMF/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArbkbRyxBM31lCAAABx4AAEsA
GAAAAAAAAQAAAKSBOpgBAGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydHktaW52YWxpZC1j
aGFyYWN0ZXJzLWlnbm9yZWQtcHJldHR5LWRpZmYuaHRtbFVUBQADBvzfVXV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAALe5G0cAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQSShAQBmYXN0L2V2ZW50
cy9VVAUAAxr831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACwuRtHWCpndTkAAABDAAAAMgAY
AAAAAAABAAAApIFqoQEAZmFzdC9ldmVudHMvZGlzcGxheS1ub25lLW9uLWZvY3VzLWNyYXNoLXN0
ZGVyci50eHRVVAUAAwv831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC2uRtHMLVt4zkAAABD
AAAAKwAYAAAAAAABAAAApIEPogEAZmFzdC9ldmVudHMvbW91c2UtZm9jdXMtaW1hZ2VtYXAtc3Rk
ZXJyLnR4dFVUBQADGPzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALe5G0fnrr1fOwAAAEMA
AAAvABgAAAAAAAEAAACkga2iAQBmYXN0L2V2ZW50cy9tb3VzZXVwLW91dHNpZGUtZG9jdW1lbnQt
c3RkZXJyLnR4dFVUBQADGvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAK+5G0cAAAAAAAAA
AAAAAAAMABgAAAAAAAAAEADtQVGjAQBmYXN0L2ZyYW1lcy9VVAUAAwr831V1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACvuRtH2wjTQjsAAAA/AAAALwAYAAAAAAABAAAApIGXowEAZmFzdC9mcmFt
ZXMvZnJhbWUtZGlzcGxheS1ub25lLWZvY3VzLXN0ZGVyci50eHRVVAUAAwr831V1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAC2uRtHAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UE7pAEAZmFzdC9p
bWFnZXMvVVQFAAMX/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAtrkbRyGPvTgyAAAAMwAA
ACwAGAAAAAAAAQAAAKSBgaQBAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRl
cnIudHh0VVQFAAMX/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAtbkbRwAAAAAAAAAAAAAA
AAwAGAAAAAAAAAAQAO1BGaUBAGZhc3QvbG9hZGVyL1VUBQADFvzfVXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAK+5G0fbCNNCOwAAAD8AAABSABgAAAAAAAEAAACkgV+lAQBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS1zdGRlcnIudHh0VVQFAAMK/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsbkbR9sI00I7
AAAAPwAAAFMAGAAAAAAAAQAAAKSBJqYBAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0
LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQFAAMN
/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAtbkbR9sI00I7AAAAPwAAAC0AGAAAAAAAAQAA
AKSB7qYBAGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdhdGUtc3RkZXJyLnR4dFVUBQAD
FvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALm5G0cAAAAAAAAAAAAAAAANABgAAAAAAAAA
EADtQZCnAQBmYXN0L3JlZ2lvbnMvVVQFAAMe/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
ubkbRwAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1B16cBAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcv
VVQFAAMe/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAubkbRzkBy91AAAAAegAAADUAGAAA
AAAAAQAAAKSBKKgBAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xsLWFic3Bvcy1z
dGRlcnIudHh0VVQFAAMe/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAubkbRzkBy91AAAAA
egAAAC4AGAAAAAAAAQAAAKSB16gBAGZhc3QvcmVnaW9ucy9zY3JvbGxpbmcvd2hlZWwtc2Nyb2xs
LXN0ZGVyci50eHRVVAUAAx7831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC5uRtH5IrHQzwA
AAA9AAAAQAAYAAAAAAABAAAApIF/qQEAZmFzdC9yZWdpb25zL3Njcm9sbGluZy93aGVlbC1zY3Jv
bGxhYmxlLXNpbmdsZS1yZWdpb24tc3RkZXJyLnR4dFVUBQADHvzfVXV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAMG5G0cAAAAAAAAAAAAAAAAKABgAAAAAAAAAEADtQTWqAQBmYXN0L3RleHQvVVQF
AAMp/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAwbkbR/Q4kPBNAQAAygMAACQAGAAAAAAA
AQAAAKSBeaoBAGZhc3QvdGV4dC9mb250LXdlaWdodHMtemgtc3RkZXJyLnR4dFVUBQADKfzfVXV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMC5G0cAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQSSs
AQBmYXN0L3hzbC9VVAUAAyj831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC9uRtHcv1l8oUA
AADpAAAAJQAYAAAAAAABAAAApIFnrAEAZmFzdC94c2wvdHJhbnNmb3JtLXhoci1kb2Mtc3RkZXJy
LnR4dFVUBQADJvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAL25G0cFj1WOkwAAANACAAAn
ABgAAAAAAAEAAACkgUutAQBmYXN0L3hzbC94c2x0LWJhZC1pbXBvcnQtdXJpLXN0ZGVyci50eHRV
VAUAAyb831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC9uRtHz49mDlAAAACgAAAAJAAYAAAA
AAABAAAApIE/rgEAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0VVQFAAMm/N9V
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAwLkbR4FKd61LAAAArAAAADQAGAAAAAAAAQAAAKSB
7a4BAGZhc3QveHNsL3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50LWNyYXNoLXN0ZGVyci50eHRV
VAUAAyj831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAQuhtHe+YVqA8CAAAdBQAAEQAYAAAA
AAABAAAApIGmrwEAZnVsbF9yZXN1bHRzLmpzb25VVAUAA8D831V1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAADHuRtHAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UEAsgEAaHR0cC9VVAUAAzb831V1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADiuRtHAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UE/
sgEAaHR0cC90ZXN0cy9VVAUAA2j831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADiuRtHAAAA
AAAAAAAAAAAAEAAYAAAAAAAAABAA7UGEsgEAaHR0cC90ZXN0cy9taXNjL1VUBQADaPzfVXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAOK5G0cVNTWSegAAALwAAAAqABgAAAAAAAEAAACkgc6yAQBo
dHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAUAA2j831V1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADHuRtHAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA7UGsswEAaHR0
cC90ZXN0cy9uYXZpZ2F0aW9uL1VUBQADNvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMe5
G0fbCNNCOwAAAD8AAAA3ABgAAAAAAAEAAACkgfyzAQBodHRwL3Rlc3RzL25hdmlnYXRpb24vZmFs
bGJhY2stYW5jaG9yLXJlbG9hZC1zdGRlcnIudHh0VVQFAAM2/N9VdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAz7kbRwAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BqLQBAGh0dHAvdGVzdHMvc2Vj
dXJpdHkvVVQFAANF/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAz7kbRwAAAAAAAAAAAAAA
ACoAGAAAAAAAAAAQAO1B9rQBAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L1VUBQADRfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAM65G0djqqxsggAAAKgAAABA
ABgAAAAAAAEAAACkgVq1AQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAANE/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAz7kbR2OqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBVrYBAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVy
ci50eHRVVAUAA0X831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADPuRtHYEtmEJEAAAD7AQAA
RQAYAAAAAAABAAAApIFktwEAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1
bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAANF/N9VdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAjLkbR+qKfEJhBQAABQ8AAAoAGAAAAAAAAQAAAKSBdLgBAGh0dHBkLmNvbmZVVAUA
A8f731V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADYuRtHAAAAAAAAAAAAAAAACQAYAAAAAAAA
ABAA7UEZvgEAaW1wb3J0ZWQvVVQFAANY/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA2Lkb
RwAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BXL4BAGltcG9ydGVkL21vemlsbGEvVVQFAANY/N9V
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA6bkbRwAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1B
p74BAGltcG9ydGVkL21vemlsbGEvc3ZnL1VUBQADdvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAANi5G0cAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQfa+AQBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0L1VUBQADWPzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANi5G0c5GnLRiAIAAGIo
AAA5ABgAAAAAAAAAAACkgUq/AQBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxs
LWdyYWRpZW50LWFjdHVhbC5wbmdVVAUAA1j831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADY
uRtHpaM0lSABAAD7CAAANwAYAAAAAAAAAAAApIFFwgEAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1kaWZmLnBuZ1VUBQADWPzfVXV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANi5G0eYKfYpmQUAADESAAA5ABgAAAAAAAEAAACkgdbDAQBpbXBvcnRlZC9tb3pp
bGxhL3N2Zy90ZXh0L3NpbXBsZS1maWxsLWdyYWRpZW50LWRpZmZzLmh0bWxVVAUAA1j831V1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADYuRtHy0/t+scCAAAEJwAAOwAYAAAAAAAAAAAApIHiyQEA
aW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1leHBlY3RlZC5w
bmdVVAUAA1j831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADYuRtHxPnblFMBAABcAgAAOwAY
AAAAAAABAAAApIEezQEAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFk
aWVudC1leHBlY3RlZC5zdmdVVAUAA1j831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADpuRtH
/0zIiOQZAABpPwAALgAYAAAAAAAAAAAApIHmzgEAaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1s
YXlvdXQtMDYtYWN0dWFsLnBuZ1VUBQADdfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOm5
G0eZ6o09AwIAAH8JAAAsABgAAAAAAAAAAACkgTLpAQBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
LWxheW91dC0wNi1kaWZmLnBuZ1VUBQADdfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAOm5
G0fg+vcglAUAACASAAAuABgAAAAAAAEAAACkgZvrAQBpbXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0
LWxheW91dC0wNi1kaWZmcy5odG1sVVQFAAN1/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
6bkbR020CATGGQAAVz8AADAAGAAAAAAAAAAAAKSBl/EBAGltcG9ydGVkL21vemlsbGEvc3ZnL3Rl
eHQtbGF5b3V0LTA2LWV4cGVjdGVkLnBuZ1VUBQADdfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAOm5G0d809mDIgEAAO0BAAAwABgAAAAAAAEAAACkgccLAgBpbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0LWxheW91dC0wNi1leHBlY3RlZC5zdmdVVAUAA3X831V1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADpuRtHvLeCqaoBAADkJgAALQAYAAAAAAAAAAAApIFTDQIAaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1zY2FsZS0wMi1hY3R1YWwucG5nVVQFAAN2/N9VdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA6bkbR2sfhERRVQAANV4AACsAGAAAAAAAAAAAAKSBZA8CAGltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQtc2NhbGUtMDItZGlmZi5wbmdVVAUAA3b831V1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADpuRtH1tc65JIFAAAeEgAALQAYAAAAAAABAAAApIEaZQIAaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1zY2FsZS0wMi1kaWZmcy5odG1sVVQFAAN2/N9VdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA6bkbR8KBA7p9CQEAx28BAC8AGAAAAAAAAAAAAKSBE2sCAGltcG9ydGVkL21vemls
bGEvc3ZnL3RleHQtc2NhbGUtMDItZXhwZWN0ZWQucG5nVVQFAAN2/N9VdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA6bkbR+b5GR0IAQAAoQEAAC8AGAAAAAAAAQAAAKSB+XQDAGltcG9ydGVkL21v
emlsbGEvc3ZnL3RleHQtc2NhbGUtMDItZXhwZWN0ZWQuc3ZnVVQFAAN2/N9VdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAA07kbRwAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BanYDAGluc3BlY3Rv
ci9VVAUAA03831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADTuRtHAAAAAAAAAAAAAAAADgAY
AAAAAAAAABAA7UGudgMAaW5zcGVjdG9yL2Nzcy9VVAUAA03831V1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADTuRtHzOnUmk8AAACaAAAALQAYAAAAAAABAAAApIH2dgMAaW5zcGVjdG9yL2Nzcy9t
b2RpZnktcnVsZS1zZWxlY3Rvci1zdGRlcnIudHh0VVQFAANN/N9VdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAA+bkbRwAAAAAAAAAAAAAAAAYAGAAAAAAAAAAQAO1BrHcDAG1lZGlhL1VUBQADlvzf
VXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPq5G0cAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADt
Qex3AwBtZWRpYS90cmFjay9VVAUAA5f831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAIAAAD5uRtH
/ic44DUAAAA1AAAAKgAYAAAAAAABAAAApIEyeAMAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1z
dHlsZS1hY3R1YWwudHh0VVQFAAOW/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA+bkbR/1q
8zbFAQAAbgMAACgAGAAAAAAAAQAAAKSBy3gDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5
bGUtZGlmZi50eHRVVAUAA5b831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD5uRtHDPrk6jYB
AAAzAgAALAAYAAAAAAABAAAApIHyegMAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1l
eHBlY3RlZC50eHRVVAUAA5b831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD6uRtH15yTd+0I
AAClJAAAMAAYAAAAAAABAAAApIGOfAMAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1w
cmV0dHktZGlmZi5odG1sVVQFAAOX/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA4LkbRwAA
AAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1B5YUDAHBsdWdpbnMvVVQFAANj/N9VdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA4LkbR+5dckWGAAAA9gAAADsAGAAAAAAAAQAAAKSBJ4YDAHBsdWdpbnMv
bnBwLXNldC13aW5kb3ctY2FsbGVkLWR1cmluZy1kZXN0cnVjdGlvbi1zdGRlcnIudHh0VVQFAANj
/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA17kbR7SdURZIAgAAgwsAACsAGAAAAAAAAQAA
AKSBIocDAHB5d2Vic29ja2V0LndzLmxvZy0yN0F1ZzIwMTUtMjMxMjI0LWVyci50eHRVVAUAA1b8
31V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADXuRtHyHN7lwkBAACPAgAAKwAYAAAAAAABAAAA
pIHPiQMAcHl3ZWJzb2NrZXQud3MubG9nLTI3QXVnMjAxNS0yMzEyMjQtb3V0LnR4dFVUBQADVvzf
VXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABC6G0fkfEWjniYAANukAAAMABgAAAAAAAEAAACk
gT2LAwByZXN1bHRzLmh0bWxVVAUAA8D831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAPuhtH
AAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UEhsgMAcmV0cmllcy9VVAUAA77831V1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAAOuhtHAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UFjsgMAcmV0cmll
cy9pbXBvcnRlZC9VVAUAA7z831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAOuhtHAAAAAAAA
AAAAAAAAGQAYAAAAAAAAABAA7UGusgMAcmV0cmllcy9pbXBvcnRlZC9tb3ppbGxhL1VUBQADvPzf
VXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAA66G0cAAAAAAAAAAAAAAAAdABgAAAAAAAAAEADt
QQGzAwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL1VUBQADvPzfVXV4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAA66G0cAAAAAAAAAAAAAAAAiABgAAAAAAAAAEADtQVizAwByZXRyaWVzL2lt
cG9ydGVkL21vemlsbGEvc3ZnL3RleHQvVVQFAAO8/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgADrobRzkactGIAgAAYigAAEEAGAAAAAAAAAAAAKSBtLMDAHJldHJpZXMvaW1wb3J0ZWQvbW96
aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1hY3R1YWwucG5nVVQFAAO8/N9VdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADrobR6WjNJUgAQAA+wgAAD8AGAAAAAAAAAAAAKSBt7YD
AHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFkaWVudC1k
aWZmLnBuZ1VUBQADvPzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA66G0eYKfYpmQUAADES
AABBABgAAAAAAAEAAACkgVC4AwByZXRyaWVzL2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQvc2lt
cGxlLWZpbGwtZ3JhZGllbnQtZGlmZnMuaHRtbFVUBQADvPzfVXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAA66G0fLT+36xwIAAAQnAABDABgAAAAAAAAAAACkgWS+AwByZXRyaWVzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQvc2ltcGxlLWZpbGwtZ3JhZGllbnQtZXhwZWN0ZWQucG5nVVQFAAO8
/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADrobR8T525RTAQAAXAIAAEMAGAAAAAAAAQAA
AKSBqMEDAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC9zaW1wbGUtZmlsbC1ncmFk
aWVudC1leHBlY3RlZC5zdmdVVAUAA7z831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAOuhtH
/0zIiOQZAABpPwAANgAYAAAAAAAAAAAApIF4wwMAcmV0cmllcy9pbXBvcnRlZC9tb3ppbGxhL3N2
Zy90ZXh0LWxheW91dC0wNi1hY3R1YWwucG5nVVQFAAO8/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgADrobR5nqjT0DAgAAfwkAADQAGAAAAAAAAAAAAKSBzN0DAHJldHJpZXMvaW1wb3J0ZWQv
bW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYtZGlmZi5wbmdVVAUAA7z831V1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAOuhtH4Pr3IJQFAAAgEgAANgAYAAAAAAABAAAApIE94AMAcmV0cmllcy9p
bXBvcnRlZC9tb3ppbGxhL3N2Zy90ZXh0LWxheW91dC0wNi1kaWZmcy5odG1sVVQFAAO8/N9VdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADrobR020CATGGQAAVz8AADgAGAAAAAAAAAAAAKSBQeYD
AHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYtZXhwZWN0ZWQucG5n
VVQFAAO8/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADrobR3zT2YMiAQAA7QEAADgAGAAA
AAAAAQAAAKSBeQAEAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1sYXlvdXQtMDYt
ZXhwZWN0ZWQuc3ZnVVQFAAO8/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADrobR7y3gqmq
AQAA5CYAADUAGAAAAAAAAAAAAKSBDQIEAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4
dC1zY2FsZS0wMi1hY3R1YWwucG5nVVQFAAO8/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
DrobR2sfhERRVQAANV4AADMAGAAAAAAAAAAAAKSBJgQEAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxs
YS9zdmcvdGV4dC1zY2FsZS0wMi1kaWZmLnBuZ1VUBQADvPzfVXV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAA66G0fW1zrkkgUAAB4SAAA1ABgAAAAAAAEAAACkgeRZBAByZXRyaWVzL2ltcG9ydGVk
L21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDItZGlmZnMuaHRtbFVUBQADvPzfVXV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAA66G0fCgQO6fQkBAMdvAQA3ABgAAAAAAAAAAACkgeVfBAByZXRyaWVz
L2ltcG9ydGVkL21vemlsbGEvc3ZnL3RleHQtc2NhbGUtMDItZXhwZWN0ZWQucG5nVVQFAAO8/N9V
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADrobR+b5GR0IAQAAoQEAADcAGAAAAAAAAQAAAKSB
02kFAHJldHJpZXMvaW1wb3J0ZWQvbW96aWxsYS9zdmcvdGV4dC1zY2FsZS0wMi1leHBlY3RlZC5z
dmdVVAUAA7z831V1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAPuhtHAAAAAAAAAAAAAAAADAAY
AAAAAAAAABAA7UFMawUAcmV0cmllcy9zdmcvVVQFAAO+/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAELobRwAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1BkmsFAHJldHJpZXMvc3ZnL2N1c3Rv
bS9VVAUAA7/831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPuhtHeVxRIFRvAACW9gAANAAY
AAAAAAAAAAAApIHfawUAcmV0cmllcy9zdmcvY3VzdG9tL2hpZHBpLW1hc2tpbmctY2xpcHBpbmct
YWN0dWFsLnBuZ1VUBQADvvzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABC6G0d9GQnYuS4A
AENNAAAyABgAAAAAAAAAAACkgaHbBQByZXRyaWVzL3N2Zy9jdXN0b20vaGlkcGktbWFza2luZy1j
bGlwcGluZy1kaWZmLnBuZ1VUBQADv/zfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABC6G0dq
DXankgUAACYSAAA0ABgAAAAAAAEAAACkgcYKBgByZXRyaWVzL3N2Zy9jdXN0b20vaGlkcGktbWFz
a2luZy1jbGlwcGluZy1kaWZmcy5odG1sVVQFAAO//N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAD7obR9HjqtgnWQAAbOcAADYAGAAAAAAAAAAAAKSBxhAGAHJldHJpZXMvc3ZnL2N1c3RvbS9o
aWRwaS1tYXNraW5nLWNsaXBwaW5nLWV4cGVjdGVkLnBuZ1VUBQADvvzfVXV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIABC6G0dYQtmEzwAAAI0BAAA2ABgAAAAAAAEAAACkgV1qBgByZXRyaWVzL3N2
Zy9jdXN0b20vaGlkcGktbWFza2luZy1jbGlwcGluZy1leHBlY3RlZC5zdmdVVAUAA7/831V1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAADhuRtHAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGcawYA
c2Nyb2xsYmFycy9VVAUAA2b831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADhuRtHbr0jYTkA
AABCAAAAOwAYAAAAAAABAAAApIHhawYAc2Nyb2xsYmFycy9zY3JvbGxldmVudC1pZnJhbWUtbm8t
c2Nyb2xsaW5nLXdoZWVsLXN0ZGVyci50eHRVVAUAA2b831V1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAQuhtH8O0qOFQqBwDlYicACgAYAAAAAAABAAAApIGPbAYAc3RhdHMuanNvblVUBQADwPzf
VXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPK5G0cAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADt
QSeXDQBzdmcvVVQFAAOI/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA77kbRwAAAAAAAAAA
AAAAAA0AGAAAAAAAAAAQAO1BZZcNAHN2Zy9hcy1pbWFnZS9VVAUAA4H831V1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADvuRtH2wjTQjsAAAA/AAAAPwAYAAAAAAABAAAApIGslw0Ac3ZnL2FzLWlt
YWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNhYmxlZC1zdGRlcnIudHh0VVQF
AAOB/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAACbobRwAAAAAAAAAAAAAAAAsAGAAAAAAA
AAAQAO1BYJgNAHN2Zy9jdXN0b20vVVQFAAOx/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
8rkbR3lcUSBUbwAAlvYAACwAGAAAAAAAAAAAAKSBpZgNAHN2Zy9jdXN0b20vaGlkcGktbWFza2lu
Zy1jbGlwcGluZy1hY3R1YWwucG5nVVQFAAOI/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
8rkbR30ZCdi5LgAAQ00AACoAGAAAAAAAAAAAAKSBXwgOAHN2Zy9jdXN0b20vaGlkcGktbWFza2lu
Zy1jbGlwcGluZy1kaWZmLnBuZ1VUBQADiPzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPK5
G0dqDXankgUAACYSAAAsABgAAAAAAAEAAACkgXw3DgBzdmcvY3VzdG9tL2hpZHBpLW1hc2tpbmct
Y2xpcHBpbmctZGlmZnMuaHRtbFVUBQADiPzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAPK5
G0fR46rYJ1kAAGznAAAuABgAAAAAAAAAAACkgXQ9DgBzdmcvY3VzdG9tL2hpZHBpLW1hc2tpbmct
Y2xpcHBpbmctZXhwZWN0ZWQucG5nVVQFAAOI/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
8rkbR1hC2YTPAAAAjQEAAC4AGAAAAAAAAQAAAKSBA5cOAHN2Zy9jdXN0b20vaGlkcGktbWFza2lu
Zy1jbGlwcGluZy1leHBlY3RlZC5zdmdVVAUAA4j831V1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAGuhtHIfT28DoAAABCAAAAMAAYAAAAAAABAAAApIE6mA4Ac3ZnL2N1c3RvbS91c2UtaW52YWxp
ZGF0ZS1jbGljay1jcmFzaC1zdGRlcnIudHh0VVQFAAOs/N9VdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgACbobR/xe+LGXAAAATAEAACQAGAAAAAAAAQAAAKSB3pgOAHN2Zy9jdXN0b20vemVyby1k
YXNoYXJyYXktc3RkZXJyLnR4dFVUBQADsfzfVXV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPC5
G0cAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQdOZDgBzdmcvc3Ryb2tlL1VUBQADg/zfVXV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAPC5G0crcTOOkgAAAKYAAAAlABgAAAAAAAEAAACkgRiaDgBz
dmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIudHh0VVQFAAOD/N9VdXgLAAEE9QEAAAQU
AAAAUEsFBgAAAACKAIoAmjoAAAmbDgAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260203</attachid>
            <date>2015-08-28 19:33:27 -0700</date>
            <delta_ts>2015-08-28 19:38:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828193312.patch</filename>
            <type>text/plain</type>
            <size>706210</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA2NGE1N2JlYzRjNmMz
ZGM5ZGQ5YjU3MWY5Nzg3NWI0NzI5OTQzMi4uOWJjMjQ5NjFhM2JhOTliMjlhMjIzMWQ1M2I1NDVm
NjM4OTI0ODlkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmUgdXNpbmcgR3JhcGhp
Y3NDb250ZXh0KnMgdGhyb3VnaG91dCBvdXIgcmVuZGVyaW5nIGNvZGUuIEhvd2V2ZXIsCisgICAg
ICAgIHRoZXNlIGNvbnRleHRzIGNhbid0IGJlIG51bGxwdHIuIFRoaXMgcGF0Y2ggbWlncmF0ZXMg
dXNlcnMgdG8KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JnMuCisKKyAgICAgICAgVGhpcyBpcyBh
IHB1cmVseSBtZWNoYW5pY2FsIGNoYW5nZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpp
bWFnZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhcmV0QmFzZTo6cGFpbnRDYXJldCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdDYXJldCk6CisgICAgICAgICog
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6ZHJhd2luZ0NvbnRleHQpOgorICAg
ICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50
ZXJuYWwpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZHJhd0lt
YWdlSW50b0J1ZmZlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQpOgorICAgICAgICAq
IHBhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RG
cmFtZVJlY3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBh
aW50Q29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6d2lsbFBhaW50
Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6c3Bvb2xQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlByaW50Q29udGV4dDo6c3Bvb2xSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpwYWludFBhblNjcm9sbEljb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRPdmVy
aGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFuZFBh
aW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
OjpkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Nj
cm9sbGJhclRoZW1lQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vVGhlbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9UaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWU6OnBhaW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29h
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpdENvbnRleHRUb0JveCk6CisgICAgICAgIChXZWJD
b3JlOjpUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVGhlbWVDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdDcm9zc2ZhZGVTdWJpbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3Jl
OjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFz
aXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd1NpbXBsZVRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yU2lt
cGxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0dseXBoQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudElt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0VtcGhhc2lzTWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzQ29tcGF0aWJsZVdpdGhC
dWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
OmZpbGxXaXRoU29saWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2
YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OnBh
aW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6YWRqdXN0Qmx1clJh
ZGl1cyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93QnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmJlZ2luU2hhZG93TGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRX
aXRoSW1hZ2VHZW5lcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZHJhd0dseXBoc1RvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3R2x5cGhzU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxDdXJyZW50Q2Fpcm9QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0FuZEZpbGxD
dXJyZW50Q2Fpcm9QYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd0FuZFN0cm9rZUN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Zmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGx5Um90YXRpb25Gb3JQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1
bWVudEltYWdlOjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0Zv
bnRDYXNjYWRlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93TGV0dGVycHJlc3NlZEds
eXBoc1dpdGhBZHZhbmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbG9yTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVE
cm9wU2hhZG93OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ZvbnRDR1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJh
d0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbjo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9M
b2NhbFdpbmRvd3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbFdpbmRvd3NDb250
ZXh0OjpMb2NhbFdpbmRvd3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93
c0NvbnRleHQ6On5Mb2NhbFdpbmRvd3NDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
V2lkZ2V0R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6
OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0F0UG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRDb250YWlu
ZXI6OkNvbnRleHRDb250YWluZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Mb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQubW06CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6On5Mb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Ojpj
Z0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRUb2dnbGVCdXR0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTdGVwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRv
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6cGFpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9XaWRnZXRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBh
aW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFp
bnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWlu
dEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVt
Yik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBzaXNCb3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxsaXBzaXNCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL0Vs
bGlwc2lzQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjppbnB1dENvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5Rmls
dGVyRWZmZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVhbGl0
eSk6CisgICAgICAgICogcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVGbG93Qm94OjpwYWludEZpbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93
Qm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dC
b3g6OnBhaW50TWFzayk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6UGFpbnRJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6Y29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludEluZm86OnNldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZv
OjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpwYWludCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6cGFpbnRDYXJldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6cGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBPdXRQb3NpdGlvbmVkT2JqZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXApOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpwYWludENvbHVtblJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0cyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWlu
dE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpwYWludENsaXBwaW5nTWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpwb3BDb250ZW50c0NsaXApOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwUm91bmRlZElubmVy
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjphcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TWFza0ZvclRleHRG
aWxsQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludE5pbmVQaWVjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVG
b3JDb21wbGV4SW5uZXJQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWludEJveFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRldGFpbHNNYXJrZXI6OnBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpwYWludE91dGxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRTbmFwc2hvdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdSZXBsYWNlbWVudEFycm93
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2Vk
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6
cGFpbnRDb2x1bW5Cb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OnBh
aW50Um93Qm9yZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6
OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjpwYWludE91dGxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJs
YXlTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjbGlwVG9SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZXN0b3JlQ2xpcCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxv
d0NvbnRyb2xzRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpj
YWxjdWxhdGVDbGlwUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U2Nyb2xsYmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cGFpbnRDb250ZW50cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWlu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xzUGFy
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6YWRkUERGVVJMUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyUmVwbGljYTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OnBh
aW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3Jv
dW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNr
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpw
YWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRUaHVtYik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludENv
bGxhcHNlZEJvcmRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWlu
dEJhY2tncm91bmRzQmVoaW5kQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpw
YWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjpwYWludERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRUb2dnbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVuZGVyQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
R3RrOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdka1BpeGJ1Zik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNv
cmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
cGFpbnRDYXBzTG9ja0luZGljYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0
azo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFp
bnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFNwaW5BcnJvd0J1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxheUJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNlZWtC
YWNrQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlh
U2Vla0ZvcndhcmRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0RlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lSU9TOjpwYWludFRleHRGaWVsZERlY29yYXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVHJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVGh1bWJEZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQdXNoQnV0dG9uRGVjb3Jh
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9h
ZEljb25EZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEZpZWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFRleHRBcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50Q2VsbEFuZFNldEZvY3VzZWRFbGVtZW50
TmVlZHNSZXBhaW50SWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50U2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50U2VhcmNoRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U2VhcmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3Zl
cmxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRJbWFnZUNvbnRy
b2xzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEF0dGFj
aG1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRDaGVja2JveCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRSYWRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lU2FmYXJpOjpwYWludENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFRleHRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmll
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmll
bGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0NvbnRyb2wpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50TWVudUxp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRT
ZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVXaW46OnBhaW50TWV0ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6
cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50Q29udGVu
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGlu
ZUJveDo6bGluZVNlbGVjdGlvbkdhcCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
cGFpbnRGbG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpwYWludEdseXBoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9w
ZXJhdG9yOjpmaWxsV2l0aFZlcnRpY2FsRXh0ZW5zaW9uR2x5cGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoSG9yaXpvbnRhbEV4dGVuc2lvbkdseXBo
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVSYXN0ZXJT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVy
OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OmZpbGxTaGFwZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXNl
U3Ryb2tlU3R5bGVUb0ZpbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6c3Ry
b2tlU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVjdDo6c3Ryb2tlU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlSZXNv
dXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhP
bmx5Q2xpcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OjphcHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Y2xpcFRvVGV4dE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudDo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlcjo6YXBwbHlWaWV3cG9ydENsaXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXI6OmRyYXcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjpwb3N0QXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
U2hhcGU6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6c3Ry
b2tlU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VN
YXJrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0
OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6
YXBwbHlWaWV3cG9ydENsaXApOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxv
d0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVj
dGlvbkJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lRmxvd0JveDo6cGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQ
YWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29y
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0
aW9uV2l0aFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50
VGV4dFdpdGhTaGFkb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBh
aW50VGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6On5TVkdSZW5kZXJpbmdDb250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0Nv
bnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpy
ZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
b290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpkcmF3
U1ZHR2x5cGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6ZHJhdyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorCiAyMDE1LTA4LTI4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIE1ha2UgdGhlIEFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgcHJl
ZmVyZW5jZSB3b3JrIGluIFdlYktpdCAvIFdlYktpdDIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNTg1
NjM2NDNkMDk0ZjMzNmMxODAzMjM3MGEzZTliMzI4MzlkOTE0MC4uNDBjOTdiYWQ3MzlmNTIxY2Q3
NWM2OWYyZjI3MGRhMjZjMjZkM2ViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE1LTA4LTI4ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisK
KyAgICAgICAgTWlncmF0ZSBHcmFwaGljc0NvbnRleHRzIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJl
bmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
aXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2Ry
YXdBdFBvaW50OmZvbnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdl
YkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0
ZW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1l
IF9kcmF3UmVjdDpjb250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFrZSB0aGUgQWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFjayBwcmVmZXJlbmNlIHdvcmsgaW4gV2ViS2l0IC8gV2ViS2l0Mi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA1OTI1MzdlM2JhOGE3ZWYyMGRjNmFkMDExYjQ4OGY2NDA0NDU0ZGI2Li41YTI1OGZh
NGIzMWRmYWM5NjJkNDQyYzgxM2Q5ZWJhYWQxYzQyOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDAgQEAKKzIwMTUtMDgtMjggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKworICAgICAgICBNaWdyYXRlIEdyYXBoaWNzQ29udGV4dHMgZnJvbSBwb2ludGVycyB0byBy
ZWZlcmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDg1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpwYWludCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6aW1hZ2VGb3JSZWN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46OnNuYXBzaG90KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbjo6cGxhdGZvcm1QYWludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMpOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6cGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90QXRTaXplKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c25hcHNob3ROb2RlKToKKwogMjAxNS0wOC0yOCAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNYWtlIHRo
ZSBBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrIHByZWZlcmVuY2Ugd29yayBpbiBXZWJLaXQgLyBX
ZWJLaXQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4
IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFmOTgz
NDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmls
dGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0Zp
bHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2Uo
KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6
ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFnZShp
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92ZSh0
ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3YWQz
MTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3NTFj
Mzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICszMjQ4
LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYg
dGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50QmVo
YXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwogICAg
ICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9y
IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAgICAg
ICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJl
Y3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRD
b250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAgICAg
ICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5Njku
LmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2b2lk
IENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0UmVj
dENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50Q2Fy
ZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlvbi5p
c0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2FyZXQo
bV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9mZnNl
dCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGRp
c2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3JvdW5k
KQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWludENh
cmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNp
ZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlkZGVu
KQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9kZSog
bm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xvclNw
YWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldEZv
Y3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3VzQ29u
dHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERyYWdD
YXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NDb250
ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3Qm
IGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdDYXJl
dChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBFTkFC
TEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJl
Y2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlhMGVk
YTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRhdGVD
YXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24p
OwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29sIGlz
Q29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7CiAK
ICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBjb25z
dCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGlj
OgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJldFJl
bmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJlY3Qp
IGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25zdDsK
IAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9u
LnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFi
bGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0V2Fz
UmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xkTGVu
Z3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUoYm9v
bCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUgPyBW
aXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAgICB2
b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2FyZXQg
Ymxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJsaW5r
aW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVk
ID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3NjJi
NWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxDYW52
YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBy
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkgcmVj
dAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICszODgs
OSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5U
QVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9y
aWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAj
ZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVkSW1h
Z2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFnZVBh
aW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGUp
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdlLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCB1
c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwg
dXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1ODAs
MTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAog
ICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JT
cGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNl
dEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsK
KyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
dHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1lbnQo
KS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRDYW52
YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hvdWxk
QW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0cm9r
ZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1
ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
KyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhmYWxz
ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsK
KyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVk
KG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxDYW52
YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZlcigp
ID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVmZmVy
KCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhpY3ND
b250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTliNzBj
MjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDViNDg3
NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaApA
QCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZsb2F0
UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRS
ZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRlMGZl
OWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5ZDc2
M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQgSFRN
TFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9FbGVt
ZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXllciA9
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJlNmIz
MGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2ZWRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBp
eGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzllNDQ1
MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTU1
NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFnZShI
VE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xhdGUo
ZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0UmVj
dC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5o
ZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7
Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAgIHN0
YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4LDE0
ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVCdWZm
ZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgpOwog
fQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkK
K3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewot
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBzcmMs
IG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0
LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
YywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQo
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENvbG9y
U3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7Cisg
ICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwg
ZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2UsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5IEBA
IHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVsbENh
bnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9uKEZs
b2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zvcm0g
PSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3QpKTsK
LSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVj
dC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkueSgp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgo
KSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNvbmNh
dENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0
ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1lZEFk
anVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7CisgICAg
YnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAgZHJh
d0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNwYWNl
LCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21wb3Np
dGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsyMzkz
LDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFsKGNv
bnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tS
ZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0
ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0lt
YWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxsKQot
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjpi
bGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAgICAg
bWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlja25l
c3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0ltYWdl
Q29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9k
ZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKGZp
bGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVzZU1h
eFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9jYXRp
b24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOworICAg
ICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFza1Jl
Y3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8gV2Ug
ZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVnLCBh
ICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAwKSwg
MSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRl
eHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9udE5v
dFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKChm
b250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAgICAg
ICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBvaW50
KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1hc2tS
ZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5k
cmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VGYWxs
YmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNs
YXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0ltYWdl
Q29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRl
OjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4
IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3NGJh
NTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1LDcg
KzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpk
cmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNyY1Jl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qo
RmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGltYWdl
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5jb250
ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29weUlt
YWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2YxYTku
LjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwogICAg
IHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2aWV3
LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5oZWln
aHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+d2lk
dGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpnZXRI
aWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkwNTg2
YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBm
cmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2FsZUZh
Y3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdlUmVj
dC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUo
LWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNob3Vs
ZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJkNjAz
Y2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0MzgwYjM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBAIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVwZGF0
ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9p
ZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdD
b250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkp
IHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNNYWlu
RnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VC
YWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNvbnRl
eHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9s
bENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lCiAg
ICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7CiB9
CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZpZXc6
OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxiYXIo
KSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBi
YXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBmcmFt
ZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJhbWVS
ZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5kQ29s
b3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6cGFp
bnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBAIHZv
aWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRhdGlu
Z0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAg
ICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBwYWlu
dENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVDb250
ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRleHQs
IGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2VyKCkg
Y29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Njcm9s
bGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNraW5n
Q292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0
YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1l
KCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGluZ1N0
YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0zOTYx
LDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGluZyA9
IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRlJiBw
YWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3RhdGUm
IHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5ODUs
MTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRpbmdT
dGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFtcCA9
IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlmICgh
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8vIEZJ
WE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3QgcGFp
bnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMKICAg
ICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0KIAot
dm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICNp
Zm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsKICAg
ICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRpcnR5
UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdTaXpl
QWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVUb0Ry
YXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZyYW1l
Vmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50
U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2UpCit2
b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNo
b3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRl
U3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwog
CkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNu
YXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNldFBh
aW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRPdmVy
aGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpv
bnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0MzAx
LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0ICpu
ZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVuY2F0
ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVjdCBk
aXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZpZXct
PmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihvbGRC
b3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5UmVj
dCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVjdCk7
CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsKICAg
ICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYgKCEq
bmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3NC4u
Y2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1iZWRk
ZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVtb3Zl
RW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewogICAg
ICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRlJik7
Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0
YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsK
QEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5TbmFw
c2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVtIENv
b3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nvb3Jk
aW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNo
b3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25J
blNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hv
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3QoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBz
aG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRp
Y2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
dmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91bmRD
b2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXggZjQ4
Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1YzQx
YWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNw
cApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3JhcGhp
Y3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHguc2Nh
bGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VSZWN0
LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1fZnJh
bWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFtZS0+
dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3JlKCk7
CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0KEdy
YXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZlKCk7
CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAo
cmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3QpOwor
ICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0eC5y
ZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXgg
ZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMy
YTRlODc2Njk3MmQwYzFjMjEyMTNhYjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKQEAgLTExNDcsMTQgKzExNDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVT
Y3JvbGxDb3JuZXIoKQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3Zv
aWQgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5wYWludFNjcm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAot
dm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3Ojpw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7Cisg
ICAgYmFyLnBhaW50KGNvbnRleHQsIHJlY3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFs
aWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsx
MTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICBpbnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hv
cml6b250YWxTY3JvbGxiYXIgJiYgIWxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAg
ICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCks
IHJlY3QpOworICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLmdldCgpLCByZWN0KTsKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5
ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0
LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxi
YXIoY29udGV4dCwgKm1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYg
KGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzEx
NzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNv
bnRleHQsIHNjcm9sbENvcm5lclJlY3QoKSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQ
YW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6
cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0
aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBh
bkljb24iKS5sZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9s
bEljb25Qb2ludDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFy
ZW50KCktPndpbmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJ
bWFnZShwYW5TY3JvbGxJY29uLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7Cisg
ICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwg
aWNvbkdDUG9pbnQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlm
IChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVj
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpICYmICFjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50
cygpKQogICAgICAgICByZXR1cm47CiAKICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2ls
bFBhaW50KCk7CkBAIC0xMjAzLDE2ICsxMjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAog
ICAgIGlmICghZG9jdW1lbnREaXJ0eVJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAg
ICAgICAgaWYgKCFwYWludHNFbnRpcmVDb250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0
LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50
RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQb3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4
dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkp
OworICAgICAgICAgICAgY29udGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NE
b2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRz
KGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAKICAgICAvLyBOb3cgcGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFt
X3Njcm9sbGJhcnNTdXBwcmVzc2VkICYmIChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0
aWNhbFNjcm9sbGJhcikpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSBy
ZWN0OwogICAgICAgICBJbnRSZWN0IHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24o
KSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAg
ICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9s
bGJhcnMpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3Qu
bW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBv
aW50KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRl
eHQuY2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6
ZSgpKSk7CiAKICAgICAgICAgcGFpbnRTY3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0
eVJlY3QpOwogICAgIH0KQEAgLTEyOTksMTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1
cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAgICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNB
bmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJoYW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6
cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFu
Z1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3Qs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1Jl
Y3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1l
Ojp0aGVtZSgpLT5wYWludE92ZXJoYW5nQXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJo
YW5nUmVjdDsKICAgICBJbnRSZWN0IHZlcnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1
NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFhOGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6
CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRo
ZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNp
YmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhp
ZGRlbi4KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpA
QCAtMzU1LDIwICszNTUsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5T
Y3JvbGxSYWRpdXMgPSAxNTsKICAgICB2b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9p
bnQmKTsKICAgICB2b2lkIHJlbW92ZVBhblNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFu
U2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNv
bihHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxi
YXJDb3JuZXIoY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29y
bmVyUHJlc2VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7
CiAKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdW
aWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNv
bnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1
bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpOworICAgIHZvaWQgY2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBA
IC0zNzgsOSArMzc4LDkgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFu
Z0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50
U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhci5jcHAKaW5kZXggYzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYx
YjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJjN2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lk
IFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwog
fQogCi12b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29u
dGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xU
aW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVt
ZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkgfHwgIWZyYW1lUmVjdCgpLmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJl
Y3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAq
Y29udGV4dCwgZGFtYWdlUmVjdCkpCisgICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29u
dGV4dCwgZGFtYWdlUmVjdCkpCiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdl
UmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4
YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNlMGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBi
ZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgz
LDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlv
bihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBv
cyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5Zjhj
M2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4xNmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTlj
NmE5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0
LDExICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQo
U2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwg
Y29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNv
bnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVj
dCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IElu
dFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNj
cm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVyaGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xh
eWVyKiwgY29uc3QgQ29sb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFh
NjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYyYTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJk
YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuY3BwCkBAIC0yNjAsOSArMjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9s
bGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRU
cmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkK
IHsKLSAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6
OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsy
NzksMTUgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9s
bGJhciYgc2Nyb2xsYmFyKQogICAgIHJldHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0
LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFz
KFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhv
cml6b250YWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFo
b3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJl
Y3QoaW50ZXJzZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVj
dC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0
aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
aW50ZXJzZWN0aW9uKHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgK
aW5kZXggNzBhNzllZjE3MTQ1OWNjYWIxMzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYw
ZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVy
aGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJo
YW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
VGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVh
YzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2
N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAg
LTU3LDE5ICs1NywxOSBAQCBMZW5ndGhCb3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQ
YXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9p
ZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRy
YXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUg
b25lIGljb24gYXQgdGhlIG1vbWVudC4KICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJh
Y2siKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6Ymxh
Y2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6Ymxh
Y2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxl
c3MgUGxheWJhY2sgaWNvbi4KIAotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNp
emUoKS53aWR0aCgpIC8gMTAwLCByZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0
LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAg
IGNvbnRleHQudHJhbnNsYXRlKDgsIDEpOwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxp
bmUubW92ZVRvKEZsb2F0UG9pbnQoNTksIDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lk
IFRoZW1lOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMu
NiwgNDEuNikpOwogICAgIG91dGxpbmUuY2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5m
aWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0
ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFiNGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29u
dHJvbC4gVGhlIHJlY3QgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9p
ZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3Jv
bGxWaWV3KiwgZmxvYXQgLypkZXZpY2VTY2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZh
Y3RvciovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xT
dGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCov
LCBmbG9hdCAvKnpvb21GYWN0b3IqLywgU2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVG
YWN0b3IqLywgZmxvYXQgLypwYWdlU2NhbGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNv
bnRyb2xzIG1heSBzcGlsbCBvdXQgb2YgdGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNr
IG9uIGFuIE9TIFggY2hlY2tib3gpLiAgV2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAg
IC8vIHRoZSB0aGVtZSBuZWVkcyB0byBjb21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8g
dGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNhbiBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQg
YnkgdGhlIHpvb21GYWN0b3IuCiAgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRS
ZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21l
ZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25z
dCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAog
ICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1
c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAv
LyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdl
dC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQy
YzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNkYjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dp
ZGdldC5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwg
aW50IHkpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsg
fQogICAgIHZvaWQgbW92ZShjb25zdCBJbnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVj
dChwLCBzaXplKCkpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAg
IHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5Mjhj
MGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIyOTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3
ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Ro
ZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
c3RhdGljIHZvaWQgZml0Q29udGV4dFRvQm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRTaXplJiBzcmNJbWFnZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0
YXRpYyB2b2lkIGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXplLCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAg
ICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJbWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9h
dCBkc3RSYXRpbyA9IGRzdFNpemUuYXNwZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBz
dGF0aWMgdm9pZCBmaXRDb250ZXh0VG9Cb3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmIHNyY0ltYWdlUwogICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkg
LyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXpl
LndpZHRoKCkgLSBzY2FsZSAqIHNyY0ltYWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAg
IGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNs
YXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0
U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0KIAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFn
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KSBjb25zdAordm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25z
dCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KSBjb25zdAogewogICAgIC8vIFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBt
b21lbnQuCiAgICAgaWYgKG5hbWUgIT0gIndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCAr
NTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAg
ICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Cisg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKIAogICAgIEZsb2F0U2l6ZSB3aXJlbGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsK
ICAgICBmaXRDb250ZXh0VG9Cb3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJl
Y3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJ
bWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAg
ICBvdXRsaW5lLmFkZExpbmVUbyhGbG9hdFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0
bGluZS5jbG9zZVN1YnBhdGgoKTsKICAgICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5l
KTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYy
ODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJhMDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1
M2RlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAt
MzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwg
flRoZW1lQ29jb2EoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25z
dCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRF
ZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQyNTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRl
MzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMxYWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0
OjpoaWRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAppbmRleCBkODg5NGZiZDYxNzBiMjI1Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0
OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBA
QCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWRE
YXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRp
bGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3
THVtaW5hbmNlTWFzaygpKSB7CisgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsK
ICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBo
YXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
CiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAg
fQogCi0gICAgY3R4dC0+c2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0
RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJu
KGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBk
ZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNm
NGJlM2MwNmJhNC4uOWZhMjQ5ZTRkNjQ5MWJlZTc2YTQwNmE4MTA4ZGRmNWVmNjhmMGQzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0x
NDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZv
ciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KQEAgLTIwMyw3ICsyMDMsNyBAQCBwcm90ZWN0ZWQ6CiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShXSU5HREkpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3
NzQ2YTlmODEyNDhhMzJkMWY0NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5
OTQ2MzY2OWY0YTEwNGM5NWM5MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQx
LDY4ICs0MSw2OCBAQCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNp
emUoc2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0
aW9uLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMg
dm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSogaW1hZ2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29u
c3QgRmxvYXRTaXplJiB0YXJnZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBp
bWFnZS0+c2l6ZSgpOwogCiAgICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4g
cGFpbnRpbmcsIHNvIHdlIGhhdmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJh
dGVseSBwYWludCBvbmUgYXQgYSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJl
bmN5TGF5ZXIgPSBpbWFnZS0+aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24ob3BlcmF0aW9uKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVy
YXRpb24pOwogCiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0
LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5z
ZXRBbHBoYShvcGFjaXR5KTsKKyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAog
ICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKHRhcmdldFNpemUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRT
aXplLmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29u
dGV4dC5zY2FsZShGbG9hdFNpemUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRo
KCksIHRhcmdldFNpemUuaGVpZ2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAK
ICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
IH0KIAotdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jv
c3NmYWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcg
aWYgZWl0aGVyIG9mIHRoZSBpbWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJv
bUltYWdlID09IEltYWdlOjpudWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJ
bWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKIAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lM
YXllcigxKTsKKyAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9z
c2ZhZGVTaXplKSk7CisgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAg
ICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVT
b3VyY2VPdmVyLCAxIC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdD
cm9zc2ZhZGVTdWJpbWFnZShjb250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVy
LCBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOworICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0K
IAotdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29u
dGV4dC0+dHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xp
cChkc3RSZWN0KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55
KCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAg
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgo
KSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50
cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3Qu
aGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNy
Y1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4
dCk7CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2Nl
bGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQg
OiBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBGaWxsIHdpdGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7
CiAgICAgZHJhd0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUg
aW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1
NmE5ODc1MTRjYjcxYTE3YjRjNzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRi
MzI5ZDYyOGRhZTM3YjZhNWY3MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEz
ICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fY3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmly
dHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBw
ZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQq
KTsKKyAgICB2b2lkIGRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFn
ZSogbV9mcm9tSW1hZ2U7CiAgICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNk
YzkyZDExM2ZjMjBhNGY5MTA1YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5
Y2E2ZGM3MDFkOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGUuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBk
YXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlw
ZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZs
b2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8s
IEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0
CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBj
b25zdAogewogICAgIC8vIERvbid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1
c3RvbSBmb250cyB0aGF0IGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4
Y2VwdCBpZiB0aGUgJ2ZvcmNlJyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2Fz
ZSBpdCB3aWxsIHVzZSBhIGZhbGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENh
c2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdAogICAgIHJldHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2lu
dCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykg
Y29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAg
IGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcg
KzEyOTgsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1w
bGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2
YW5jZTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxl
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVh
Y2ggZ2x5cGguCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQs
NyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0g
c3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBs
ZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBp
bnQgdG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBs
ZVRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBp
bnQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQg
aW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBm
cm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUs
NyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRl
eHQsIHJ1biwgZ2x5cGhCdWZmZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlh
bEFkdmFuY2UsIHBvaW50LnkoKSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhC
dWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQ
b2ludCYgcG9pbnQpIGNvbnN0CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VE
X1BBUkFNKHJ1bik7CkBAIC0xMzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRy
YXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgaWYgKG5leHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9
IG9mZnNldCkgewogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVy
aW5nQ29udGV4dCAmJiBmb250RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVu
ZGVyaW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZm
ZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAg
ICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERh
dGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9p
bnQpOwogICAgICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBo
cyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBs
YXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0
LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20s
IHN0YXJ0UG9pbnQpOwogCiAgICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAg
ICAgICAgIGZvbnREYXRhID0gbmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChy
ZW5kZXJpbmdDb250ZXh0ICYmIGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVy
aW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIs
IGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJl
bmRlcmluZ0NvbnRleHQtPmRyYXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1
ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBl
bHNlCiAjZW5kaWYKICAgICB7Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEs
IGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQp
OworICAgICAgICBkcmF3R2x5cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxh
c3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50
LnNldFgobmV4dFgpOwogICAgIH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0
aWMgZmxvYXQgb2Zmc2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYg
Z2x5cGhCdWZmZXIsCiAgICAgcmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZl
ci5mb250QXQoaSksIGdseXBoQnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNT
dHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2Fz
Y2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWlj
U3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlw
aERhdGEgbWFya0dseXBoRGF0YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YSht
YXJrLCBtYXJrR2x5cGhEYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5oCmluZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3
NGE4NjIuLjE2NmI5MGU4NzVhY2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkg
KzEzMyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYm
KSBjb25zdDsKIAogICAgIGVudW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWlu
dElmRm9udE5vdFJlYWR5LCBVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09S
RV9FWFBPUlQgZmxvYXQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250
Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZv
aWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhC
dWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0
OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4
dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRy
YXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50
JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0g
RG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20s
IGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdF
bXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9
IC0xKSBjb25zdDsKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJl
Y3QoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZs
b2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2
YXRlOgogCiAgICAgLy8gUmV0dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAg
ICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYs
IGludCBmcm9tLCBpbnQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBO
b3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20s
IGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQg
ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBH
bHlwaEJ1ZmZlciYsIEZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01h
cmtzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYs
IGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9h
dCBkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhh
c2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7Cisg
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVu
JiwgY29uc3QgR2x5cGhCdWZmZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBv
aW50JikgY29uc3Q7CiAgICAgZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4
dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVy
ZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0
KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBo
cykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25z
dCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykg
Y29uc3Q7CkBAIC0yMzgsOCArMjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhl
IGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5j
ZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhC
dWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7
Ci0gICAgZmxvYXQgZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRS
dW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9p
ZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBp
bnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwg
aW50IHRvKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0
IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBG
b250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAg
IGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9h
dCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBh
ZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJl
Y3QmIHNlbGVjdGlvblJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzll
ZWZiMmFjOWY3YWU1NTZlMzc1YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4Nzdl
NmRlODllYzQzYTBlNWI4ZTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVl
KSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAg
IHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKSBvdmVycmlkZSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBl
YTNiOGI0MmVlNmQ5ODQxZTUyOTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5
YzU5YTU4YTRmYjIxOGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdl
Ojp+R3JhZGllbnRJbWFnZSgpCiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
Cit2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRl
eHQtPmNsaXAoZGVzdFJlY3QpOwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3Qu
eCgpLCBkZXN0UmVjdC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihkZXN0Q29udGV4dCk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3Qp
OworICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7
CiAgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVz
dENvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0
aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29u
dGV4dC0+dHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29u
dGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGll
bnQuZ2V0KCkpOworICAgICAgICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qu
d2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0Lmhl
aWdodCgpKSk7CisgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1Jl
Y3QueSgpKTsKKyAgICBkZXN0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBzaXplKCkpLCAqbV9ncmFkaWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lk
IEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdl
bmVyYXRvciB0byBwcm92aWRlIHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMg
Zm9yIGJldHRlciBwZXJmb3JtYW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHMKICAgICBtX2dyYWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5n
KGFkanVzdGVkU2l6ZSwgYWRqdXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUg
ZGVzdGluYXRpb24gY29udGV4dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29s
dXRpb24KLSAgICBBZmZpbmVUcmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+
Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7Cisg
ICAgQWZmaW5lVHJhbnNmb3JtIGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91Ymxl
IHhTY2FsZSA9IGZhYnMoZGVzdENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2Nh
bGUgPSBmYWJzKGRlc3RDb250ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
YWRqdXN0ZWRQYXR0ZXJuQ1RNID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBA
QCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9
IG1fZ3JhZGllbnQtPmhhc2goKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBt
X2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVk
U2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVm
ZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VC
dWZmZXIgPSBkZXN0Q29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUs
IG1fZ3JhZGllbnQtPmhhc0FscGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8
fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVz
dGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhC
dWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFn
ZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXpl
LCBtX2dyYWRpZW50LT5oYXNBbHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2Vu
ZXJhdGVkIGltYWdlLgotICAgICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZp
bGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50
KTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAg
ICBtX2NhY2hlZEdlbmVyYXRvckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hl
ZEFkanVzdGVkU2l6ZSA9IGFkanVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQt
PmRyYXdMdW1pbmFuY2VNYXNrKCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5h
bmNlTWFzaygpKQogICAgICAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVt
aW5hbmNlTWFzaygpOwogICAgIH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNl
U2l6ZShzcGFjZVNpemUoKSk7Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNr
KGZhbHNlKTsKKyAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAK
ICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0
LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNh
MGRmNGM0ZWFiMzdhLi42ZWM1NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5o
CkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAg
ICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9k
ZSkgb3ZlcnJpZGU7CiAKICAgICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBj
b25zdCBGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYx
ZjQwZjQ3YTc3ZjI3MzEuLjMwMzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gZm9udC5kcmF3VGV4dCh0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJu
IGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRl
LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZv
bnRDYXNjYWRlLCBjb25zdCBGb250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250
LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdH
bHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2Fk
ZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwg
bWFyaywgcG9pbnQsIGZyb20sIHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlz
LCBydW4sIG1hcmssIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQs
IGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/
IFJUTCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlS
dW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRy
YXdUZXh0KHRoaXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5
QWN0aW9uKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJy
dW4sIGN1cnJQb2ludCwgMCwgLTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAg
IGN1cnJQb2ludC5tb3ZlKHdpZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+
bmV4dCgpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAg
ICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2Ut
PmRyYXcodGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVu
ZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7Cisg
ICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3Jp
cHRpb24pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Uq
IGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwK
QEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVy
bjsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFs
aXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgp
KTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVT
aXplLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxl
ZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdl
KEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAog
ICAgIH0KIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9u
UXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JT
cGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyAr
NDQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6
IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWlu
dGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNw
YWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0
ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBj
b2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2Nv
bXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVy
LCBjb25zdCBGbG9hdFJlY3QmIHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXIt
PmNsaXAoKnRoaXMsIHJlY3QpOwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAg
LTY0MCwyMCArNjQwLDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybSA9IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsK
ICAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0
aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhl
aWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhp
cywgaGFzQWxwaGEpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0
aCgpIC8gc2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkp
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRo
KCkgLyBzaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7
CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21w
YXRpYmxlV2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBo
aWNzQ29udGV4dCogYnVmZmVyQ29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBo
aWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0
dXJuIHNjYWxlc01hdGNoKGdldENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpOworICAgIHJldHVybiBzY2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRD
VE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCk7CiB9CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDcz
MGRiYjY5NTgwOGU5YTZmN2ZlYmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1
Y2IyODVhMWFlMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAg
dm9pZCByZXNldEFmZmluZVRyYW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29u
c3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKTsKKyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29u
c3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2lu
dCYpOwogICAgICAgICB2b2lkIGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1Jl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29u
c3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1
MjU3YjhhNWJiYmFiYzFkOWQ4YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBi
Mzc4MWVjMGE4ZjQzNWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxz
LCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJv
KiBjb250ZXh0KTsKICNlbGlmIFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3Qg
dW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWln
aHQsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0
LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwog
I2VuZGlmCiAKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3
NGQ1YzgwZWUwM2FhZmU0ZWMuLjQ4NDVhMDYzZDQ5NTQ1ODJhMzQxZjRlMDYzOGUxNjVmZDdlYzZi
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4
LDIzICs3OCwyMyBAQCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxs
RGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBo
aWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkK
K3ZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5h
bHBoYSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJl
dmlvdXNPcGVyYXRvciA9IGN0eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNl
dENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVT
b3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RS
ZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24ocHJldmlvdXNPcGVyYXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNP
cGVyYXRvciA9IGN0eHQuY29tcG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oIWNvbG9yLmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3Zl
ciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xv
ciwgc3R5bGVDb2xvclNwYWNlKTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2
aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9p
ZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBz
cmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgc2NhbGVkVGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxl
ZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewog
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmwKICAgICBvbmVUaWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAK
ICAgICAvLyBDaGVjayBhbmQgc2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBj
b3ZlciB0aGUgZW50aXJlIGFyZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9u
ZVRpbGVSZWN0LmNvbnRhaW5zKGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2so
KSkgeworICAgIGlmIChvbmVUaWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJh
d0x1bWluYW5jZU1hc2soKSkgewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAg
ICAgICAgIHZpc2libGVTcmNSZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0Lngo
KSkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJl
Y3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTE2NiwxMiAr
MTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0IGZsb2F0
IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBGbG9hdFJl
Y3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3Jt
ZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQaXhlbHMg
PSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXplLmhlaWdo
dCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsKICAgICBp
ZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxzKSB7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7Ci0gICAg
ICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7CiAKICAg
ICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwogICAgICAg
ICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZv
aWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRoZSBvdGhl
ciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9uIG9mIGJv
dGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4
dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3ZmRiNGY4
Mjc3Y2Q2ZGQ3Mi4uODc2NDFkMmIxNjNlNGJkMzg3YWVhZDA1ZWY5Mjk0OTlkMmVjZTBmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyArMTY2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyop
IHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKIAogI2lm
IEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4NSwxNiBA
QCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRy
KTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxsV2l0
aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
cik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQg
Zm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA5
ZjU4MWVkZmFkNjhmODdjMmQ0NTM1MjJkZjIyZThlNDYzNTNiNzllLi5mOGJhZGRkZjQyOGM4YzY0
MGE1ODQ5Njc3NDNlZGIzZGQzZDg1ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xNTIs
OCArMTUyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29s
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7CkBAIC0yMjQsNyArMjI0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNyZWF0ZUltYWdlR2VuZXJhdG9yKCk7CiAgICAgdm9pZCBkZXN0cm95SW1hZ2VHZW5l
cmF0b3IoKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5S
ZWN0KGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50V2l0aEltYWdlR2Vu
ZXJhdG9yKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7
CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9WSURFT19PVVRQVVQpCiAgICAgdm9pZCBjcmVhdGVW
aWRlb091dHB1dCgpOwpAQCAtMjMyLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRy
PENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVsQnVmZmVyKCk7CiAgICAgdm9pZCB1cGRhdGVM
YXN0SW1hZ2UoKTsKICAgICBib29sIHZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKLSAg
ICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYpOworICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZl
SW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0
cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCA2NWZiNGQyOTYzMjQwZmViYzg1ZjE3OTkxZTQ3N2Q1MmZhNGUzZWY5Li41MDNjNGZiMDJi
OWM0ZWFkYzAwZjM3NTRmNTM1MDQzZmU0NjllN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
QEAgLTE0OTQsOSArMTQ5NCw5IEBAIGxvbmcgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6YXNzZXRFcnJvckNvZGUoKSBjb25zdAogICAgIHJldHVybiBbZXJyb3IgY29kZV07CiB9
CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzZXREZWxheUNh
bGxiYWNrcyh0cnVlKTsKQEAgLTE1MTUsOSArMTUxNSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3ND
b250CiAgICAgbV92aWRlb0ZyYW1lSGFzRHJhd24gPSB0cnVlOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKLSAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0
LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgY2FuIGln
bm9yZSB0aGUgcmVxdWVzdCBpZiB3ZSBhcmUgYWxyZWFkeSByZW5kZXJpbmcgdG8gYSBsYXllci4K
QEAgLTE1MzEsMTggKzE1MzEsMTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICBwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoSW1h
Z2VHZW5lcmF0b3IoJXApIiwgdGhpcyk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjcmVhdGVJbWFnZUZvclRpbWVJblJlY3QoY3VycmVudFRpbWUoKSwgcmVjdCk7CiAgICAg
aWYgKGltYWdlKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55
KCkgKyByZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEu
MGYsIC0xLjBmKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUocmVjdC54KCks
IHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRT
aXplKDEuMGYsIC0xLjBmKSk7CisgICAgICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKICAgICAgICAgSW50UmVjdCBwYWludFJlY3QoSW50
UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAg
ICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0
TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2Uu
Z2V0KCkpOworICAgICAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdo
dCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogfQpAQCAtMjMy
Myw3ICsyMzIzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1
cGRhdGVMYXN0SW1hZ2UoKQogICAgICAgICBtX2xhc3RJbWFnZSA9IGNyZWF0ZUltYWdlRnJvbVBp
eGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG91dHB1dFJlY3QpCiB7CiAjaWYgKCFkZWZp
bmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQpIHx8IF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwKQogICAgIGlmIChtX3ZpZGVvT3V0cHV0ICYmICFtX2xh
c3RJbWFnZSAmJiAhdmlkZW9PdXRwdXRIYXNBdmFpbGFibGVGcmFtZSgpKQpAQCAtMjM0MSwxMyAr
MjM0MSwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50
V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCogYwogCiAgICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoJXAp
IiwgdGhpcyk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAsIDAsIENHSW1hZ2VHZXRXaWR0aChtX2xhc3RJ
bWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQobV9sYXN0SW1hZ2UuZ2V0KCkpKTsKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0gPSBbZmlyc3RFbmFibGVkVmlkZW9UcmFjayBw
cmVmZXJyZWRUcmFuc2Zvcm1dOwogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3Qg
PSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkubWFwUmVjdChvdXRwdXRSZWN0KTsKIAotICAgIGNv
bnRleHQtPmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7Ci0gICAgY29udGV4dC0+ZHJhd05hdGl2
ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CisgICAgY29udGV4dC5j
b25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1f
bGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0
cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVjdCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGNy
ZWF0ZWQgYW4gQVZBc3NldEltYWdlR2VuZXJhdG9yIGluIHRoZSBwYXN0IGR1ZSB0byBtX3ZpZGVv
T3V0cHV0IG5vdCBoYXZpbmcgYW4gYXZhaWxhYmxlCiAgICAgLy8gdmlkZW8gZnJhbWUsIGRlc3Ry
b3kgaXQgbm93IHRoYXQgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLmgKaW5kZXggYTU3NTM0ZjI1ODk3OTYzMzY2YTUwNDdmNjU4MGYyNzk2YWM2MDU2Mi4uNTM3
MWQ2NjI3ZWNlMTQzZDU5OGU1NDhhNWZlOTBiMzNiNzNjYTAwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGM4
MDViM2IyNDVlMzc0Zjc5MTA1ZGFkODc1NTVjZmFkYWZjNGYwM2UuLmQ3Nzc4MjgyOTVjNjMwYTE5
ODRmZmRmOTlhNDIyYzQxYzUwYTE3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAg
LTUyNCwxMiArNTI0LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZXRTaXplKGNvbnN0IEludFNpemUmKQogICAgIC8vIE5vLW9wLgogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAg
IC8vIEZJWE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICAvLyBGSVhNRSgxMjUxNTcpOiBJ
bXBsZW1lbnQgcGFpbnRpbmcuCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCmluZGV4IDVhZTVi
NTUwOWVkMWZjMDk5NThkNTBmMjZmNTdiMDRhNTM5ZmVlMDYuLjVhMDAxMmVjOWRhMjk4OTNiZjU4
MmI3OGM5NTExNTlhMDI2YzQ5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xMjgs
OCArMTI4LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCBjMjZi
MzM1OTczNGQyMzRhZmQ3OTIyOTJhZmQ5MzU3MDQ2ZTBlNjg5Li4wMWZmMjJjMDk5ZmRiOWExZDlk
ZDc5MjU4NWFiYzVkOGY0OTdiYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0z
NjIsMTIgKzM2MiwxMiBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVJbWFnZUZyb21TYW1wbAogICAgIHJldHVybiBxdWFy
dHpJbWFnZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJWE1FKDEyNTE1Nyk6IEltcGxl
bWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKaW5kZXggZjBkM2E3YTcyZGI5
MmZkZTFkMWI1Zjk5MzhiM2MwYzFlN2FkNjFmMS4uZjVlM2RlMGU1MzRiMDE2ZWRmNjFiNDBjZTRm
YTFhNTI5NWQ0YTc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAKQEAgLTY0LDcgKzY0LDcgQEAg
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRp
dmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKICAgICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKIH0KIAot
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAordm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LAogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBk
ZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIWRzdC53aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwg
IXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkpCkBAIC04MSwxMyArODEsMTMgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKIAogICAgIC8vIFNldCB0aGUgY29tcG9zaXRp
bmcgb3BlcmF0aW9uLgogICAgIGlmIChvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5k
TW9kZSA9PSBCbGVuZE1vZGVOb3JtYWwgJiYgIWZyYW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVu
dEZyYW1lKSkKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZUNvcHkpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVD
b3B5KTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cCwgYmxlbmRNb2RlKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3As
IGJsZW5kTW9kZSk7CiAKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQog
ICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IGNhaXJvU3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7
CkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KIAogICAgIGlmIChm
cmFtZU9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFnZU9yaWVudGF0aW9uKSB7CiAgICAgICAgIC8v
IEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KLSAg
ICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgICAg
IGRzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgY29udGV4dC0+Y29u
Y2F0Q1RNKGZyYW1lT3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoZHN0UmVjdC5zaXpl
KCkpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zv
cm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAoZnJhbWVPcmllbnRh
dGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRp
b24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZl
cnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFz
IGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQg
YmFjayBoZXJlLgpAQCAtMTE0LDkgKzExNCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1
cmZhY2VUb0NvbnRleHQoc3VyZmFjZS5nZXQoKSwgZHN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBj
b250ZXh0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29u
dGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGNvbnRleHQpOwog
Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAg
aWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKaW5kZXggYWExMGM2NWM1Njg0M2U1MDI4MDY4YTM5YTg3MDIwMmM3YjE0Y2Nj
ZS4uZmM1MDMyYjU0NWFiNDZiNmM3ZjIzNGZmYzE3ODQ1M2VlNDg0MjhkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBA
IC00NywxNCArNDcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBk
cmF3R2x5cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEds
eXBoQnVmZmVyR2x5cGgqIGdseXBocywgaW50IG51bUdseXBocykKK3N0YXRpYyB2b2lkIGRyYXdH
bHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhC
dWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQogewogICAgIGNhaXJvX21hdHJpeF90
IG9yaWdpbmFsVHJhbnNmb3JtOwotICAgIGZsb2F0IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250
LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CisgICAgZmxvYXQgc3ludGhldGljQm9sZE9mZnNldCA9
IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwogICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0
KQogICAgICAgICBjYWlyb19nZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9ybSk7
CiAKLSAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY29udGV4dCwgZm9udC0+cGxhdGZvcm1EYXRh
KCkuc2NhbGVkRm9udCgpKTsKKyAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY29udGV4dCwgZm9u
dC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgIGNhaXJvX3Nob3dfZ2x5cGhzKGNv
bnRleHQsIGdseXBocywgbnVtR2x5cGhzKTsKIAogICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0
KSB7CkBAIC02NiwyMSArNjYsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChj
YWlyb190KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBHbHlwaEJ1ZmZlckcKICAgICAgICAg
Y2Fpcm9fc2V0X21hdHJpeChjb250ZXh0LCAmb3JpZ2luYWxUcmFuc2Zvcm0pOwogfQogCi1zdGF0
aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwgR2x5cGhCdWZmZXJH
bHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRv
dyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGNvbnN0IEZvbnQmIGZvbnQsIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgaW50IG51bUds
eXBocykKIHsKLSAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gZ3Jh
cGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CiAKLSAgICBpZiAo
IShncmFwaGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8fCBz
aGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQorICAgIGlmICghKGdyYXBoaWNz
Q29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgfHwgc2hhZG93LnR5cGUo
KSA9PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFn
cmFwaGljc0NvbnRleHQtPm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKKyAgICBpZiAoIWdyYXBoaWNz
Q29udGV4dC5tdXN0VXNlU2hhZG93Qmx1cigpKSB7CiAgICAgICAgIC8vIE9wdGltaXplIG5vbi1i
bHVycnkgc2hhZG93cywgYnkganVzdCBkcmF3aW5nIHRleHQgd2l0aG91dCB0aGUgU2hhZG93Qmx1
ci4KLSAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CisgICAgICAgIGNhaXJvX3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7
CiAKLSAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldChncmFwaGljc0NvbnRleHQtPnN0YXRl
KCkuc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldChncmFwaGlj
c0NvbnRleHQuc3RhdGUoKS5zaGFkb3dPZmZzZXQpOwogICAgICAgICBjYWlyb190cmFuc2xhdGUo
Y29udGV4dCwgc2hhZG93T2Zmc2V0LndpZHRoKCksIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7Ci0g
ICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3IoY29udGV4dCwgZ3JhcGhpY3NDb250ZXh0LT5z
dGF0ZSgpLnNoYWRvd0NvbG9yKTsKKyAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250
ZXh0LCBncmFwaGljc0NvbnRleHQuc3RhdGUoKS5zaGFkb3dDb2xvcik7CiAgICAgICAgIGRyYXdH
bHlwaHNUb0NvbnRleHQoY29udGV4dCwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAg
ICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dCk7CkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0UG9pbnQmCiAgICAgfQogCiAgICAgY2Fpcm9fdGV4dF9leHRlbnRzX3QgZXh0ZW50czsK
LSAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRlbnRzKGZvbnQtPnBsYXRmb3JtRGF0YSgp
LnNjYWxlZEZvbnQoKSwgZ2x5cGhzLCBudW1HbHlwaHMsICZleHRlbnRzKTsKKyAgICBjYWlyb19z
Y2FsZWRfZm9udF9nbHlwaF9leHRlbnRzKGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgp
LCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMpOwogICAgIEZsb2F0UmVjdCBmb250RXh0ZW50
c1JlY3QocG9pbnQueCgpICsgZXh0ZW50cy54X2JlYXJpbmcsIHBvaW50LnkoKSArIGV4dGVudHMu
eV9iZWFyaW5nLCBleHRlbnRzLndpZHRoLCBleHRlbnRzLmhlaWdodCk7CiAKICAgICBpZiAoR3Jh
cGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoZ3Jh
cGhpY3NDb250ZXh0LCBmb250RXh0ZW50c1JlY3QpKSB7CkBAIC05NywxMCArOTcsMTAgQEAgc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLAogICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBpZiAoIWZvbnQtPnBsYXRmb3JtRGF0YSgpLnNp
emUoKSkKKyAgICBpZiAoIWZvbnQucGxhdGZvcm1EYXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMgPSBjb25zdF9jYXN0PEdseXBoQnVm
ZmVyR2x5cGgqPihnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSkpOwpAQCAtMTEyLDE0ICsxMTIsMTQg
QEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAgICAgb2Zmc2V0ICs9IGdseXBoQnVmZmVy
LmFkdmFuY2VBdChmcm9tICsgaSkud2lkdGgoKTsKICAgICB9CiAKLSAgICBQbGF0Zm9ybUNvbnRl
eHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCk7CiAgICAgZHJhd0dseXBoc1NoYWRvdyhjb250ZXh0LCBwb2ludCwgZm9udCwg
Z2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQt
PmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVw
YXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6QWRq
dXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKKyAgICBpZiAoY29udGV4dC50ZXh0RHJhd2luZ01v
ZGUoKSAmIFRleHRNb2RlRmlsbCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVG
b3JGaWxsaW5nKGNvbnRleHQuc3RhdGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkFkanVzdFBh
dHRlcm5Gb3JHbG9iYWxBbHBoYSk7CiAgICAgICAgIGRyYXdHbHlwaHNUb0NvbnRleHQoY3IsIGZv
bnQsIGdseXBocywgbnVtR2x5cGhzKTsKICAgICB9CiAKQEAgLTEyNywxMiArMTI3LDEyIEBAIHZv
aWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGb250KiBmb250LCBjb25zdCBHCiAgICAgLy8gdHdpY2UgdGhlIHNpemUgb2YgdGhlIHdpZHRo
IG9mIHRoZSB0ZXh0IHdlIHdpbGwgbm90IGFzayBjYWlybyB0byBzdHJva2UKICAgICAvLyB0aGUg
dGV4dCBhcyBldmVuIG9uZSBzaW5nbGUgc3Ryb2tlIHdvdWxkIGNvdmVyIHRoZSBmdWxsIHdkdGgg
b2YgdGhlIHRleHQuCiAgICAgLy8gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzM3NTkuCi0gICAgaWYgKGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4
dE1vZGVTdHJva2UgJiYgY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCkgPCAyICogb2Zmc2V0KSB7
Ci0gICAgICAgIHBsYXRmb3JtQ29udGV4dC0+cHJlcGFyZUZvclN0cm9raW5nKGNvbnRleHQtPnN0
YXRlKCkpOwotICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4dC0+c3Ryb2tl
VGhpY2tuZXNzKCkpOworICAgIGlmIChjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1v
ZGVTdHJva2UgJiYgY29udGV4dC5zdHJva2VUaGlja25lc3MoKSA8IDIgKiBvZmZzZXQpIHsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dC5zdGF0ZSgp
KTsKKyAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lkdGgoY3IsIGNvbnRleHQuc3Ryb2tlVGhpY2tu
ZXNzKCkpOwogCiAgICAgICAgIC8vIFRoaXMgbWF5IGRpc3R1cmIgdGhlIENUTSwgYnV0IHdlIGFy
ZSBnb2luZyB0byBjYWxsIGNhaXJvX3Jlc3RvcmUgc29vbiBhZnRlci4KLSAgICAgICAgY2Fpcm9f
c2V0X3NjYWxlZF9mb250KGNyLCBmb250LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwor
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQucGxhdGZvcm1EYXRhKCkuc2Nh
bGVkRm9udCgpKTsKICAgICAgICAgY2Fpcm9fZ2x5cGhfcGF0aChjciwgZ2x5cGhzLCBudW1HbHlw
aHMpOwogICAgICAgICBjYWlyb19zdHJva2UoY3IpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1
enpORy5jcHAKaW5kZXggNjc4NDBjNWU5NGZmZmZlM2YyMzZmMGI4MTIyYTIyMDFlYmFlNTNlZC4u
NGZlYzFhYWViMmVkOWQ0Yjc2ZTkzNDM5MmY0ZTMyYTg2MTlhZTljNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEds
eXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQsIGkK
ICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6
ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsK
ICAgICAvLyBUaGlzIGdseXBoIGJ1ZmZlciBob2xkcyBvdXIgZ2x5cGhzICsgYWR2YW5jZXMgKyBm
b250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBA
IC03MCw3ICs3MCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0
UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogLyogY29udGV4dCAqLywgY29uc3Qg
VGV4dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0
IEZsb2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBj
b25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChH
cmFwaGljc0NvbnRleHQmIC8qIGNvbnRleHQgKi8sIGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywg
Y29uc3QgQXRvbWljU3RyaW5nJiAvKiBtYXJrICovLCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2lu
dCAqLywgaW50IC8qIGZyb20gKi8sIGludCAvKiB0byAqLykgY29uc3QKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IGY4YzdjOTYw
ZmQ5ZjlkZjUxMzVlZWIyNDkyMzZkOWI3NDhjZWZkZDYuLjY2MmM1M2Q2ZDE1Y2MwNGI5ZmFmYmJh
ZTY1ODA2NzRmNzJlZDRlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTg5
LDE0ICs4OSwxNCBAQCBlbnVtIFBhdGhEcmF3aW5nU3R5bGUgewogICAgIEZpbGxBbmRTdHJva2Ug
PSBGaWxsICsgU3Ryb2tlCiB9OwogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRyYXdpbmdTdHlsZSkK
K3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhd2luZ1N0eWxlKQogewotICAgIFNoYWRvd0JsdXImIHNo
YWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CisgICAgU2hh
ZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigp
OwogICAgIGlmIChzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBDYWxjdWxhdGUgdGhlIGV4dGVudHMgb2YgdGhlIHJlbmRlcmVk
IHNvbGlkIHBhdGhzLgotICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9IGNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPGNhaXJvX3BhdGhf
dCwgdm9pZCgqKShjYWlyb19wYXRoX3QqKT4gcGF0aChjYWlyb19jb3B5X3BhdGgoY2Fpcm9Db250
ZXh0KSwgW10oY2Fpcm9fcGF0aF90KiBwYXRoKSB7CiAgICAgICAgIGNhaXJvX3BhdGhfZGVzdHJv
eShwYXRoKTsKICAgICB9KTsKQEAgLTEyOSwxNCArMTI5LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5
bGUgZHJhCiAgICAgaWYgKGRyYXdpbmdTdHlsZSAmIEZpbGwpIHsKICAgICAgICAgY2Fpcm9fc2F2
ZShjYWlyb1NoYWRvd0NvbnRleHQpOwogICAgICAgICBjYWlyb19hcHBlbmRfcGF0aChjYWlyb1No
YWRvd0NvbnRleHQsIHBhdGguZ2V0KCkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZvcm1D
b250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3Jt
Q29udGV4dENhaXJvOjpOb0FkanVzdG1lbnQpOwogICAgICAgICBjYWlyb19maWxsKGNhaXJvU2hh
ZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm9TaGFkb3dDb250ZXh0KTsK
ICAgICB9CiAKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgU3Ryb2tlKSB7CiAgICAgICAgIGNhaXJv
X2FwcGVuZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNo
YWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4
dC0+c3RhdGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkRvTm90UHJlc2VydmVBbHBoYSk7Cisg
ICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVzZXJ2ZUFs
cGhhKTsKICAgICAgICAgY2Fpcm9fc3Ryb2tlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgfQog
CkBAIC0xNDksMjggKzE0OSwyOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3co
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRyYQogICAgIGNhaXJv
X2FwcGVuZF9wYXRoKGNhaXJvQ29udGV4dCwgcGF0aC5nZXQoKSk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitz
dGF0aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewotICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
OwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJv
OjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3RhdGUoKSwgUGxhdGZvcm1Db250ZXh0
Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CiAgICAgY2Fpcm9fZmlsbChjcik7
CiAKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHNoYWRv
d0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3N0YXRp
YyBpbmxpbmUgdm9pZCBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCiB7CiAgICAgZHJhd1BhdGhTaGFkb3coY29udGV4dCwgRmlsbCk7CiAgICAg
ZmlsbEN1cnJlbnRDYWlyb1BhdGgoY29udGV4dCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBz
aGFkb3dBbmRTdHJva2VDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
K3N0YXRpYyBpbmxpbmUgdm9pZCBzaGFkb3dBbmRTdHJva2VDdXJyZW50Q2Fpcm9QYXRoKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0LCBTdHJv
a2UpOwotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmco
Y29udGV4dC0+c3RhdGUoKSk7Ci0gICAgY2Fpcm9fc3Ryb2tlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpKTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9y
U3Ryb2tpbmcoY29udGV4dC5zdGF0ZSgpKTsKKyAgICBjYWlyb19zdHJva2UoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250
ZXh0KGNhaXJvX3QqIGNyKQpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogCiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9y
bUNvbnRleHQoKS0+Y3IoKTsKICAgICBzZXRQYXRoT25DYWlyb0NvbnRleHQoY3IsIHBhdGgucGxh
dGZvcm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1Bh
dGgodGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAt
NDQwLDcgKzQ0MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIHNldFBhdGhPbkNhaXJvQ29udGV4dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4
dCgpKTsKLSAgICBzaGFkb3dBbmRTdHJva2VDdXJyZW50Q2Fpcm9QYXRoKHRoaXMpOworICAgIHNo
YWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNDUwLDcgKzQ1MCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJv
X3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpOwotICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKHRoaXMpOworICAgIHNo
YWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKCp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCmluZGV4IDU5OWU1OWRj
NTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEwZTdmZjg3M2JjYjM1YzMwNTliZGE2
Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAKQEAgLTE1
NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNhaXJv
X3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNvbgogICAgICAgICBjYWlyb19maWxs
KGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRl
eHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9f
c3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAg
IC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGggc21hbGwgdmFsdWVzLgogICAgIGlm
IChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVmIHx8IHN0ZDo6ZmFicyhkZXN0UmVj
dC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgUGxhdGZvcm1Db250
ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
Y29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7IHNjYWxlWCwgMCwgMCwgc2NhbGVZ
LCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJp
eChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CisgICAgU2hhZG93Qmx1ciYg
c2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpOwogICAgIGlm
IChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hhZG93KSB7CiAgICAgICAgIGlmIChH
cmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dMYXllcihj
b250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRl
eHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdHRlcm4uZ2V0KCks
IGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCmluZGV4IDkzNTVlMTNlNGUw
M2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEzMDUyY2QyZDhkY2VlNzUxYWY5NWFi
ZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtNTgsNyArNTgs
NyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEoKSBjb25zdDsKIAogICAgIHZvaWQg
cHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2
b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIEdyYXBoaWNzQ29u
dGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9s
YXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIzZjIxZWY3NzAwZWU2ZDUwNmNhYzc0
MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVjNTExY2NjMjIwYzQ3MjgwODEwMzJi
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1h
cEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Jp
dG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAgIHJldHVybiBhZG9wdENGKGFycmF5
KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24p
Cit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsKQEAgLTIx
MywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1hZ2VzIGZv
ciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElzUERGQ29u
dGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKHdrQ0dDb250ZXh0SXNQREZD
b250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICBpbWFnZSA9IGFkb3B0Q0Yo
Y29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKSk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFwcGx5QWZm
aW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4dC0+cGxhdGZvcm1Db250
ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0ID0gQ0dS
ZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShjdHh0LnBs
YXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUgPSBzdGQ6
Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS53
aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Quc2l6ZS5o
ZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAgICAgaW1hZ2UgPSBmcmFtZUF0SW5k
ZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwpAQCAtMjQ1LDcgKzI0NSw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAgIG9yaWVu
dGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCi0gICAg
Y3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFnZVNpemUsIHN0eWxlQ29sb3JT
cGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIG9y
aWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgaW1hZ2VT
aXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21wb3NpdGVP
cCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQog
ICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1ZGM1MzBhMjhiN2JhYjkuLjk0YWFh
YTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9pZCByZWxlYXNlSW1hZ2VEYXRhKHZv
aWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAgZmFzdEZyZWUoY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFz
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGlt
YWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VI
ZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMgfHwgaW1hZ2VXaWR0aCA8PSAwIHx8
IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0gMCB8fCBjYW52YXNIZWlnaHQgPD0g
MCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlV2lkdGggPD0gMCB8
fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9IDAgfHwgY2FudmFzSGVpZ2h0IDw9
IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0ZXMgPSBpbWFnZVdpZHRoICogNDsK
ICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKIAotICAgIGlm
IChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgaWYgKGNvbnRleHQuaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyKiBjb3BpZWRQaXhl
bHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGltYWdlSGVpZ2h0LCByb3dCeXRlcyku
Z2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSArNTMyLDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhl
bHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21wbGV0ZWx5IG92ZXJ3cml0ZSB0aGUg
cHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyByZXN1bHRzLgogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLWltYWdl
SGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQo
KSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VIZWlnaHQp
OworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9u
Tm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VT
aXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0Mzg2MzVhYTk2ZGQzYjFjYTFhYjVh
OTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4ZmE0NjM2NWJlNDljMjY1ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBDR0NvbnRleHRTZXRT
aGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAg
ICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKLSAgICAgICAgY29udGV4
dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKKyAg
ICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3VuZGVkUmVj
dChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7
CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAgICAgQ0dD
b250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAw
LCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7Ci0gICAg
ICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgRmxvYXRSb3VuZGVkUmVjdChy
ZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMsIEZsb2F0
Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxSZWN0KGNvbnRl
eHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0
Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zCiAg
ICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dT
aXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KG1fc3Rh
dGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QpOwor
ICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCByZWN0KTsKICAgICB9
CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJlY3QoKTsKQEAgLTgyNCw3ICs4MjQs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dX
aXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAg
IFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRv
dy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKKyAgICAgICAg
Y29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVj
dCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGJiOWRlZWIw
ZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEwOTMwMTQ5N2MyNTZiMTA0Zjg1MmI3
MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNDMsOSArMTQzLDkgQEAgSW1hZ2VC
dWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1ha2VfdW5p
cXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKICAgICB9CiAKLSAgICBjb250
ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIGNvbnRleHQoKS0+dHJhbnNsYXRl
KDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29udGV4dCgpLT5h
cHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBjb250ZXh0KCku
c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4dCgpLnRyYW5zbGF0ZSgwLCAtbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAgIGNvbnRleHQoKS5hcHBseURldmlj
ZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIHN1Y2Nlc3MgPSB0cnVlOwog
fQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigpCiB7CiB9
CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAorR3JhcGhp
Y3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAjaWYgVVNFKElPU1VS
RkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAobV9kYXRhLnN1cmZhY2UpCi0gICAg
ICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOworICAg
ICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogI2Vu
ZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgpOworICAgIHJldHVybiAqbV9kYXRh
LmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNvbnN0CiB7
Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAg
Q0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogc3RhdGlj
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2FyeShDR0lt
YWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCkBAIC0yMTAsMTMgKzIxMCwxMyBA
QCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgpCiBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3Rv
cmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
aW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAg
ICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIHN3aXRj
aCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3RvcmU6CiAg
ICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwgOCwgMzIs
IG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9kYXRhLmNvbG9yU3BhY2UsIG1fZGF0
YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdldCgpLCAwLCB0cnVlLCBrQ0dSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
b3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAg
ICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMzEsMjkgKzIzMSwyOSBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9pZCBJ
bWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
IHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNjYWxlKTsKLSAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZp
Y2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gKCZk
ZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNv
bG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKGRl
c3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRl
eHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
Q29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0
byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0g
c3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUsIG1f
cmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdl
LmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29sb3JTcGFjZSwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IGFk
anVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVz
b2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAKLSAgICBpZiAoIWNvbnRleHQoKS0+
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBpZiAoZGVzdENvbnRleHQgPT0gY29u
dGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgaWYg
KCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgICAgICBpZiAoJmRlc3RD
b250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQo
KSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5
QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRl
ZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
YWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3R5bGVDb2xvclNwYWNl
LCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yNjYsMTEg
KzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogICAgIH0KIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRleHRUb0NsaXAsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgRmxv
YXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9IHNjYWxlU2l6ZVRvVXNlclNwYWNl
KHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXplKCkpOwog
Ci0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRvQ2xpcCA9IGNvbnRleHRUb0NsaXAt
PnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHRUb0Ns
aXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1FOiBUaGlz
IGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhhIG1hc2sg
aGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBjb3B5TmF0aXZlSW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShwbGF0Zm9y
bUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSArIGJhY2tpbmdTdG9yZVNpemVJblVz
ZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4MywzMSBAQCB2b2lkIEltYWdlQnVmZmVy
OjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xpcCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0
VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5hdGVTeXN0
ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBpZiAoY29udGV4dCgpLT5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQo
KSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJbnRSZWN0IHNyY1JlY3QgPSByZWN0
OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKQog
ICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIHJldHVybiBt
X2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLT5pc0FjY2Vs
ZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3Jj
UmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0
cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VCdWZmZXI6
OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29vcmRpbmF0
ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIEludFJlY3Qgc3JjUmVjdCA9
IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0
ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCi0gICAgcmV0
dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldERh
dGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJheShNdWx0
aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJbnRTaXpl
JiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYg
ZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0gICAgaWYg
KCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIEludFJlY3Qgc2NhbGVkU291cmNl
UmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUgc2NhbGVkU291cmNlU2l6ZSA9IHNv
dXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGlu
YXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpwdXRC
eXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNvdXJjZSwg
YwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc291cmNlQ29w
eS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBJbnRQb2lu
dCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSksIHNvdXJjZUNvcHktPmludGVybmFs
U2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIG11
bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBzb3VyY2VDb3B5LT5tX2RhdGEucHV0
RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3VyY2VSZWN0
LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+aW50ZXJuYWxTaXplKCksIHNvdXJj
ZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0aXBsaWVkID09IFVu
bXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29udGV4dCBmb3IgdXNpbmcgZHJhd0lt
YWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250ZXh0UmVmIGRlc3RDb250ZXh0ID0g
Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgZGVzdENvbnRl
eHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3Jk
aW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShkZXN0Q29udGV4dCwgQWZm
aW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0Q29udGV4dCkpLmludmVyc2UoKSk7
CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NF
UlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2Rpbmco
bWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
CisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVz
aENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gdXRpRnJvbU1J
TUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUxMDMxYTIxNTcwZTVhYTMyMGUwYWE1
NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBkOTdmYzYzNzkzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAgLTg2LDcg
Kzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQog
ICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKCFuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY3R4dC0+cGxhdGZvcm1Db250ZXh0
KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjdHh0KTsKKyAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0eHQpOwogICAgIENHQ29udGV4dENs
aXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwg
YmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3Qu
eCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2Nh
bGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBiMTlmYjA4
MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li43Yjg2YjMxNWJkMjZjMGRlY2EzNGRk
Yzc2NTM4ZTI2ZTM5MDY4ZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtOTgsNyArOTgsNyBAQCBi
b29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1ZSBpZiBzaXplIGlzIGF2YWlsYWJs
ZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNoZVBhcmFt
ZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAogewogICAgIGlmIChkc3RSZWN0
LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJhbWV0
ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21w
b3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZp
bml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7
CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURl
dmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7CiAKICAgICBBZmZpbmVU
cmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07CiAgICAg
bV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0pOwpA
QCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJz
TWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNjYWxlID0gZHN0UmVjdC53aWR0aCgp
IC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2FsZSA9IGRzdFJlY3QuaGVpZ2h0KCkg
LyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUsMTIgQEAgc3RhdGljIHZvaWQgdHJh
bnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzcmNS
ZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2NhbGUpOwotICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUo
MCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHNyY1JlY3QueCgp
ICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7CisgICAgY29udGV4dC5zY2FsZShGbG9h
dFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLXNyY1Jl
Y3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZElt
YWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQogewogI2lmIFBM
QVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xpZW50cyB1c2UgbG93LXF1YWxpdHkg
aW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRocm93cyBvZmYgdGhpcyBvcHRpbWl6
YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0
ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogI2Vs
c2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGltYWdlLCByZXVzZSBpdCBpZiB3ZSdy
ZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlmIGNhY2hlIHBhcmFtZXRlcnMgZG9u
J3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hlbiB3ZSBkbyB0aGUgc3Vic2VxdWVu
dCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xh
dGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCk7CisgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJlcGFpbnRJZk5lY2Vzc2FyeSA9IGlu
dGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Ob25lICYmIGludGVycG9sYXRpb25R
dWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYKIAogICAgIGlmICghbV9jYWNoZWRJ
bWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNoKGNvbnRleHQsIGRzdFJlY3QsIHNy
Y1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAgICAgICAgbV9jYWNoZWRJbWFnZUJ1
ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxvYXRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIg
PSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZmZXJDb250
ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICBpZiAoIWJ1ZmZl
ckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxscHRyOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYg
YnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKIAogICAgICAg
ICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQpOwogCi0gICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5p
dGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29u
dGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxl
KTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUgPSBkc3RSZWN0LnNpemUoKTsKICAg
ICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsKIApAQCAtMTgyLDcgKzE3OCw3IEBA
IHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBQREZE
b2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIHVwZGF0ZUNh
Y2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAKICAgICB7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hlZEltYWdl
QnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fY2FjaGVkSW1h
Z2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QpOworICAgICAgICAg
ICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwog
ICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBAIC0yNDQsNyArMjQwLDcgQEAgdW5z
aWduZWQgUERGRG9jdW1lbnRJbWFnZTo6cGFnZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gQ0dQ
REZEb2N1bWVudEdldE51bWJlck9mUGFnZXMobV9kb2N1bWVudC5nZXQoKSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEZsb2F0U2l6ZSBzaXplLCBpbnQgcm90YXRpb25EZWdyZWVzKQorc3RhdGljIHZvaWQgYXBwbHlS
b3RhdGlvbkZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNp
emUsIGludCByb3RhdGlvbkRlZ3JlZXMpCiB7CiAgICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5
MCkKICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0KCkpOwpAQCAtMjUz
LDE3ICsyNDksMTcgQEAgc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGkKICAgICBlbHNlIGlmIChyb3Rh
dGlvbkRlZ3JlZXMgPT0gMjcwKQogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoc2l6ZS53aWR0
aCgpLCAwKTsKIAotICAgIGNvbnRleHQtPnJvdGF0ZSgtZGVnMnJhZChzdGF0aWNfY2FzdDxmbG9h
dD4ocm90YXRpb25EZWdyZWVzKSkpOworICAgIGNvbnRleHQucm90YXRlKC1kZWcycmFkKHN0YXRp
Y19jYXN0PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7CiB9CiAKLXZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQREZEb2N1
bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKGNvbnRleHQsIHNpemUoKSwgbV9yb3RhdGlvbkRlZ3Jl
ZXMpOwogCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1tX2Nyb3BCb3gueCgpLCAtbV9jcm9wQm94
LnkoKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gu
eSgpKTsKIAogICAgIC8vIENHUERGIHBhZ2VzIGFyZSBpbmRleGVkIGZyb20gMS4KLSAgICBDR0Nv
bnRleHREcmF3UERGUGFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVu
dEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSkpOworICAgIENHQ29udGV4dERyYXdQREZQYWdl
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRHZXRQYWdlKG1fZG9jdW1l
bnQuZ2V0KCksIDEpKTsKIH0KIAogI2VuZGlmIC8vICFVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVO
VElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oCmluZGV4IDFiMjljOTM0MTE1MDBiNjc3ODgwZTFjNmM1NGRkMTll
NGU4NDk5MDAuLjIxN2FjZDBlZGIyNjRjMGUwOWM4YWRmNWVlNDI3MTY1MTE3ZGU4OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBp
bnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMg
dG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03NywxMCArNzcs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVBERkRvY3VtZW50KCk7CiAgICAgdm9pZCBj
b21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBj
b25zdDsKLSAgICB2b2lkIGRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQg
ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICB2b2lkIHVwZGF0ZUNhY2hlZElt
YWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOwotICAgIGJvb2wgY2FjaGVQYXJhbWV0ZXJzTWF0Y2go
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCk7CisgICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkg
Y29uc3Q7CiAKICNpZiBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQogICAgIFJldGFp
blB0cjxQREZEb2N1bWVudD4gbV9kb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCmluZGV4IDIw
NzlmZjY4OWI5MTU5MDIzODE4MzhlOWNkOTdlNDZkMTU4MzY0ZjYuLjQ0ZmFhZTFhODAwM2E1ZWIx
YTFhOWVkYjJlOWRjYTQxYzA3NzZiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQpAQCAtOTEsMTMg
KzkxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQg
c2hvd0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGNvbnN0IEZvbnQqIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBo
KiBnbHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKK3N0YXRpYyB2
b2lkIHNob3dMZXR0ZXJwcmVzc2VkR2x5cGhzV2l0aEFkdmFuY2VzKGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBjb25zdCBGb250JiBmb250LCBDR0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgQ0dH
bHlwaCogZ2x5cGhzLCBjb25zdCBDR1NpemUqIGFkdmFuY2VzLCBzaXplX3QgY291bnQpCiB7CiAj
aWYgRU5BQkxFKExFVFRFUlBSRVNTKQogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQtPnBsYXRm
b3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZv
bnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5vcmllbnRhdGlvbigpID09
IFZlcnRpY2FsKSB7CiAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgdmVy
dGljYWwgdGV4dC4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMzczNzI5OD4uCiAgICAgICAgIHJldHVy
bjsKQEAgLTE1OCwxNCArMTU4LDE0IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAKLXN0YXRpYyB2
b2lkIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0
IEZvbnQqIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBnbHlwaHMs
IGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKK3N0YXRpYyB2b2lkIHNob3dH
bHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQmIGZv
bnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBnbHlwaHMsIGNvbnN0IENH
U2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICAgICBpZiAoIWNvdW50KQogICAgICAg
ICByZXR1cm47CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgcG9pbnQu
eCgpLCBwb2ludC55KCkpOwogCi0gICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1E
YXRhID0gZm9udC0+cGxhdGZvcm1EYXRhKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYg
cGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKICAgICBWZWN0b3I8Q0dQb2ludCwg
MjU2PiBwb3NpdGlvbnMoY291bnQpOwogICAgIGlmIChwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1h
cEZvbnQoKSkKICAgICAgICAgZmlsbFZlY3RvcldpdGhIb3Jpem9udGFsR2x5cGhQb3NpdGlvbnMo
cG9zaXRpb25zLCBjb250ZXh0LCBhZHZhbmNlcywgY291bnQpOwpAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0YXRpYyB2b2lkIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGNvbnN0IEZvbnQqIGZvbnQsIENHCiAKICAgICAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0VGV4dE1hdHJpeChj
b250ZXh0KSk7CiAKLSAgICAgICAgQ0dQb2ludCBwb3NpdGlvbiA9IEZsb2F0UG9pbnQocG9pbnQu
eCgpLCBwb2ludC55KCkgKyBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KElkZW9ncmFw
aGljQmFzZWxpbmUpIC0gZm9udC0+Zm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKKyAgICAg
ICAgQ0dQb2ludCBwb3NpdGlvbiA9IEZsb2F0UG9pbnQocG9pbnQueCgpLCBwb2ludC55KCkgKyBm
b250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNlbGluZSkgLSBmb250
LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICAgICAgQ0dTaXplIHRyYW5zbGF0aW9uID0gQ0dT
aXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0odHJhbnNsYXRpb25zW2ldLCByb3RhdGVMZWZ0VHJhbnNm
b3JtKTsKICAgICAgICAgICAgIHBvc2l0aW9uc1tpXSA9IENHUG9pbnRBcHBseUFmZmluZVRyYW5z
Zm9ybShDR1BvaW50TWFrZShwb3NpdGlvbi54IC0gdHJhbnNsYXRpb24ud2lkdGgsIHBvc2l0aW9u
LnkgKyB0cmFuc2xhdGlvbi5oZWlnaHQpLCB0cmFuc2Zvcm0pOwpAQCAtMjQ2LDM1ICsyNDYsMzUg
QEAgc3RhdGljIENHU2l6ZSBkaWxhdGlvblNpemVGb3JUZXh0Q29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogfQogI2VuZGlmCiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5
cGhCdWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNo
b3JQb2ludCkgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQ
b2ludCkgY29uc3QKIHsKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEg
PSBmb250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0
Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIGlmICghcGxhdGZvcm1EYXRhLnNp
emUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgYm9vbCBzaG91bGRTbW9vdGhGb250czsK
ICAgICBib29sIGNoYW5nZUZvbnRTbW9vdGhpbmc7Ci0gICAgYm9vbCBtYXRjaEFudGlhbGlhc2Vk
QW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQtPmFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxl
ZCgpOworICAgIGJvb2wgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMgPSBjb250ZXh0
LmFudGlhbGlhc2VkRm9udERpbGF0aW9uRW5hYmxlZCgpOwogICAgIAogICAgIHN3aXRjaCAoZm9u
dERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKSB7CiAgICAgY2FzZSBBbnRpYWxpYXNlZDog
ewotICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGNv
bnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwogICAgICAgICBzaG91bGRTbW9vdGhGb250
cyA9IGZhbHNlOwogICAgICAgICBjaGFuZ2VGb250U21vb3RoaW5nID0gdHJ1ZTsKICAgICAgICAg
bWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMgPSBmYWxzZTsgLy8gQ1NTIGhhcyBvcHRl
ZCBpbnRvIHN0cmljdGx5IGFudGlhbGlhc2VkIGZvbnRzLgogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBTdWJwaXhlbEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGNvbnRleHQtPnNldFNo
b3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMo
dHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gdHJ1ZTsKICAgICAgICAgY2hhbmdl
Rm9udFNtb290aGluZyA9IHRydWU7CiAgICAgICAgIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9vdGhl
ZEZvbnRzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTm9TbW9vdGhp
bmc6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICAg
ICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogICAgICAgICBzaG91bGRTbW9v
dGhGb250cyA9IGZhbHNlOwogICAgICAgICBjaGFuZ2VGb250U21vb3RoaW5nID0gdHJ1ZTsKICAg
ICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMgPSBmYWxzZTsKQEAgLTMxOSw3
ICszMTksNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgIAogICAgIENHQ29udGV4dFNl
dEZvbnQoY2dDb250ZXh0LCBwbGF0Zm9ybURhdGEuY2dGb250KCkpOwogCi0gICAgYm9vbCB1c2VM
ZXR0ZXJwcmVzc0VmZmVjdCA9IHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KCpjb250ZXh0KTsK
KyAgICBib29sIHVzZUxldHRlcnByZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZl
Y3QoY29udGV4dCk7CiAgICAgRmxvYXRQb2ludCBwb2ludCA9IGFuY2hvclBvaW50OwogCiAgICAg
Q0dBZmZpbmVUcmFuc2Zvcm0gbWF0cml4ID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKQEAg
LTMzOSw5ICszMzksOSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgIENHQ29udGV4dFNl
dFRleHRNYXRyaXgoY2dDb250ZXh0LCBtYXRyaXgpOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
IENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRl
eHQtPnNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpKTsKKyAgICBDR0NvbnRleHRTZXRTaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoY2dDb250ZXh0LCBjb250ZXh0LnNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cygpKTsKICNlbHNlCi0gICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0Nv
bnRleHQsIFtkcmF3Rm9udCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC0+c2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKCkpOworICAgIHNldENHRm9udFJlbmRlcmluZ01vZGUoY2dDb250ZXh0LCBb
ZHJhd0ZvbnQgcmVuZGVyaW5nTW9kZV0sIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKCkpOwogI2VuZGlmCiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250ZXh0LCBwbGF0
Zm9ybURhdGEuc2l6ZSgpKTsKIApAQCAtMzUwLDExICszNTAsMTEgQEAgdm9pZCBGb250Q2FzY2Fk
ZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQs
IGNvbnN0IEcKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwog
ICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBDb2xvclNwYWNlIGZpbGxDb2xv
clNwYWNlID0gY29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5nZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFj
ZSk7CisgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQuZmlsbENvbG9yU3Bh
Y2UoKTsKKyAgICBjb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBjb250
ZXh0Q1RNID0gY29udGV4dC0+Z2V0Q1RNKCk7Ci0gICAgZmxvYXQgc3ludGhldGljQm9sZE9mZnNl
dCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY29u
dGV4dENUTSA9IGNvbnRleHQuZ2V0Q1RNKCk7CisgICAgZmxvYXQgc3ludGhldGljQm9sZE9mZnNl
dCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwogICAgIGlmIChzeW50aGV0aWNCb2xkT2Zm
c2V0ICYmICFjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpIHsK
ICAgICAgICAgRmxvYXRTaXplIGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4ZWxzID0gY29u
dGV4dENUTS5tYXBTaXplKEZsb2F0U2l6ZSgxLCAwKSk7CiAgICAgICAgIGZsb2F0IGhvcml6b250
YWxVbml0TGVuZ3RoSW5EZXZpY2VQaXhlbHMgPSBzcXJ0Zihob3Jpem9udGFsVW5pdFNpemVJbkRl
dmljZVBpeGVscy53aWR0aCgpICogaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMud2lk
dGgoKSArIGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4ZWxzLmhlaWdodCgpICogaG9yaXpv
bnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkpOwpAQCAtMzYyLDIwICszNjIsMjAg
QEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAgICAgICAgIHN5bnRoZXRpY0JvbGRPZmZz
ZXQgLz0gaG9yaXpvbnRhbFVuaXRMZW5ndGhJbkRldmljZVBpeGVsczsKICAgICB9OwogCi0gICAg
Ym9vbCBoYXNTaW1wbGVTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0
TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0
Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZvbnQoKSAmJiAoIWNvbnRleHQtPnNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBl
ZCgpKSAmJiAhY29udGV4dC0+aXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgYm9vbCBoYXNT
aW1wbGVTaGFkb3cgPSBjb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAm
JiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5p
c0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3Jtcygp
IHx8IGNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgJiYgIWNv
bnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykg
ewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiBy
ZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2luZyBzdWJwaXhlbCBhbnRpYWxpYXNp
bmcuCi0gICAgICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIENvbG9yIGZpbGxD
b2xvciA9IGNvbnRleHQtPmZpbGxDb2xvcigpOworICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93
KCk7CisgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGNvbnRleHQuZmlsbENvbG9yKCk7CiAgICAg
ICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3Iu
Z3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENv
bG9yLmFscGhhKCkgLyAyNTUpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Ioc2hhZG93
RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKICAgICAgICAgZmxvYXQgc2hh
ZG93VGV4dFggPSBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAgICAgLy8g
SWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0IGFwcGxp
ZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4KLSAgICAg
ICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkg
KiAoY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAg
IGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICog
KGNvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CiAgICAgICAgIHNo
b3dHbHlwaHNXaXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCwgc2hhZG93VGV4dFkp
LCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8
Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwog
ICAgICAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkKICAgICAgICAgICAgIHNob3dHbHlwaHNX
aXRoQWR2YW5jZXMoRmxvYXRQb2ludChzaGFkb3dUZXh0WCArIHN5bnRoZXRpY0JvbGRPZmZzZXQs
IHNoYWRvd1RleHRZKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSks
IHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwg
bnVtR2x5cGhzKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmls
bENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZp
bGxDb2xvclNwYWNlKTsKICAgICB9CiAKICAgICBpZiAodXNlTGV0dGVycHJlc3NFZmZlY3QpCkBA
IC0zODYsNyArMzg2LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAgICAgc2hvd0ds
eXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHBvaW50LngoKSArIHN5bnRoZXRpY0JvbGRPZmZz
ZXQsIHBvaW50LnkoKSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20p
LCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSks
IG51bUdseXBocyk7CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBjb250ZXh0
LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93
Q29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCiAjaWYgIVBMQVRGT1JN
KElPUykKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTEwMApAQCAt
NjYwLDcgKzY2MCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlwaHNBbmRBZHZhbmNlc0Zv
ckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZyCiAgICAgcmV0dXJuIGluaXRp
YWxBZHZhbmNlOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3
Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAg
IC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMgKyBhZHZhbmNlcyArIGZvbnQg
ZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKQEAgLTY3
OCw3ICs2NzgsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJldHVybiBzdGFydFBv
aW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFy
a3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVu
JiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7
CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBs
ZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5j
cHAKaW5kZXggYzE0ZjYwZmM2NjliZTQ2NjQ1MDJlYzk0ZTE2MzNmYzdkMDgzNDVkNS4uMDg5ZjQ1
MDUyMzM5YWUwYjJiZjI5NmEwZmE3NGU1NmMxMWM4N2ZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC02OCwxNSAr
NjgsMTUgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEltYWdl
QnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYg
KCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIEdyYXBoaWNzQ29udGV4dCogZmls
dGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIEltYWdlQnVm
ZmVyKiBpbWFnZUJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyMiA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpOwogICAgIEFTU0VSVChpbWFnZUJ1
ZmZlcik7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyMik7CiAKLSAgICBmaWx0ZXJDb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRl
ckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQ
YWludGluZ09wdGlvbnMoQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CiB9CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggMzYzYmIzOGZmMTUxZWU1NTU0NDA5MTRjY2M4YTQ1
NDc4NmVjMTljNi4uODc2NmFlY2IyMjMzYzlhYTkzYjNmNTk4ZmYyZTYzMTM4ZjI1NjhmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBGRUNvbG9yTWF0cml4
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZUJ1ZmZlcihp
bi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwogCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoSW50UG9pbnQoKSwgcmVzdWx0SW1hZ2UtPmxv
Z2ljYWxTaXplKCkpOwogICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9
IHJlc3VsdEltYWdlLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoaW1hZ2VSZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3Np
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5jcHAKaW5kZXggMzZiZWZlN2EyOGUwMjgxOGI2N2FiNzc5MDVkYTMyYzgxYzA0ZTM2MS4u
ZmNjODFlODcxMzhmYmRmM2VjMTA3NzA5Njk3YjQxYTM3OWExOTc5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5j
cHAKQEAgLTI3Miw3ICsyNzIsNyBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIEdy
YXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KTsKIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGluLT5hc0ltYWdlQnVmZmVyKCk7
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyMiA9IGluMi0+YXNJbWFnZUJ1ZmZlcigpOwpA
QCAtMjgxLDggKzI4MSw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFU
T1JfT1ZFUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAg
ICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9JTjog
ewogICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gdGhlIGludGVyc2VjdGVkIHJlZ2lvbi4KQEAg
LTI5NCwyMSArMjk0LDIxIEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlv
blJlY3QgLSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qg
c291cmNlUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxv
Y2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBpbjItPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBh
ZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291cmNlSW4pOwor
ICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9z
aXRlU291cmNlSW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lU
RV9PUEVSQVRPUl9PVVQ6Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXIyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlRGVzdGluYXRpb25P
dXQpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1
ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUDoKLSAgICAgICAgZmls
dGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0
ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZVNvdXJjZUF0b3ApOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRl
ckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50
UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVNv
dXJjZUF0b3ApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9S
X1hPUjoKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
MiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZVhPUik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAg
ICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwg
Q29tcG9zaXRlWE9SKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNWU3YzkwNDUwZjhiMDdkNjNmN2YyMDk3ZDc0M2U4
YzBhNjEwNjk2Zi4uNjMzZWJjNjYwYjFkNzZjYjRiZDk4ODZlMDExZTBiODM3NWI5NWFiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEcm9wU2hhZG93LmNwcApAQCAtODksMTEgKzg5LDEwIEBAIHZvaWQgRkVEcm9wU2hhZG93Ojpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlID0g
aW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBBU1NFUlQoc291cmNlSW1hZ2UpOwotICAgIEdyYXBo
aWNzQ29udGV4dCogcmVzdWx0Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7Ci0gICAg
QVNTRVJUKHJlc3VsdENvbnRleHQpOwotICAgIHJlc3VsdENvbnRleHQtPnNldEFscGhhKG1fc2hh
ZG93T3BhY2l0eSk7Ci0gICAgcmVzdWx0Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldCk7Ci0gICAg
cmVzdWx0Q29udGV4dC0+c2V0QWxwaGEoMSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiByZXN1bHRD
b250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICByZXN1bHRDb250ZXh0LnNldEFs
cGhhKG1fc2hhZG93T3BhY2l0eSk7CisgICAgcmVzdWx0Q29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
c291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0
KTsKKyAgICByZXN1bHRDb250ZXh0LnNldEFscGhhKDEpOwogCiAgICAgU2hhZG93Qmx1ciBjb250
ZXh0U2hhZG93KGJsdXJSYWRpdXMsIG9mZnNldCwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKQEAgLTEwNSwxMSArMTA0LDExIEBAIHZvaWQgRkVEcm9wU2hhZG93OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgcmVzdWx0SW1hZ2UtPnB1dEJ5dGVBcnJheShQcmVt
dWx0aXBsaWVkLCBzcmNQaXhlbEFycmF5LmdldCgpLCBzaGFkb3dBcmVhLnNpemUoKSwgc2hhZG93
QXJlYSwgSW50UG9pbnQoKSwgSW1hZ2VCdWZmZXI6OkJhY2tpbmdTdG9yZUNvb3JkaW5hdGVTeXN0
ZW0pOwogCi0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZVNvdXJjZUluKTsKLSAgICByZXN1bHRDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIG1fc2hhZG93Q29sb3IsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwotICAgIHJlc3VsdENvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOworICAgIHJlc3VsdENvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICByZXN1bHRDb250ZXh0LmZpbGxS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwg
bV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcmVzdWx0Q29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyKTsKIAotICAgIHJl
c3VsdEltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KS5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb24pOwogfQogCiB2b2lkIEZFRHJvcFNoYWRvdzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAppbmRleCBj
NDk4NjBjMGYwODdjOGFmZDhmZGU1OTA5ZWQ4ZTI5MzhjMzMzN2RhLi43ZWQ0MjlmMDMzOTZlODJj
ODk2YjUzNjcwMjI2ZDAxOGFiMjM3MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9p
ZCBGRUZsb29kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBDb2xvciBjb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoZmxvb2RDb2xvcigpLnJnYigp
LCBmbG9vZE9wYWNpdHkoKSk7Ci0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZmlsbFJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBjb2xv
ciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5maWxs
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSks
IGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBGRUZsb29kOjpkdW1wKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
ZXJnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVy
Z2UuY3BwCmluZGV4IDI2YjkzMmFjZmY3NTIzMzYwMDNkOGFjNTAxZTkzNjU5YzM3YThiZjAuLmZj
Y2RkNDVlMzg1YWU0MjMwYmEzYzkxOGQ3MGEyOTkyNzRhYjMwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcApAQCAtNDcs
MTAgKzQ3LDEwIEBAIHZvaWQgRkVNZXJnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQq
IGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29u
dGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBGaWx0ZXJFZmZlY3QqIGlu
ID0gaW5wdXRFZmZlY3QoaSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZl
cihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU9mZnNldC5jcHAKaW5kZXggYTQ0YzIxZDZhZTlhY2I5N2FjYTUzNjMyNWY4
YzM3NTcxYTRlMmY5ZS4uZmZlYTYzODY4MWFhNGE5N2U4NDA4MGExYjdjODdlODQzOWQ0OTlmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU9mZnNldC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYgZmlsdGVy
ID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5hcHBseUhv
cml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLmFwcGx5VmVydGljYWxTY2FsZShtX2R5KSk7Ci0g
ICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24pOworICAgIHJlc3VsdElt
YWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb24pOwogfQogCiB2b2lkIEZFT2Zmc2V0OjpkdW1w
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVU
aWxlLmNwcAppbmRleCA4ZDMxNzJkOTgxZDdjZDEyZDk3NmViMDQzZGQzZDJjN2JlYmUwNGQzLi41
ZGM0N2RkNmVjZjkzMWFlYTVmODA5ZGJiZDc1NGQwMGEzNWNlYTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC02Nyw5
ICs2Nyw5IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
dGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIHRpbGVJ
bWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKLSAgICB0aWxlSW1hZ2VDb250ZXh0
LT50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlv
bi55KCkpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFn
ZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5s
b2NhdGlvbigpKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxl
SW1hZ2UtPmNvbnRleHQoKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhF
ZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7CisgICAgdGlsZUlt
YWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKSk7CiAKICAgICBh
dXRvIHRpbGVJbWFnZUNvcHkgPSB0aWxlSW1hZ2UtPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCkBAIC04MCw5ICs4MCw5IEBAIHZvaWQgRkVUaWxl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJh
bnNmb3JtOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRp
b24ueCgpIC0gbWF4RWZmZWN0TG9jYXRpb24ueCgpLCBpbk1heEVmZmVjdExvY2F0aW9uLnkoKSAt
IG1heEVmZmVjdExvY2F0aW9uLnkoKSk7CiAgICAgcGF0dGVybi5nZXQoKS5zZXRQYXR0ZXJuU3Bh
Y2VUcmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0
ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBmaWx0ZXJDb250ZXh0LT5z
ZXRGaWxsUGF0dGVybihXVEY6Om1vdmUocGF0dGVybikpOwotICAgIGZpbHRlckNvbnRleHQtPmZp
bGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgp
KSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURjo6bW92ZShwYXR0
ZXJuKSk7CisgICAgZmlsdGVyQ29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpOwogfQogCiB2b2lkIEZFVGlsZTo6ZHVtcCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYzk4ZDViOTg1YWYzYmIxZTViMGMwYzIyNmJiNDVmYzYw
NTRmNDMzYy4uYmExNDcxMmEzY2Y4NDA3NGU3MDc0Y2NiOGQwMTZkMzIxNzMwMzQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcApAQCAtNDY2LDcgKzQ2Niw2IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZl
Y3Q6OmNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1
bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUKG1faW1hZ2VCdWZmZXJS
ZXN1bHQtPmNvbnRleHQoKSk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggM2E3YTUwMjg0M2I1MTQyZTQ1N2JhZDQ3ZjA0OTJj
M2I4ZTU2MTFkYi4uNzBiMWQ1NTY0ZjZmMDNiMTMzOTgwYWJkNTk5YWMzMDY4MGJlNTYwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHAKQEAgLTUxLDE0ICs1MSwxNCBAQCB2b2lkIFNvdXJjZUFscGhhOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0
ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0
dXJuOwotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5j
b250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKTsKIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlciA9IGlucHV0RWZm
ZWN0KDApLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKIAogICAg
IEZsb2F0UmVjdCBpbWFnZVJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNp
emUoKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoaW1hZ2VSZWN0LCBDb2xvcjo6Ymxh
Y2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9z
aXRlRGVzdGluYXRpb25Jbik7CisgICAgZmlsdGVyQ29udGV4dC5maWxsUmVjdChpbWFnZVJlY3Qs
IENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50
KCksIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwogfQogCiB2b2lkIFNvdXJjZUFscGhhOjpkdW1w
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCmluZGV4IDVjMjY1MjQ4ZDA5MzJkODY1ODQwZjY5YWViZGQ3
MjEyMmNlMTdlMjMuLjMxOThiMDM3ODNhNWMyYjQ5YWVhOWVlYjNlOWY4OTgyMjgzZGJjODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFNvdXJjZUdyYXBoaWM6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSB8fCAhZmlsdGVy
LnNvdXJjZUltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCktPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgSW50UG9pbnQoKSk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1h
Z2VCdWZmZXIoZmlsdGVyLnNvdXJjZUltYWdlKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBv
aW50KCkpOwogfQogCiB2b2lkIFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMu
bW0KaW5kZXggMDJjNDhkOGZiMzY2NWY4Y2FlMjQ4YmQyYWI3NmY3MTgxODc0YjkxMi4uYWNlMTkw
NTRiOWRhNTEwYTcxOTFkMDBiNGU1YmY2YjJkZGNkNzhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1t
CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9j
dW1lbnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHcKIAogICAgIC8vIERy
YXcgdW5kZXJsaW5lLgogI2lmICFQTEFURk9STShJT1MpCi0gICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IGxvY2FsQ29udGV4dCh0aGlzKTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgbG9jYWxDb250ZXh0KCp0aGlzKTsKICAgICBOU0dyYXBoaWNzQ29udGV4dCAqY3VycmVu
dENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0ID0gKENHQ29udGV4dFJlZilbY3VycmVudENvbnRleHQgZ3JhcGhpY3NQ
b3J0XTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSWNvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
Y29uTWFjLm1tCmluZGV4IGZkMTNhYmZiNjgyZTIxYmI5YTA4YThmNjRmYmU5ZTAxNGIyZjU3ZjMu
LmY0MTAyN2Y1MmViOGZiOTllZGYyMmM2N2YwMWIwZDhjMzI1MWUxMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC03Nyw3ICs3Nyw3
IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50
R0MoJmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJl
bnRHQyhjb250ZXh0KTsKIAogICAgIFttX25zSW1hZ2UgZHJhd0luUmVjdDpyZWN0IGZyb21SZWN0
Ok5TTWFrZVJlY3QoMCwgMCwgW21fbnNJbWFnZSBzaXplXS53aWR0aCwgW21fbnNJbWFnZSBzaXpl
XS5oZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBvc2l0ZVNvdXJjZU92ZXIgZnJhY3Rpb246MS4wZl07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDAxZTg2ZjFjYzkyYTVmOTY3MGMy
YmM4MGNjOTliMjI3M2ExNTYxZTguLjE5NmRlY2M2NDQ3YmIxNDBkZDhkY2MwOTlhYTM4NTBkOGM5
ZGY5ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC0xMjcsOCArMTI3LDggQEAg
cHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZv
aWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvclJlbmRl
cmluZygpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYTdh
MjEzN2RjMDMzODZjNDU4ZjU2NWQ5YzMyNWExMmM2YzYxMDk5NC4uYTRjMDBiNzcxZjU4N2IyMWNi
MTMyMWYyYjVmYjUzNTA3ZTA2OTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpA
QCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmVwYWlu
dCgpCiAgICAgbV9wbGF5ZXItPnJlcGFpbnQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpw
YWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcikKIHsKICAgICBpZCBxdFZpZGVvUmVuZGVyZXIgPSBtX3F0VmlkZW9SZW5k
ZXJlci5nZXQoKTsKICAgICBpZiAoIXF0VmlkZW9SZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyaW5n
TW9kZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllcikgewpAQCAtMTE5Nyw5ICsxMTk3LDkg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXgKICAgICBwYWludChjb250ZXh0LCByKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAg
ICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IG1faGFzVW5zdXBwb3J0ZWRUcmFj
a3MpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8IG1faGFzVW5zdXBwb3J0
ZWRUcmFja3MpCiAgICAgICAgIHJldHVybjsKICAgICBpZCBxdFZpZGVvUmVuZGVyZXIgPSBtX3F0
VmlkZW9SZW5kZXJlci5nZXQoKTsKICAgICBpZiAoIXF0VmlkZW9SZW5kZXJlcikKQEAgLTEyMTEs
MTIgKzEyMTEsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIKICAgICBGbG9hdFNpemUgc2Nh
bGVGYWN0b3IoMS4wZiwgLTEuMGYpOwogICAgIEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2lu
dCgpLCByLnNpemUoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyLngoKSwgci55KCkgKyByLmhl
aWdodCgpKTsKLSAgICBjb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgY29udGV4dC0+
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC50
cmFuc2xhdGUoci54KCksIHIueSgpICsgci5oZWlnaHQoKSk7CisgICAgY29udGV4dC5zY2FsZShz
Y2FsZUZhY3Rvcik7CisgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KElu
dGVycG9sYXRpb25Mb3cpOwogCi0gICAgbmV3Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBn
cmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
IGZsaXBwZWQ6Tk9dOworICAgIG5ld0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpIGZsaXBw
ZWQ6Tk9dOwogCiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKICAg
ICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bmV3Q29udGV4dF07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCmluZGV4IDBkY2Y2YzFjYTljZmZkMmQyM2Q2ZjQ4YzVjOTE2NDNlMWMx
MDA1YjcuLmJmYWFmYTkzNTcwMDA3ZDVmZGMyMzUzYjAxYjI0ZDE0NDUzMWFmYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCkBAIC02OSwxOSArNjksMTkgQEAgdW5zaWduZWQgUERGRG9jdW1lbnRJ
bWFnZTo6cGFnZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gW21fZG9jdW1lbnQgcGFnZUNvdW50
XTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIHsKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDdXJyZW50Q29udGV4dChjb250ZXh0KTsKIAogICAgIC8vIFRoZXNlIHN0YXRlcyBjYW4gYmUg
bXV0YXRlZCBieSBQREZLaXQgYnV0IGFyZSBub3Qgc2F2ZWQKICAgICAvLyBvbiB0aGUgY29udGV4
dCdzIHN0YXRlIHN0YWNrLiAoPHJkYXI6Ly9wcm9ibGVtLzE0OTUxNzU5PikKLSAgICBib29sIGFs
bG93c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24g
PSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250ZXh0R2V0
QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBib29s
IGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBp
eGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgW1ttX2Rv
Y3VtZW50IHBhZ2VBdEluZGV4OjBdIGRyYXdXaXRoQm94OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07
CiAKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcpOwotICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRT
dWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3Vi
cGl4ZWxRdWFudGl6YXRpb24pOworICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTbW9vdGhpbmco
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21vb3RoaW5nKTsKKyAgICBDR0NvbnRl
eHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24pOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IGM0OTBi
MTExNjFmZDhlMjcyM2FhOTY2MmQxYjUwMDM5NDYzMTY2OGIuLmEyN2EyZWY2ZmVjZjdlODhkMmFh
MzVmMWU4Y2FhNjUyNTYxYWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCkBAIC0xMjcsMjUgKzEyNywyNSBAQCBzdGF0aWMg
Q0dQYXRoUmVmIGNyZWF0ZVBhdGhGb3JHbHlwaChIREMgaGRjLCBHbHlwaCBnbHlwaCkKICAgICBy
ZXR1cm4gcGF0aDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXImIGdseXBoQnVmZmVyLAogICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3Jh
cGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250
ZXh0ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGJvb2wgc2hvdWxk
VXNlRm9udFNtb290aGluZyA9IFdlYkNvcmVTaG91bGRVc2VGb250U21vb3RoaW5nKCk7CiAKICAg
ICBzd2l0Y2goZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKSB7CiAgICAgY2FzZSBB
bnRpYWxpYXNlZDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlh
cyh0cnVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVl
KTsKICAgICAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IGZhbHNlOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBTdWJwaXhlbEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwogICAgICAgICBzaG91bGRVc2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTm9TbW9vdGhp
bmc6IHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2Up
OworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKICAg
ICAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwKIAogICAgIHVp
bnQzMl90IG9sZEZvbnRTbW9vdGhpbmdTdHlsZSA9IHdrU2V0Rm9udFNtb290aGluZ1N0eWxlKGNn
Q29udGV4dCwgc2hvdWxkVXNlRm9udFNtb290aGluZyk7CiAKLSAgICBjb25zdCBGb250UGxhdGZv
cm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBG
b250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogCiAg
ICAgQ0dDb250ZXh0U2V0Rm9udChjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAK
QEAgLTE3OCw0MyArMTc4LDQzIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAgICAgRmxvYXRT
aXplIHRyYW5zbGF0aW9uID0gZ2x5cGhCdWZmZXIub2Zmc2V0QXQoZnJvbSk7CiAKICAgICBDR0Nv
bnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwotICAgIHdr
U2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0eWxlKGNnQ29udGV4dCwgZm9udC0+aXNTeXN0ZW1G
b250KCksIGZhbHNlLCBmb250LT5wbGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CisgICAgd2tTZXRD
R0NvbnRleHRGb250UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LmlzU3lzdGVtRm9udCgp
LCBmYWxzZSwgZm9udC5wbGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CiAKICAgICBGbG9hdFNpemUg
c2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29s
b3I7CiAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4
dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRv
d0NvbG9yU3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKLSAgICBib29s
IGhhc1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0g
VGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAo
IWdyYXBoaWNzQ29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0Nv
bnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAg
IGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgp
ID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIg
JiYgKCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGlj
c0NvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAg
ICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93
cyBvdXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxv
c2luZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xl
YXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5m
aWxsQ29sb3IoKTsKLSAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGdyYXBoaWNz
Q29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFy
U2hhZG93KCk7CisgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC5maWxs
Q29sb3IoKTsKKyAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGdyYXBoaWNzQ29u
dGV4dC5maWxsQ29sb3JTcGFjZSgpOwogICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hh
ZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwg
c2hhZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxDb2xvci5hbHBoYSgpIC8gMjU1KTsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xv
clNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxs
Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBv
aW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAg
ICAgICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZl
bid0IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2
ZS4KLSAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5o
ZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQtPnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WSA9IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdo
dCgpICogKGdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAx
KTsKICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgc2hhZG93VGV4
dFgsIHNoYWRvd1RleHRZKTsKICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNl
cyhjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Q0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgICAg
ICBpZiAoZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpKSB7Ci0gICAgICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0
aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCks
IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgp
KTsKKyAgICAgICAgaWYgKGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpKSB7CisgICAgICAgICAg
ICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xh
dGlvbi53aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRP
ZmZzZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQu
aGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhj
Z0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dT
aXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgICAgICB9
Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENv
bG9yU3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xv
ciwgZmlsbENvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlv
bihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSAr
IHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25z
dCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAg
aWYgKGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRU
ZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsg
Zm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWln
aHQoKSk7CisgICAgaWYgKGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpKSB7CisgICAgICAgIENH
Q29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9u
LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgdHJhbnNs
YXRpb24uaGVpZ2h0KCkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgfQog
CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRT
aGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JT
cGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICAgICB3a1Jlc3Rv
cmVGb250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3Bw
CmluZGV4IDNhMGNiMzBiZTc2YzBjZTc0MWM1NGZlY2FkYzdjNDhlYTM5Y2RlZTMuLmRiOTYzYzJm
NjQwYmRmYTRhM2E2NDg1NDQ4YTQ5YTBjOWY1OGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgZmxv
YXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3Qg
VGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gYmVmb3JlV2lkdGg7CiB9CiAKLWZsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIg
aG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZvciBlYWNoIGdseXBoLgog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGZsb2F0IEZv
bnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJp
bmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29u
c3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBpbml0aWFsQWR2
YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywg
Z2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5kZXggZWU4OGUyMDViYzEzN2U1NjIwMDQw
YzBjMWZmYmRmOTA4YTRlZmEyZi4uYTc4MDcwZDlhYWFmN2Y0ZTJhMzE4OWVlMTQ4YTZhNWM3OTM4
OGMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lj
b25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29u
V2luLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQogICAgIGlmIChjb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3
aW5kb3dDb250ZXh0KCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHIpKTsKKyAgICBMb2NhbFdp
bmRvd3NDb250ZXh0IHdpbmRvd0NvbnRleHQoY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyKSk7
CiAgICAgRHJhd0ljb25FeCh3aW5kb3dDb250ZXh0LmhkYygpLCByLngoKSwgci55KCksIG1faElj
b24sIHIud2lkdGgoKSwgci5oZWlnaHQoKSwgMCwgMCwgRElfTk9STUFMKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2luZG93c0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRv
d3NDb250ZXh0LmgKaW5kZXggY2Y1MWIwMDgxMDg4NTlmMDMxNTdhY2IyZWE2NjNjZmQ5MGVmMWJi
MS4uM2FkZGMxNDRmYzcxZjc2MjQwYWY5OTY5NGZmMDVlMDY5ZDIxYjQzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2luZG93c0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dz
Q29udGV4dC5oCkBAIC0zNCwyNCArMzQsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
TG9jYWxXaW5kb3dzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxXaW5k
b3dzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9jYWxXaW5kb3dzQ29udGV4dChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzdXBwb3J0
QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0gdHJ1ZSkKKyAgICBMb2Nh
bFdpbmRvd3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gdHJ1ZSwgYm9vbCBtYXlDcmVh
dGVCaXRtYXAgPSB0cnVlKQogICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29u
dGV4dCkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAgICAgICAgLCBtX3N1cHBvcnRBbHBoYUJs
ZW5kKHN1cHBvcnRBbHBoYUJsZW5kKQogICAgICAgICAsIG1fbWF5Q3JlYXRlQml0bWFwKG1heUNy
ZWF0ZUJpdG1hcCkKICAgICB7Ci0gICAgICAgIG1faGRjID0gbV9ncmFwaGljc0NvbnRleHQtPmdl
dFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVC
aXRtYXApOworICAgICAgICBtX2hkYyA9IG1fZ3JhcGhpY3NDb250ZXh0LmdldFdpbmRvd3NDb250
ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOwogICAg
IH0KIAogICAgIH5Mb2NhbFdpbmRvd3NDb250ZXh0KCkKICAgICB7Ci0gICAgICAgIG1fZ3JhcGhp
Y3NDb250ZXh0LT5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVjdCwgbV9zdXBwb3J0
QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2dyYXBoaWNzQ29udGV4
dC5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVu
ZCwgbV9tYXlDcmVhdGVCaXRtYXApOwogICAgIH0KIAogICAgIEhEQyBoZGMoKSBjb25zdCB7IHJl
dHVybiBtX2hkYzsgfQogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCogbV9ncmFwaGlj
c0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29udGV4dDsKICAgICBI
REMgbV9oZGM7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiAgICAgYm9vbCBtX3N1cHBvcnRBbHBoYUJs
ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAppbmRleCBhN2Jh
NDJhMmViM2UzOWU0Mjc2NTVhNDg4MzIwYzNkYzBmMmQ3NzAyLi4yZWUzMTgyMGNlYTBhNGRkMGYx
ZmU3Y2E5OGY3MjQ3MWRhMGM2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lk
Z2V0R3RrLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFdpZGdldDo6aGlkZSgpCiAgICAgICAg
IGd0a193aWRnZXRfaGlkZShwbGF0Zm9ybVdpZGdldCgpKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCBhOGRmY2MzMjFiYWRmZWQyNzEwZmVlYzUw
OGQyN2NjMTNhODEzMWNhLi42MjMwYmE3NDg1NTg1MDhhMTc0ZjM1MjY5OTk5ZjE0ZjgwNGZjZWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KQEAgLTE0MSw3ICsx
NDEsNyBAQCBOU1ZpZXcqIFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4g
dmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3Qg
SW50UmVjdCYgcikKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgaWYgKHAtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KaW5k
ZXggYjUwNWZjMTM4ZDU4MWE3YTQxZjFiZWE2M2ZjZTUyNmU4NTQ2MWZkYi4uNWZiMDUyZDQ1Njdk
YTAwYmQ4MmRlMjFjOWFkNjkwMTA1NWQ1ZDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQgZHJh
d0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250ICpmb250LCBO
U0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5T
RGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUg
YWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtl
UkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAKLSAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1Rl
eHQoJmdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8g
cG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOworICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4
dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxpcHBlZCA/IHBv
aW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZmxpcHBl
ZCkKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dC5oCmluZGV4IDU4YjY0NzJjZjJlMDdjNmI5MDgwNDAyODdlYjYyYzVhOTAyN2Vm
MDEuLjQ4ZmViMmVhNGQxOWQ0MGEwOTVjOWRmZWQ1Yjk3NjJiYWM4Njc2NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0LmgKQEAgLTI5LDExICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgfkxvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCgpOwogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQoKTsKIHBy
aXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0OworICAg
IEdyYXBoaWNzQ29udGV4dCYgbV9zYXZlZEdyYXBoaWNzQ29udGV4dDsKICAgICBOU0dyYXBoaWNz
Q29udGV4dCogbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0OwogICAgIGJvb2wgbV9kaWRTZXRHcmFw
aGljc0NvbnRleHQ7CiB9OwpAQCAtNDEsOCArNDEsOCBAQCBwcml2YXRlOgogY2xhc3MgQ29udGV4
dENvbnRhaW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGV4dENvbnRhaW5lcik7
CiBwdWJsaWM6Ci0gICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCkKLSAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpKQorICAgIENvbnRleHRDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQpCisgICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1t
CmluZGV4IDI2MzJmNjY0M2JmZTBmNjlhMzQyNzExNmY4NzgxMWFiNWQ5ZTBjZGUuLjEzOWRkNjY1
YmMxYmViMTBiNzVhNGU0M2VjZmQ3ZjcyMDcxODE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQpA
QCAtMjQsMTEgKzI0LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQpCi0gICAgOiBtX2RpZFNldEdyYXBoaWNzQ29udGV4dChmYWxz
ZSkKK0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQorICAgIDogbV9zYXZlZEdyYXBo
aWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCisgICAgLCBtX2RpZFNldEdyYXBoaWNzQ29udGV4
dChmYWxzZSkKIHsKLSAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0ID0gZ3JhcGhpY3NDb250ZXh0
OwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgIGdyYXBoaWNzQ29udGV4dC5zYXZl
KCk7CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gdGhpcy0+Y2dDb250ZXh0KCk7CiAg
ICAgaWYgKGNnQ29udGV4dCA9PSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBn
cmFwaGljc1BvcnRdKSB7CkBAIC00OSwxMiArNDksMTIgQEAgTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KCkKICAgICAgICAgW21fc2F2ZWRO
U0dyYXBoaWNzQ29udGV4dCByZWxlYXNlXTsKICAgICB9CiAKLSAgICBtX3NhdmVkR3JhcGhpY3ND
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7
CiB9CiAKIENHQ29udGV4dFJlZiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29udGV4
dCgpCiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRHcmFwaGljc0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBtX3Nh
dmVkR3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHJldHVybiBjZ0NvbnRl
eHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5tbQppbmRleCA3N2YyZDgwOGNjNjQ4NTcxMWIxYTkyZWM4ZjhiY2I5N2MzOGM2ODY2Li5j
MzM3NjVmYzI1ZDBkYzNiYTVmMWYyZTU1OTk5ZWE4Yzc1MjhhYjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC01MTMsNyArNTEz
LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LmNsaXAoZGFtYWdl
UmVjdCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNjcm9sbGJhci5mcmFtZVJlY3QoKS54
KCksIHNjcm9sbGJhci5mcmFtZVJlY3QoKS55KCkpOwotICAgICAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0KTsKKyAgICAgICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKICAgICAgICAgc2Nyb2xsYmFy
UGFpbnRlclBhaW50KHNjcm9sbGJhck1hcCgpLT5nZXQoJnNjcm9sbGJhcikuZ2V0KCksIHNjcm9s
bGJhci5lbmFibGVkKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMuaAppbmRleCBmOGVlMTZlYjllYTEyMTQzYjIxMjVmMDhhZmQ2MzYwNmNjODQxNzEyLi4zYmFk
ZTdhNjZlMDlkNzk2MzY4MTEzZTQ0Njc5ZTA4MmY3Zjg0M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaApAQCAtNTIsMTMgKzUyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0IHBhcnQp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBhcnQ7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcq
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3Jv
bGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRy
b2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3Rv
cikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1hYyBp
cyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5hbCB0
byBUaGVtZU1hYy4KICAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3Kiwg
Y29uc3QgQ29udHJvbFN0YXRlcyYsIGJvb2wgdXNlVW5wYXJlbnRlZFZpZXcgPSBmYWxzZSk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0g
ICAgc3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlND
ZWxsKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3KiwgYm9vbCAv
KiBkcmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8qIHVz
ZUltYWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CisgICAgc3Rh
dGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3KiwgYm9vbCAvKiBkcmF3
QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8qIHVzZUltYWdl
QnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5k
ZXggNTFjZmQwZGUzYTNiNTlmZTQ5N2U5NmEwMDhiYThjZThiZmY5OGYwOC4uMWJkNTA5ZjU3MGM4
NDE2MTAzMGM4NTM3ODk1ZDdlMzZlYTE1NmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9UaGVtZU1hYy5tbQpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBib29sIGRyYXdDZWxsRm9j
dXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9sVmll
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihD
b250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQg
em9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKK3N0YXRpYyB2b2lkIHBhaW50VG9nZ2xlQnV0dG9u
KENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9h
dCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUwogCkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0
b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKICAg
ICB9CiAgICAgY29udHJvbFN0YXRlcy5zZXREaXJ0eShmYWxzZSk7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29u
dHJvbFNpemUgPSBbdG9nZ2xlQnV0dG9uQ2VsbCBjb250cm9sU2l6ZV07CiAgICAgSW50U2l6ZSB6
b29tZWRTaXplID0gYnV0dG9uVHlwZSA9PSBDaGVja2JveFBhcnQgPyBjaGVja2JveFNpemVzKClb
Y29udHJvbFNpemVdIDogcmFkaW9TaXplcygpW2NvbnRyb2xTaXplXTsKQEAgLTQxMiw5ICs0MTIs
OSBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25UeXBl
LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYp
IHsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8g
em9vbUZhY3Rvcik7CiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRIZWlnaHQoaW5mbGF0ZWRSZWN0
LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShpbmZs
YXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgY29udGV4dC0+dHJh
bnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAg
ICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Cisg
ICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0
LnkoKSk7CiAgICAgfQogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChjb250ZXh0KTsKQEAgLTQzMSwxMSArNDMxLDExIEBAIHN0YXRpYyB2b2lkIHBhaW50VG9n
Z2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xT
dGF0CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAogICAg
IGlmIChbdG9nZ2xlQnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSkgewotICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7
Ci0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoMCwgLWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICBbdG9nZ2xlQnV0dG9u
Q2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNNYWtlUG9pbnQoMCwgMCldOworICAgICAgICBbdG9n
Z2xlQnV0dG9uQ2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OmNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCkgYXRMb2NhdGlvbjpOU01ha2VQb2ludCgwLCAwKV07CiAgICAg
ICAgIGlmICghW3RvZ2dsZUJ1dHRvbkNlbGwgX3N0YXRlQW5pbWF0aW9uUnVubmluZ10gJiYgaXND
ZWxsRm9jdXNlZCkKICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IFRoZW1lTWFjOjpkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCh0b2dnbGVCdXR0b25DZWxsLmdldCgpLCBj
b250ZXh0LCBpbmZsYXRlZFJlY3QsIHZpZXcsIGZhbHNlLCB0cnVlLCB1c2VJbWFnZUJ1ZmZlciwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0gZWxzZQpAQCAtNTIwLDE0ICs1MjAsMTQgQEAgc3Rh
dGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRyb2xT
dGF0ZXMmIGNvbnRyb2xTdGF0ZXMKICAgICByZXR1cm4gY2VsbDsKIH0KICAgICAKLXN0YXRpYyB2
b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xT
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQorc3RhdGljIHZvaWQgcGFpbnRC
dXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0
IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TCiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5lZWRl
ZCBmb3IgdGhlIGNvbnRyb2wgYW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgogICAg
IENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLnN0YXRlcygpOwog
ICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBjb250cm9sU3RhdGVz
LCBJbnRTaXplKHpvb21lZFJlY3Quc2l6ZSgpKSwgem9vbUZhY3Rvcik7Ci0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBOU0NvbnRyb2xTaXplIGNv
bnRyb2xTaXplID0gW2J1dHRvbkNlbGwgY29udHJvbFNpemVdOwogICAgIEludFNpemUgem9vbWVk
U2l6ZSA9IGJ1dHRvblNpemVzKClbY29udHJvbFNpemVdOwpAQCAtNTQ3LDkgKzU0Nyw5IEBAIHN0
YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIGNv
bnRyb2xTdGF0ZXMsIEdyYXBoaWNzCiAgICAgICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYpIHsK
ICAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lkdGgoKSAv
IHpvb21GYWN0b3IpOwogICAgICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRl
ZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRyYW5z
bGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAgICAg
ICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3Qu
eSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGlu
ZmxhdGVkUmVjdC55KCkpOworICAgICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoem9v
bUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLWlu
ZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICAgICAgfQogICAgIH0KICAg
ICAKQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29udHJv
bFNpemVGb3JGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHJldHVybiBOU01pbmlD
b250cm9sU2l6ZTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMm
IHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQorc3RhdGljIHZvaWQgcGFpbnRT
dGVwcGVyKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcq
KQogewogICAgIC8vIFdlIGRvbid0IHVzZSBOU1N0ZXBwZXJDZWxsIGJlY2F1c2UgdGhlcmUgYXJl
IG5vIHdheXMgdG8gZHJhdyBhbgogICAgIC8vIE5TU3RlcHBlckNlbGwgd2l0aCB0aGUgdXAgYnV0
dG9uIGhpZ2hsaWdodGVkLgpAQCAtNjE3LDEzICs2MTcsMTMgQEAgc3RhdGljIHZvaWQgcGFpbnRT
dGVwcGVyKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdAogICAgICAgICBkcmF3SW5mby5raW5kID0ga1RoZW1lSW5jRGVjQnV0dG9uOwogCiAgICAg
SW50UmVjdCByZWN0KHpvb21lZFJlY3QpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYpIHsKICAgICAgICAg
cmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgcmVjdC5z
ZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LT50
cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNs
YXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUocmVj
dC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoem9vbUZh
Y3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC54KCks
IC1yZWN0LnkoKSk7CiAgICAgfQogICAgIENHUmVjdCBib3VuZHMocmVjdCk7CiAgICAgQ0dSZWN0
IGJhY2tncm91bmRCb3VuZHM7CkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBUaGVtZU1hYzo6c2V0
Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiBjb25zdCBmbG9hdCBi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGggPSAzLjBmOwogCi1ib29sIFRoZW1lTWFjOjpkcmF3
Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqIGNlbGwsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbmZsYXRlZFJlY3QsIE5TVmlldyog
dmlldywgYm9vbCBkcmF3QnV0dG9uQ2VsbCwgYm9vbCBkcmF3Rm9jdXNSaW5nLCBib29sIHVzZUlt
YWdlQnVmZmVyLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK2Jvb2wgVGhlbWVNYWM6OmRyYXdD
ZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluZmxhdGVkUmVjdCwgTlNWaWV3KiB2
aWV3LCBib29sIGRyYXdCdXR0b25DZWxsLCBib29sIGRyYXdGb2N1c1JpbmcsIGJvb2wgdXNlSW1h
Z2VCdWZmZXIsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIEFTU0VSVChkcmF3QnV0
dG9uQ2VsbCB8fCBkcmF3Rm9jdXNSaW5nKTsKICAgICBib29sIG5lZWRzUmVwYWludCA9IGZhbHNl
OwpAQCAtNjc5LDcgKzY3OSw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3NDb250CiAgICAgICAgICAg
ICBpZiAoZHJhd0ZvY3VzUmluZykKICAgICAgICAgICAgICAgICBuZWVkc1JlcGFpbnQgPSBkcmF3
Q2VsbEZvY3VzUmluZyhjZWxsLCBpbWFnZUJ1ZmZlckRyYXdSZWN0LCB2aWV3KTsKICAgICAgICAg
fQotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENv
bG9yU3BhY2VTUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25G
b2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOworICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFj
ZVNSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CiAgICAgICAgIHJl
dHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgfQogICAgIGlmIChkcmF3QnV0dG9uQ2VsbCkKQEAgLTg0
MCw3ICs4NDAsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChDb250
cm9sUGFydCBwYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiBzdAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJvbFBhcnQgcGFydCwg
Q29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xs
VmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKK3Zv
aWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIHN0YXRl
cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3Qs
IGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCiB7CiAgICAgc3dpdGNoIChwYXJ0KSB7
CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
aWRnZXRNYWMubW0KaW5kZXggNTRkOWM4NTdkZjQwMmI4MmQ3YTdkMTMwZjhmNzYxODVlMmJkNzlh
YS4uYjMwZmQ4MTM0M2MwNmFjZDg5YmE4ZjllMmY2NzQzNzZmNmVhZDAyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xODUsOSArMTg1LDkgQEAgTlNWaWV3
ICpXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZv
aWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHIpCit2
b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByKQog
ewotICAgIGlmIChwLT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHAucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNWaWV3ICp2aWV3ID0gZ2V0T3V0ZXJWaWV3
KCk7CiAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQogICAgICAgICAgICAgc2Nyb2xsVmlldyA9IDA7CiAg
ICAgfQogCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHAtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwLnBsYXRmb3JtQ29udGV4dCgpOwogICAg
IEFTU0VSVChjZ0NvbnRleHQgPT0gW2N1cnJlbnRDb250ZXh0IGdyYXBoaWNzUG9ydF0pOwogICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzYjQ5NzY2MGNjOTY4YjMwMWRjZjA2N2U0M2Y4
ZWM1ODg5NzFkMTI2Li40NmE3Y2I3MTEyMmEwNGUyNmI2YmEyZTE2MTkwMzdhOGJhZDhkNzczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMTgwLDcg
KzE4MCw3IEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUoY29uc3Qg
SW50U2l6ZSYpCiB7CiB9CiAKLXZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKaW5kZXggMWMx
ZjIxODJlOTU5MzdjN2FjNDViYjU4NzRiZWRmYzBiMGNkMTJiMC4uMDMyNjFmYWM2MmY0M2ZjOGFh
MmMwZDcxMDc3ODM2NjIwN2E1M2IwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtXaXRoVG9sZXJhbmNl
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJh
clRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5jcHAKaW5kZXggYzY1NGFiMTAzMTlmNzE1MDRkMTRmN2UyMWFlN2QxNTY1YTRmMDkwYi4u
M2EwOTQ0NDIzYjY4NGI4MzgxYjdhNDNhOWE4OTZiMzlhZjliNDM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0yNDcsNyAr
MjQ3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3IKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUp
CiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFy
ZW50KHNjcm9sbGJhclRoZW1lLCBwYXJ0LCBzdGF0ZSk7CiAKLSAgICBMb2NhbFdpbmRvd3NDb250
ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKKyAgICBMb2Nh
bFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQp
OwogICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogCiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQpA
QCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiCiAgICAgaWYgKHNjcm9s
bGJhclRoZW1lKQogICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFs
bHlUcmFuc3BhcmVudChzY3JvbGxiYXJUaGVtZSwgU1BfQlVUVE9OLCB4cFN0YXRlKTsKIAotICAg
IExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhh
QmxlbmQpOworICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwg
cmVjdCwgYWxwaGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAgICAgaWYgKHNj
cm9sbGJhclRoZW1lKQogICAgICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1l
LCB3aW5kb3dzQ29udGV4dC5oZGMoKSwgU1BfQlVUVE9OLCB4cFN0YXRlLCAmdGhlbWVSZWN0LCAw
KTsKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYQogICAgIGJvb2wg
YWxwaGFCbGVuZCA9IGZhbHNlOwogICAgIGlmIChzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgYWxw
aGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5VHJhbnNwYXJlbnQoc2Nyb2xsYmFy
VGhlbWUsIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBT
UF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUpOwotICAgIExvY2FsV2luZG93c0NvbnRl
eHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOworICAgIExvY2Fs
V2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7
CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKSB7CiAg
ICAgICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xsYmFyVGhlbWUsIHdpbmRvd3NDb250ZXh0
LmhkYygpLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
U1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQsIHN0YXRlLCAmdGhlbWVSZWN0LCAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKaW5kZXggMjcxZTM2ZDVjYjMxMGY1
ZjY4ODdkZDIzNzkwYTliNmJhNDY4ZjBhMC4uOWFjZTFhMTQ4NTI0OWQ3NTZlMWJkM2UyMmU3ZTE2
MDY0MDVlOWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdl
dFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAK
QEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1
cnNvcikKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3IpOwogfQogCi12
b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit2b2lk
IFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IDQ2OWY3ZWZlZTg3
Zjc1MjE0MjI1MjZkYzY2NWE2YzQxNmQ0ZWY4MzUuLjJlOGZkMGJiMGEyZTBiYTQzYjZlYzU1NjBh
NDM0ZDZiZmZmZGI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxp
cHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNw
cApAQCAtNDIsMTQgKzQyLDE0IEBAIEVsbGlwc2lzQm94OjpFbGxpcHNpc0JveChSZW5kZXJCbG9j
a0Zsb3cmIHJlbmRlcmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzCiAKIHZvaWQgRWxs
aXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAg
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgY29u
c3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgpOwogICAgIENvbG9y
IHRleHRDb2xvciA9IGxpbmVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RmlsbENvbG9yKTsKLSAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQtPmZpbGxD
b2xvcigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9y
KCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxlLmNv
bG9yU3BhY2UoKSk7CiAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAgICBpZiAobGluZVN0
eWxlLnRleHRTaGFkb3coKSkgewotICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coTGF5b3V0U2l6
ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPnko
KSksCisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KExheW91dFNpemUobGluZVN0eWxlLnRleHRT
aGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkpLAogICAgICAgICAgICAg
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+cmFkaXVzKCksIGxpbmVTdHlsZS50ZXh0U2hhZG93KCkt
PmNvbG9yKCksIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICBzZXRTaGFkb3cgPSB0
cnVlOwogICAgIH0KQEAgLTYxLDE4ICs2MSwxOCBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYQog
ICAgICAgICAvLyBTZWxlY3QgdGhlIGNvcnJlY3QgY29sb3IgZm9yIHBhaW50aW5nIHRoZSB0ZXh0
LgogICAgICAgICBDb2xvciBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlVGV4dENvbG9yKCkg
PyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiBibG9ja0Zsb3coKS5zZWxlY3Rpb25Gb3Jl
Z3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGZvcmVncm91bmQuaXNWYWxpZCgpICYmIGZvcmVn
cm91bmQgIT0gdGV4dENvbG9yKQotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGZv
cmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5z
ZXRGaWxsQ29sb3IoZm9yZWdyb3VuZCwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgfQog
CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNv
cnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cuCi0gICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwg
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwg
bGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFp
bnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJp
Y3MoKS5hc2NlbnQoKSkpOworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgUmVuZGVyQmxvY2s6
OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgbGluZVN0eWxlLCBB
bGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQueCgp
LCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxsIGNvbG9yLgotICAgIGlmICh0
ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENvbG9yKCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGlmICh0ZXh0
Q29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgIGlmIChzZXRTaGFk
b3cpCi0gICAgICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7CisgICAgICAgIGNvbnRleHQuY2xl
YXJTaGFkb3coKTsKIAogICAgIHBhaW50TWFya3VwQm94KHBhaW50SW5mbywgcGFpbnRPZmZzZXQs
IGxpbmVUb3AsIGxpbmVCb3R0b20sIGxpbmVTdHlsZSk7CiB9CkBAIC0xMTksNyArMTE5LDcgQEAg
SW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgpCiAgICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3Qoc2VsZWN0aW9uUmVjdCk7CiB9CiAKLXZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2Vs
ZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250
KQordm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiB7CiAgICAgQ29sb3IgdGV4dENvbG9yID0g
c3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIENvbG9y
IGMgPSBibG9ja0Zsb3coKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTEzMiwxMiAr
MTMyLDEyIEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgICAgIGMgPSBDb2xvcigweGZm
IC0gYy5yZWQoKSwgMHhmZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgpKTsKIAogICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFs
d2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cuCiAg
ICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdCh4KCkgKyBwYWludE9mZnNl
dC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIHJvb3RCb3guc2VsZWN0aW9uVG9wKCksIDAs
IHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgc3R5bGUsIEFs
bG93VHJhaWxpbmdFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZvclRl
eHQocnVuLCBzZWxlY3Rpb25SZWN0LCAwLCAtMSk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0Rldmlj
ZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xvclNw
YWNlKCkpOwogfQogCiBib29sIEVsbGlwc2lzQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRl
c3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FbGxpcHNpc0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmgKaW5kZXggMjdlOTEyZmZmYTAzYTU0ZTEyNGQ5YmQzMmZjNzE5MTY2MzFjYjI1MS4uNDRjMDVk
YWYxYWQyNGJjZmIwOGZjM2M0OWNkYTE0YWI3NmNmMTEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0VsbGlwc2lzQm94LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBh
aW50TWFya3VwQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRlclN0
eWxlJik7CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQotICAgIHZvaWQgcGFpbnRTZWxlY3Rp
b24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CisgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
Rm9udENhc2NhZGUmKTsKICAgICBJbmxpbmVCb3gqIG1hcmt1cEJveCgpIGNvbnN0OwogCiAgICAg
Ym9vbCBtX3Nob3VsZFBhaW50TWFya3VwQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggNjJkYWM0YjhiNDYyMjM4N2I4ZGNj
ZTc4ZmVhMjA5MmQyMTQ0MGU1Yy4uNTc1N2U5YTg1MTgzYzA3NjgwYmExOWY0YTZhMzIxZTY1NzZk
MWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJl
bmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEZpbHRlckVmZmVjdFJlbmRlcmVyOjp+RmlsdGVy
RWZmZWN0UmVuZGVyZXIoKQogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRlcmVy
OjppbnB1dENvbnRleHQoKQogewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gc291cmNlSW1h
Z2UoKS0+Y29udGV4dCgpIDogMDsKKyAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/ICZzb3VyY2VJ
bWFnZSgpLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QsIFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQpAQCAtNDE3LDcgKzQxNyw3
IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmJlZ2luRmlsdGVyRWZmZWN0KCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6
YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQpCit2
b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGlj
c0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9oYXZlRmlsdGVy
RWZmZWN0ICYmIG1fcmVuZGVyTGF5ZXItPmZpbHRlclJlbmRlcmVyKCkpOwogICAgIEZpbHRlckVm
ZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigpOwpA
QCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5
RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25DCiAgICAgTGF5b3V0UmVj
dCBkZXN0UmVjdCA9IGZpbHRlci0+b3V0cHV0UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUobV9w
YWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAotICAgIGRlc3RpbmF0aW9uQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0cHV0KCksIG1fcmVuZGVyTGF5ZXItPnJl
bmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgZGVzdGluYXRpb25Db250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigp
LnN0eWxlKCkuY29sb3JTcGFjZSgpLAogICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGRl
c3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXgg
YmViM2Y3N2M0OGEwYTJiNGZhMTNiNmU2NDU2Y2IzYTc3YTliMGY2OC4uM2UxMzM3ZDNkMTVmNzYx
MTkzNGQ1YzZkNTc2YTlmMTgyMDE0NzhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBwcmVwYXJlRmlsdGVyRWZmZWN0KFJlbmRlckxheWVyKiwgY29uc3QgTGF5b3V0UmVj
dCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlv
dXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKICAgICBib29sIGJlZ2luRmlsdGVyRWZmZWN0KCk7
Ci0gICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9u
Q29udGV4dCk7CisgICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRl
c3RpbmF0aW9uQ29udGV4dCk7CiAgICAgCiAgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250
ZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFn
ZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCBjNGE2ZTQzYzY3MjJmNDEwZjdiZjkwZDEwOGI4YzU2
MGMzMjAwMDljLi42ZmI4MzQyNDI3NDc5NDQxOGNhODAzM2Q3YjRkYWQ3MWI3ZDEzNGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIu
Y3BwCkBAIC05OSwxMSArOTksMTEgQEAgdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpyZXN0
YXJ0VGltZXIoKQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KGNMb3dRdWFsaXR5VGltZVRocmVz
aG9sZCk7CiB9CiAKLWJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
b2JqZWN0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXpl
JiBzaXplKQorYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93UXVh
bGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmpl
Y3QsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNp
emUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwgdGhlbiBu
b25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaAogICAgIC8v
IHF1YWxpdHkuCi0gICAgaWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwg
aW1hZ2UtPmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwgaW1hZ2Ut
PmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCkuaW1hZ2VS
ZW5kZXJpbmcoKSkgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBS
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKICAg
ICBib29sIGNvbnRleHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlPclRy
YW5zbGF0aW9uT3JGbGlwcGVkKCk7CiAgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgc2l6ZSA9
PSBpbWFnZVNpemUpIHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiBJ
ZiB3ZSBoYWQgYSBzY2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUgdGhp
cyBvYmplY3QgZnJvbSB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IDI1ZDdlZTkyZjU3Y2VhMzZiYTY3NjMzOWI4
Njg2ZmNhMzVjYmE1YmQuLmQxNGRjNDlhYTc5YWYzMTVkYWM4ZTFkNTEyMWMzNDAyNjBlZjY1ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRlclZp
ZXcmKTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25z
dCBMYXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGlj
c0NvbnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29uc3Qgdm9pZCogbGF5
ZXIsIGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVk
KFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmplY3QoJnJlbmRlcmVy
KTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
Y3BwCmluZGV4IDM1OWJlZDY1NjMxZjE3ZGY4NTQ5YjdlYzM0NjBhOGIwOTNmZTAxZjkuLmE4NzRj
ZGMxYzdkMWQxZTc4ZTRiNzc2MDk5ZWNjYTBjOGI0YjNiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEyMjAsOCArMTIyMCw4IEBAIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IENvbG9yJiBjLCBjCiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhp
cywgcmVjdC5zaXplKCksIG9wKTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFL
KQogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWsoKSA9
PSBEQ0xPTkUpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKExh
eW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRSZWN0KHJlY3QueCgp
LCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWlu
dEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCByZWN0LCBCYWNrZ3Jv
dW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUoKSwgb3ApOwogICAgIH0KICNlbmRpZgpAQCAt
MTI1Miw4ICsxMjUyLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcihjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGMKICAgICAgICAgTGF5b3V0
VW5pdCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExvZ2ljYWxXaWR0aCA6IExh
eW91dFVuaXQod2lkdGgoKSk7CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hv
cml6b250YWwoKSA/IExheW91dFVuaXQoaGVpZ2h0KCkpIDogdG90YWxMb2dpY2FsV2lkdGg7CiAK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8u
Y29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKExheW91dFJlY3QocmVj
dC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwg
d2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXllckV4
dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZ
LCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMsIHJl
Y3Quc2l6ZSgpLCBvcCk7CiAgICAgfQogfQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0
ZWRQYWludG9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYWxSZWN0LmxvY2F0aW9uKCk7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBMYXlvdXRSZWN0
IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludG9mZnNldCwgZnJhbWVSZWN0LnNp
emUoKSk7CiAgICAgLy8gU2hhZG93IGNvbWVzIGZpcnN0IGFuZCBpcyBiZWhpbmQgdGhlIGJhY2tn
cm91bmQgYW5kIGJvcmRlci4KICAgICBpZiAoIXJlbmRlcmVyKCkuYm94U2hhZG93U2hvdWxkQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKGFkanVzdGVkUGFpbnRvZmZzZXQsIEJhY2tncm91bmRCbGVlZE5v
bmUsIHRoaXMpKQpAQCAtMTM4Miw4ICsxMzgyLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWlu
dEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYK
ICAgICAgICAgTGF5b3V0VW5pdCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gZnJhbWVS
ZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAgTGF5b3V0UmVjdCBj
bGlwUmVjdCA9IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW1hZ2VTdHJpcCh0aGlzLCBib3JkZXJJbWFn
ZSwgcGFpbnRSZWN0KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAg
Y29udGV4dC5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludEJvcmRlcihw
YWludEluZm8sIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVp
Z2h0KSwgbGluZVN0eWxlKTsKICAgICB9CiB9CkBAIC0xNDE1LDggKzE0MTUsOCBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21wb3Np
dGVEZXN0aW5hdGlvbkluOwogICAgICAgICBpZiAocHVzaFRyYW5zcGFyZW5jeUxheWVyKSB7Ci0g
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZURlc3RpbmF0aW9uSW4pOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigxLjBmKTsKICAg
ICAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICAgICAgfQog
ICAgIH0KQEAgLTE0MjcsMTQgKzE0MjcsMTQgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1h
c2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAg
ICBib29sIGhhc0JveEltYWdlID0gbWFza0JveEltYWdlICYmIG1hc2tCb3hJbWFnZS0+Y2FuUmVu
ZGVyKCZyZW5kZXJlcigpLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKICAg
ICBpZiAoIWhhc0JveEltYWdlIHx8ICFtYXNrQm94SW1hZ2UtPmlzTG9hZGVkKCkpIHsKICAgICAg
ICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICByZXR1cm47IC8vIERvbid0IHBh
aW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgogICAgIH0K
IAogICAgIC8vIFRoZSBzaW1wbGUgY2FzZSBpcyB3aGVyZSB3ZSBhcmUgdGhlIG9ubHkgYm94IGZv
ciB0aGlzIG9iamVjdC4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgb25seSBhIHNpbmdsZSBjYWxs
IHRvIGRyYXcgaXMgcmVxdWlyZWQuCiAgICAgaWYgKCFwcmV2TGluZUJveCgpICYmICFuZXh0TGlu
ZUJveCgpKSB7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludElu
Zm8uY29udGV4dCwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBmcmFtZVJlY3Quc2l6
ZSgpKSwgcmVuZGVyZXIoKS5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9w
KTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250
ZXh0KCksIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUoKSks
IHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIG1hc2sgaW1hZ2UgdGhhdCBzcGFucyBt
dWx0aXBsZSBsaW5lcy4KICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgX3R4IGFuZCBfdHkg
YnkgdGhlIHdpZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KQEAgLTE0NTAsMTMgKzE0NTAsMTMg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgTGF5b3V0VW5pdCBzdHJpcEhlaWdo
dCA9IGlzSG9yaXpvbnRhbCgpID8gZnJhbWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lk
dGg7CiAKICAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGNsaXBSZWN0Rm9yTmluZVBpZWNl
SW1hZ2VTdHJpcCh0aGlzLCBtYXNrTmluZVBpZWNlSW1hZ2UsIHBhaW50UmVjdCk7Ci0gICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7Ci0gICAgICAgIHJl
bmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0UmVj
dChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigpLnN0
eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CisgICAgICAgIHJlbmRlcmVy
KCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCgpLCBMYXlvdXRSZWN0KHN0
cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHJlbmRlcmVyKCkuc3R5bGUo
KSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgfQogICAgIAogICAgIGlm
IChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiB9CiAKIElubGluZUJveCogSW5saW5lRmxvd0JveDo6Zmlyc3RMZWFm
Q2hpbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3Bw
CmluZGV4IDllNmQyY2VjMGZkNDU0M2E2N2FhNzhmYmMyZDcxZDJkZjgyNDBiOGIuLmYzNTEzZGMz
ZDUyY2M3YzU0ZGFkNzBiNDlhMTFjMmNmZjE0ZDZmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIElubGluZVRl
eHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUg
PSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8u
aAppbmRleCAxNWIxZjI0MTI4Mjc0NGRjNWJkNmRiNWMyZjljZGYxNzg4NWI4OTg0Li5kZGJjOTMz
NTBhNzMyYTMxNTVjNzc0ZWNhMjg0OTQ0M2M0YjQzNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhaW50SW5mby5oCkBAIC00OSwyMCArNDksMzEgQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJsYXBU
ZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAqICh0
eHx0eSkgaXMgdGhlIGNhbGN1bGF0ZWQgcG9zaXRpb24gb2YgdGhlIHBhcmVudAogICovCiBzdHJ1
Y3QgUGFpbnRJbmZvIHsKLSAgICBQYWludEluZm8oR3JhcGhpY3NDb250ZXh0KiBuZXdDb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiBuZXdSZWN0LCBQYWludFBoYXNlIG5ld1BoYXNlLCBQYWludEJl
aGF2aW9yIG5ld1BhaW50QmVoYXZpb3IsCisgICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCYg
bmV3Q29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFz
ZSwgUGFpbnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAogICAgICAgICBSZW5kZXJPYmplY3Qq
IG5ld1N1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUq
PiogbmV3T3V0bGluZU9iamVjdHMgPSBudWxscHRyLAogICAgICAgICBPdmVybGFwVGVzdFJlcXVl
c3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMgPSBudWxscHRyLCBjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBuZXdQYWludENvbnRhaW5lciA9IG51bGxwdHIpCi0gICAgICAgICAgICA6IGNv
bnRleHQobmV3Q29udGV4dCkKLSAgICAgICAgICAgICwgcmVjdChuZXdSZWN0KQorICAgICAgICAg
ICAgOiByZWN0KG5ld1JlY3QpCiAgICAgICAgICAgICAsIHBoYXNlKG5ld1BoYXNlKQogICAgICAg
ICAgICAgLCBwYWludEJlaGF2aW9yKG5ld1BhaW50QmVoYXZpb3IpCiAgICAgICAgICAgICAsIHN1
YnRyZWVQYWludFJvb3QobmV3U3VidHJlZVBhaW50Um9vdCkKICAgICAgICAgICAgICwgb3V0bGlu
ZU9iamVjdHMobmV3T3V0bGluZU9iamVjdHMpCiAgICAgICAgICAgICAsIG92ZXJsYXBUZXN0UmVx
dWVzdHMob3ZlcmxhcFRlc3RSZXF1ZXN0cykKICAgICAgICAgICAgICwgcGFpbnRDb250YWluZXIo
bmV3UGFpbnRDb250YWluZXIpCisgICAgICAgICAgICAsIG1fY29udGV4dCgmbmV3Q29udGV4dCkK
ICAgICB7CiAgICAgfQogCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHQpOworICAgICAgICByZXR1cm4gKm1fY29udGV4
dDsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgfQorCiAgICAgdm9p
ZCB1cGRhdGVTdWJ0cmVlUGFpbnRSb290Rm9yQ2hpbGRyZW4oY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKICAgICB7CiAgICAgICAgIGlmICghc3VidHJlZVBhaW50Um9vdCkKQEAgLTkzLDcg
KzEwNCw3IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICBpZiAobG9jYWxUb0FuY2VzdG9y
VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBj
b250ZXh0LT5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsKKyAgICAgICAgY29u
dGV4dCgpLmNvbmNhdENUTShsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0pOwogCiAgICAgICAgIGlm
IChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMyw3ICsxMTQs
NiBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUo
dHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0OwogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBQYWludFBoYXNlIHBoYXNlOwogICAg
IFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKQEAgLTExMSw2ICsxMjEsOSBAQCBzdHJ1Y3Qg
UGFpbnRJbmZvIHsKICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogb3V0bGluZU9iamVj
dHM7IC8vIHVzZWQgdG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3VsZCBiZSBwYWludGVkIGJ5IGEg
YmxvY2sgd2l0aCBpbmxpbmUgY2hpbGRyZW4KICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92
ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFp
bnRDb250YWluZXI7IC8vIHRoZSBsYXllciBvYmplY3QgdGhhdCBvcmlnaW5hdGVzIHRoZSBjdXJy
ZW50IHBhaW50aW5nCisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRleHQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCA5YWRlNzk0YTU3ZjFkMDBjYTc0NjViNGNjM2ZkMGY4Yzg2MDNj
NTJhLi44NjQ5NmRmYTliNzUwYTM5ZmFjNzc1YzlkMTFkYzk2NGM5MmRiZGQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MjAsNyArMTQyMCw3IEBAIHZv
aWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8gei1pbmRleC4gIFdlIHBhaW50IGFmdGVyIHdlIHBh
aW50ZWQgdGhlIGJhY2tncm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3JvbGxiYXJzIHdpbGwK
ICAgICAvLyBzaXQgYWJvdmUgdGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAgIGlmICgocGhhc2Ug
PT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWludFBoYXNlQ2hpbGRC
bG9ja0JhY2tncm91bmQpICYmIGhhc092ZXJmbG93Q2xpcCgpICYmIHN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZJU0lCTEUgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykg
JiYgIXBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQotICAgICAgICBsYXllcigp
LT5wYWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHJvdW5kZWRJbnRQb2lu
dChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsK
KyAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0
KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJlY3Qo
cGFpbnRJbmZvLnJlY3QpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250ZW50cyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpAQCAt
MTUxNiw5ICsxNTE2LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDYXJldChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKIAogICAgIGlmIChjYXJl
dFBhaW50ZXIgPT0gdGhpcyAmJiAoaXNDb250ZW50RWRpdGFibGUgfHwgY2FyZXRCcm93c2luZykp
IHsKICAgICAgICAgaWYgKHR5cGUgPT0gQ3Vyc29yQ2FyZXQpCi0gICAgICAgICAgICBmcmFtZSgp
LnNlbGVjdGlvbigpLnBhaW50Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50T2Zmc2V0LCBw
YWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLnNlbGVjdGlvbigpLnBhaW50Q2Fy
ZXQocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRyYWdDYXJldENvbnRyb2xs
ZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNvbnRleHQsIHBhaW50T2Zm
c2V0LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+ZHJhZ0Nh
cmV0Q29udHJvbGxlcigpLnBhaW50RHJhZ0NhcmV0KCZmcmFtZSgpLCBwYWludEluZm8uY29udGV4
dCgpLCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnJlY3QpOwogICAgIH0KIH0KIApAQCAtMTUzOCwx
NiArMTUzOCwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgICAgIC8v
IG92ZXJmbG93cyByZWdpb24gWCBhbmQgaXMgYW4gdW5zcGxpdHRhYmxlIGVsZW1lbnQgKGxpa2Ug
YW4gaW1hZ2UpLgogICAgICAgICAgICAgICAgIC8vIFRoZSBzYW1lIGFwcGxpZXMgZm9yIGEgYm94
IG92ZXJmbG93aW5nIHRoZSB0b3Agb2YgcmVnaW9uIFggd2hlbiB0aGF0IGJveCBpcyBhbHNvIGZy
YWdtZW50ZWQgaW4gcmVnaW9uIFgtMS4KIAotICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7
CiAgICAgICAgICAgICAgICAgZGlkQ2xpcFRvUmVnaW9uID0gdHJ1ZTsKIAotICAgICAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1RocmVh
ZD4oKnBhaW50SW5mby5wYWludENvbnRhaW5lcikuZGVjb3JhdGlvbnNDbGlwUmVjdEZvckJveElu
TmFtZWRGbG93RnJhZ21lbnQoKnRoaXMsICpuYW1lZEZsb3dGcmFnbWVudCkpOworICAgICAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ+KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25zQ2xpcFJlY3RGb3JC
b3hJbk5hbWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21lbnQpKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8sIHBh
aW50T2Zmc2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGRpZENsaXBUb1JlZ2lv
bikKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgICAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludFNlbGVjdGlv
bihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgICAg
ICBMYXlvdXRVbml0IGxhc3RUb3AgPSAwOwogICAgICAgICBMYXlvdXRVbml0IGxhc3RMZWZ0ID0g
bG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoKnRoaXMsIGxhc3RUb3AsIGNhY2hlKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBsYXN0UmlnaHQgPSBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQoKnRo
aXMsIGxhc3RUb3AsIGNhY2hlKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgICAgICBMYXlv
dXRSZWN0IGdhcFJlY3RzQm91bmRzID0gc2VsZWN0aW9uR2FwcygqdGhpcywgcGFpbnRPZmZzZXQs
IExheW91dFNpemUoKSwgbGFzdFRvcCwgbGFzdExlZnQsIGxhc3RSaWdodCwgY2FjaGUsICZwYWlu
dEluZm8pOwogICAgICAgICBpZiAoIWdhcFJlY3RzQm91bmRzLmlzRW1wdHkoKSkgewpAQCAtMTc5
Niw3ICsxNzk2LDcgQEAgc3RhdGljIHZvaWQgY2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKGNvbnN0
IFBhaW50SW5mbyogcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2kKICAgICBUcmFja2VkUmVuZGVy
ZXJMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMtPmVu
ZCgpOwogICAgIGZvciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBSZW5kZXJCb3gqIHIgPSAqaXQ7Ci0gICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+Y2xp
cE91dChJbnRSZWN0KG9mZnNldC54KCkgKyByLT54KCksIG9mZnNldC55KCkgKyByLT55KCksIHIt
PndpZHRoKCksIHItPmhlaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmNs
aXBPdXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgpLCBy
LT53aWR0aCgpLCByLT5oZWlnaHQoKSkpOwogICAgIH0KIH0KIApAQCAtMTk2Niw3ICsxOTY2LDcg
QEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sm
IHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG8KIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJv
b3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24sIExheW91dFJlY3QobG9naWNhbExlZnQsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxXaWR0aCwgbG9n
aWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+Y29u
dGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIExheW91dFJl
Y3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290
QmxvY2ssIGNvbnN0IExhCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9n
aWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRS
ZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290QmxvY2tM
b2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAg
ICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2Fw
UmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
IHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2Fw
UmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0
dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTIwMDAsNyArMjAwMCw3IEBAIExheW91dFJlY3QgUmVuZGVy
QmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBj
b25zdCBMCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RU
b1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KHJvb3RC
bG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290QmxvY2tMb2dpY2FsV2lk
dGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludElu
Zm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5m
by0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGdhcFJl
Y3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
aW5kZXggNjdkNzIxNDA0MmIyYTc1MmQ3Mjk0MDQ5ODc4ZjQ1YTkyOWYxNjRiZS4uZTFmM2YxN2I5
MGUwNDk4OWExNDJhNzRlY2Y1NGQ3ZTllN2NiYWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIxNDQsNyArMjE0NCw3IEBAIHZvaWQgUmVu
ZGVyQmxvY2tGbG93OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYKIHsKICAgICBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhwYWlu
dEluZm8sIHBvaW50KTsKICAgICAKLSAgICBpZiAoIW11bHRpQ29sdW1uRmxvd1RocmVhZCgpIHx8
IHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtdWx0aUNv
bHVtbkZsb3dUaHJlYWQoKSB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIG91ciBjaGlsZHJlbiBh
bmQgcGFpbnQgdGhlIGNvbHVtbiBydWxlcyBhcyBuZWVkZWQuCkBAIC0yMTk2LDcgKzIxOTYsNyBA
QCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0cyhSZW5kZXJCbG9j
ayYgcm9vdEJsb2NrLCBjb25zdCBQYWludAogICAgICAgICAgICAgICAgIGZsb2F0aW5nT2JqZWN0
LT5yZW5kZXJlcigpLndpZHRoKCksIGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLmhlaWdodCgp
KTsKICAgICAgICAgICAgIHJvb3RCbG9jay5mbGlwRm9yV3JpdGluZ01vZGUoZmxvYXRCb3gpOwog
ICAgICAgICAgICAgZmxvYXRCb3gubW92ZShyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLngoKSwg
cm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi55KCkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLT5j
b250ZXh0LT5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CisgICAgICAgICAgICBw
YWludEluZm8tPmNvbnRleHQoKS5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IGFlNmFlYTViNWQ3ODE3YTczZDk5MTM4MGYwZGMwNzI4ZWU1N2VlMjIuLmZmMTkxZWE4OTlk
MTkwOTFkYjBhOTJmYzg1NDRjYjA2ZDM2YmU0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCkBAIC0xMjQyLDkgKzEyNDIsOSBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRS
b290Qm94RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykKICAgICBwYWludEZp
bGxMYXllcnMocGFpbnRJbmZvLCBiZ0NvbG9yLCBiZ0xheWVyLCB2aWV3KCkuYmFja2dyb3VuZFJl
Y3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3ZlciwgJnJvb3RCYWNr
Z3JvdW5kUmVuZGVyZXIpOwogfQogCi1CYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVyQm94
OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KSBjb25zdAorQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZXJtaW5l
QmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
IHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0
LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEJhY2tncm91bmRCbGVlZE5vbmU7
CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwpAQCAtMTI1
Miw3ICsxMjUyLDcgQEAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZXJt
aW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ28KICAgICBpZiAoIXN0eWxlLmhh
c0JhY2tncm91bmQoKSB8fCAhc3R5bGUuaGFzQm9yZGVyKCkgfHwgIXN0eWxlLmhhc0JvcmRlclJh
ZGl1cygpIHx8IGJvcmRlckltYWdlSXNMb2FkZWRBbmRDYW5CZVJlbmRlcmVkKCkpCiAgICAgICAg
IHJldHVybiBCYWNrZ3JvdW5kQmxlZWROb25lOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9
IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0Lmdl
dENUTSgpOwogICAgIEZsb2F0U2l6ZSBjb250ZXh0U2NhbGluZyhzdGF0aWNfY2FzdDxmbG9hdD4o
Y3RtLnhTY2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS55U2NhbGUoKSkpOwogCiAgICAg
Ly8gQmVjYXVzZSBSb3VuZGVkUmVjdCB1c2VzIEludFJlY3QgaW50ZXJuYWxseSB0aGUgaW5zZXQg
YXBwbGllZCBieSB0aGUgCkBAIC0xMjkzLDIxICsxMjkzLDIxIEBAIHZvaWQgUmVuZGVyQm94Ojpw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpCiAgICAgICAgIHBhaW50UmVjdCA9IEludFJlY3QocGFpbnRSZWN0LngoKSwgcGFpbnRS
ZWN0LnkoKSArICh0aGlzLT5oZWlnaHQoKSAtIGhlaWdodCkgLyAyLCB3aWR0aCwgaGVpZ2h0KTsg
Ly8gVmVydGljYWxseSBjZW50ZXIgdGhlIGNoZWNrYm94LCBsaWtlIG9uIGRlc2t0b3AKICAgICB9
CiAjZW5kaWYKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBk
ZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpOworICAg
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9IGRldGVybWluZUJhY2tn
cm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIEZJWE1F
OiBTaG91bGQgZXZlbnR1YWxseSBnaXZlIHRoZSB0aGVtZSBjb250cm9sIG92ZXIgd2hldGhlciB0
aGUgYm94IHNoYWRvdyBzaG91bGQgcGFpbnQsIHNpbmNlIGNvbnRyb2xzIGNvdWxkIGhhdmUKICAg
ICAvLyBjdXN0b20gc2hhZG93cyBvZiB0aGVpciBvd24uCiAgICAgaWYgKCFib3hTaGFkb3dTaG91
bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZvaWRh
bmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxl
KCksIE5vcm1hbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCksIGZhbHNlKTsKICAgICBpZiAoYmxlZWRB
dm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAg
ICAgLy8gVG8gYXZvaWQgdGhlIGJhY2tncm91bmQgY29sb3IgYmxlZWRpbmcgb3V0IGJlaGluZCB0
aGUgYm9yZGVyLCB3ZSdsbCByZW5kZXIgYmFja2dyb3VuZCBhbmQgYm9yZGVyCiAgICAgICAgIC8v
IGludG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIsIGFuZCB0aGVuIGNsaXAgdGhhdCBpbiBvbmUgZ28g
KHdoaWNoIHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIGNsaXAgYmVmb3JlCiAgICAgICAgIC8vIGJl
Z2lubmluZyB0aGUgbGF5ZXIpLgogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJvdW5kZWRCb3Jk
ZXJGb3IocGFpbnRSZWN0KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCkucGl4
ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRyYW5zcGFyZW5jeUxh
eWVyKDEpOwogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmUgYSBuYXRpdmUgdGhlbWUgYXBwZWFy
YW5jZSwgcGFpbnQgdGhhdCBiZWZvcmUgcGFpbnRpbmcgb3VyIGJhY2tncm91bmQuCkBAIC0xMzQy
LDcgKzEzNDIsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICBwYWludEJvcmRl
cihwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwogCiAgICAg
aWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCiB2
b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSkKQEAgLTE1MTksNyArMTUxOSw3IEBAIGJvb2wgUmVuZGVyQm94OjpiYWNr
Z3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRN
YXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBz
dHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlTWFzayB8fCBwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAg
IGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1h
c2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNl
dCwgc2l6ZSgpKTsKQEAgLTE1MjgsMTEgKzE1MjgsMTEgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50
TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBhaW50SW5m
by5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgfHwg
cGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIXBhaW50SW5m
by5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sgfHwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6
ZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFp
bnRSZWN0KSwgQ29sb3I6OmJsYWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBDb2xvcjo6
YmxhY2ssIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50
TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYg
cGFpbnRSZWN0KQpAQCAtMTU1NywxOCArMTU1NywxOCBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRN
YXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBw
YQogICAgICAgICBpZiAobWFza0xheWVycykKICAgICAgICAgICAgIGFsbE1hc2tJbWFnZXNMb2Fk
ZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9hZGVkKCk7CiAKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3Zl
cjsKICAgICB9CiAKICAgICBpZiAoYWxsTWFza0ltYWdlc0xvYWRlZCkgewogICAgICAgICBwYWlu
dEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCBzdHlsZSgpLm1hc2tMYXllcnMoKSwgcGFp
bnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCBjb21wb3NpdGVPcCk7Ci0gICAgICAgIHBhaW50
TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwgc3R5bGUoKSwgc3R5
bGUoKS5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOworICAgICAgICBwYWludE5pbmVQaWVj
ZUltYWdlKHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50UmVjdCwgc3R5bGUoKSwgc3R5bGUoKS5t
YXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAgICBpZiAocHVzaFRy
YW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6bWFza0NsaXBSZWN0KGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTE2MTksMTYgKzE2MTksMTMgQEAgdm9pZCBSZW5k
ZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
Q29sb3ImIGMsIGNvbnMKICAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpOwogICAg
IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owot
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRl
QnVmZmVyID0gZmFsc2U7Ci0KKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpOwogICAgIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSBiYXNlQmdDb2xvclVz
YWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZTsKIAogICAgIGlmIChzaG91bGREcmF3QmFja2dy
b3VuZEluU2VwYXJhdGVCdWZmZXIpIHsKICAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJbmZv
LCBjLCAqbGF5ZXJzLnJiZWdpbigpLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91
bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5KTsKICAgICAgICAgYmFzZUJnQ29sb3JV
c2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwotICAgICAgICBjb250ZXh0LT5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoMSk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yIHRvcExheWVyID0gbGF5ZXJzLnJlbmQoKTsKQEAgLTE2MzYsNyArMTYzMyw3
IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zCiAgICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50
SW5mbywgYywgKml0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3Qs
IGJhc2VCZ0NvbG9yVXNhZ2UpOwogCiAgICAgaWYgKHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBh
cmF0ZUJ1ZmZlcikKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAg
ICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCiB2b2lkIFJlbmRlckJv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9y
JiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwK
QEAgLTE3NjgsMTAgKzE3NjUsMTAgQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0NsaXAo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXUKICAgICB9CiAg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCk7CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscygoaXND
b250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCkgOiBvdmVyZmxv
d0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKSwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5waGFzZSkpLCBkZXZp
Y2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMo
KSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXpl
KCkpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9y
KSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJvdW5kZWRJbm5lckJv
cmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKS5waXhlbFNuYXBw
ZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTc3OSw3ICsxNzc2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBvcENvbnRlbnRzQ2xpcChQYWludElu
Zm8mIHBhaW50SW5mbywgUGFpbnRQaGFzZSBvcmlnaW5hbFBoYXNlLAogewogICAgIEFTU0VSVCho
YXNDb250cm9sQ2xpcCgpIHx8IChoYXNPdmVyZmxvd0NsaXAoKSAmJiAhbGF5ZXIoKS0+aXNTZWxm
UGFpbnRpbmdMYXllcigpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIGlmIChvcmlnaW5hbFBoYXNl
ID09IFBhaW50UGhhc2VPdXRsaW5lKSB7CiAgICAgICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50
UGhhc2VTZWxmT3V0bGluZTsKICAgICAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBhY2N1bXVs
YXRlZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNTUxODhj
NjE2OWQ0N2Y5MzAzYmRmMTYxYWYyNWE4MmM5ZDJmOThiOS4uMTZkNTFkOTdlZmQ1YWZlOGUxYTdl
MzZmN2Q4MjQ3ZjhmMGJkYTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApA
QCAtNjQwLDcgKzY0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgcGFpbnRNYXNrSW1hZ2Vz
KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmKTsKIAotICAgIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3ND
b250ZXh0KikgY29uc3Q7CisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGRldGVybWluZUJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICBib29s
IGJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRl
UG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmLCBSZW5k
ZXJSZWdpb24qID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAxZGNmZTEyMmYwMjc3MjI5MWI3YTE3
YjgzNjRhODcwZGJhMmJkMjJlLi5mY2E5N2FkZjI1YmQxNzE5MmQ5MGZhNWM0NzZmMzNkYTNiYTA1
Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
dXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKICAgICBsYXllcigpLT5iYWNraW5nKCktPnN1
c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpz
aG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYWdlKiBp
bWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitib29sIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91
dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9sbGVy
KCkuc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVyLCBz
aXplKTsKIH0KQEAgLTUxOCwzNCArNTE4LDM0IEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVs
T2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgYm9yCiAg
ICAgcmV0dXJuIGJvcmRlcjsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcFJv
dW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0ICogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlwUmVj
dCkKIHsKICAgICBpZiAoY2xpcFJlY3QuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIGNvbnRleHQt
PmNsaXBSb3VuZGVkUmVjdChjbGlwUmVjdCk7CisgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRS
ZWN0KGNsaXBSZWN0KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgY3JlYXRlIGEgcm91bmRl
ZCByZWN0IGZvciBlYWNoIG9mIHRoZSBjb3JuZXJzIGFuZCBjbGlwIGl0LCB3aGlsZSBtYWtpbmcg
c3VyZSB3ZSBjbGlwIG9wcG9zaW5nIGNvcm5lcnMgdG9nZXRoZXIuCiAgICAgICAgIGlmICghY2xp
cFJlY3QucmFkaWkoKS50b3BMZWZ0KCkuaXNFbXB0eSgpIHx8ICFjbGlwUmVjdC5yYWRpaSgpLmJv
dHRvbVJpZ2h0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdG9wQ29ybmVy
KGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS55KCksIHJlY3QubWF4WCgpIC0g
Y2xpcFJlY3QucmVjdCgpLngoKSwgcmVjdC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgpKTsK
ICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOwogICAg
ICAgICAgICAgdG9wQ29ybmVyUmFkaWkuc2V0VG9wTGVmdChjbGlwUmVjdC5yYWRpaSgpLnRvcExl
ZnQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFkaWkp
KTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdHRvbUNvcm5lcihyZWN0LngoKSwgcmVjdC55
KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgY2xpcFJlY3QucmVjdCgpLm1h
eFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIGJv
dHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAgYm90dG9tQ29ybmVyUmFkaWkuc2V0Qm90dG9t
UmlnaHQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9t
Q29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoYm90dG9tQ29ybmVyLCBib3R0b21Db3JuZXJSYWRpaSkpOwogICAgICAgICB9
IAogCiAgICAgICAgIGlmICghY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgpLmlzRW1wdHkoKSB8
fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBGbG9hdFJlY3QgdG9wQ29ybmVyKHJlY3QueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgpLCBjbGlw
UmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJlY3QucmVj
dCgpLnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJS
YWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcFJpZ2h0KGNsaXBSZWN0LnJh
ZGlpKCkudG9wUmlnaHQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CisgICAgICAgICAg
ICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9w
Q29ybmVyUmFkaWkpKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdHRvbUNvcm5lcihjbGlw
UmVjdC5yZWN0KCkueCgpLCByZWN0LnkoKSwgcmVjdC5tYXhYKCkgLSBjbGlwUmVjdC5yZWN0KCku
eCgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOwogICAgICAgICAgICAgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAgICAgICAgICBib3R0
b21Db3JuZXJSYWRpaS5zZXRCb3R0b21MZWZ0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQu
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm90dG9tQ29ybmVyLCBib3R0b21Db3Ju
ZXJSYWRpaSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTgxLDcgKzU4MSw3IEBAIFJvdW5k
ZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3Rl
ZEZvckJsZWVkQXZvaWRhbmNlCiAgICAgcmV0dXJuIGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChi
b3JkZXJSZWN0LCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogfQogCi1zdGF0aWMg
dm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAg
ICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93ID0gc3R5bGUtPmJveFNoYWRvdygpOwogICAg
IHdoaWxlIChib3hTaGFkb3ctPnN0eWxlKCkgIT0gTm9ybWFsKQpAQCAtNTg5LDE1ICs1ODksMTUg
QEAgc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHMKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQo
Ym94U2hhZG93LT54KCksIGJveFNoYWRvdy0+eSgpKTsKICAgICBpZiAoIWJveFNoYWRvdy0+aXNX
ZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JT
cGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hTaGFk
b3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkpOwog
ICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwg
Ym94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hT
aGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkp
OwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJv
eChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNrUmVjdCwgSW5saW5l
Rmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50UmVjdCkKIHsKLSAg
ICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQo
KTsKLSAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1hc2tSZWN0LngoKSwgLW1hc2tS
ZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0lt
YWdlLT5jb250ZXh0KCk7CisgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tSZWN0
LngoKSwgLW1hc2tSZWN0LnkoKSk7CiAKICAgICAvLyBOb3cgYWRkIHRoZSB0ZXh0IHRvIHRoZSBj
bGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50aW5nIHVzaW5nIGEgc3BlY2lhbCBwYWludCBwaGFzZSB0
aGF0IHNpZ25hbHMgdG8KICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0aGV5IHNob3VsZCBq
dXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KQEAgLTYxOCw4ICs2MTgsOCBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1
ZmZlciogbWFza0ltYWdlLCBjb25zdAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3Im
IGNvbG9yLCBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qs
CiAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93
Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yVXNh
Z2UgYmFzZUJnQ29sb3JVc2FnZSkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBw
YWludEluZm8uY29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8
IHJlY3QuaXNFbXB0eSgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJlY3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluY2x1ZGVMZWZ0RWRnZSA9
IGJveCA/IGJveC0+aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpIDogdHJ1ZTsKQEAgLTY3MiwzMiAr
NjcyLDMyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgPSB0aGlz
LT5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5sb2NhdGlvbigpLCBi
bGVlZEF2b2lkYW5jZSwgYm94KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
aGFkb3dTdGF0ZVNhdmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2
ZXIoY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTsKICAgICAg
ICAgaWYgKGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAgICAg
IGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUoKSk7CiAKICAgICAg
ICAgaWYgKGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3VuZEJs
ZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qg
cGl4ZWxTbmFwcGVkQm9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVl
ZEF2b2lkYW5jZSgqY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwK
KyAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkQm9yZGVyID0gYmFja2dy
b3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0LCBi
bGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLAogICAgICAgICAgICAgICAgIGluY2x1ZGVMZWZ0
RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGlu
ZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkQm9yZGVy
LmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVj
dChwaXhlbFNuYXBwZWRCb3JkZXIsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIs
IGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNh
dmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBwaXhl
bFNuYXBwZWRSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXIpOwotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlci5yZWN0KCksIGJnQ29sb3IsIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5y
ZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY29u
dGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0LCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIEJvcmRlckZpbGxCb3ggcmFkaXVzIGNsaXBwaW5nIGlzIHRha2VuIGNhcmUgb2Yg
YnkgQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIKICAgICBib29sIGNsaXBUb0Jv
cmRlclJhZGl1cyA9IGhhc1JvdW5kZWRCb3JkZXIgJiYgIShpc0JvcmRlckZpbGwgJiYgYmxlZWRB
dm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpOwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgY2xpcFRvQm9yZGVyU3RhdGVTYXZlcigqY29udGV4dCwg
Y2xpcFRvQm9yZGVyUmFkaXVzKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBU
b0JvcmRlclN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcFRvQm9yZGVyUmFkaXVzKTsKICAgICBpZiAo
Y2xpcFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGlzQm9y
ZGVyRmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2Uo
KmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0
RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QocmVjdCwg
Ym94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwg
aW5jbHVkZVJpZ2h0RWRnZSk7CisgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGlzQm9yZGVy
RmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29u
dGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5jbHVkZUxlZnRFZGdl
LCBpbmNsdWRlUmlnaHRFZGdlKSA6IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChyZWN0LCBib3gs
IGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBpbmNs
dWRlUmlnaHRFZGdlKTsKIAogICAgICAgICAvLyBDbGlwIHRvIHRoZSBwYWRkaW5nIG9yIGNvbnRl
bnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoYmdMYXllci0+Y2xpcCgpID09IENv
bnRlbnRGaWxsQm94KSB7CkBAIC03MTQsMTIgKzcxNCwxMiBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjbwogICAgIExheW91dFVuaXQgcExlZnQgPSBpbmNsdWRlTGVmdEVkZ2UgPyBwYWRkaW5nTGVm
dCgpIDogTGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgcFJpZ2h0ID0gaW5jbHVkZVJpZ2h0
RWRnZSA/IHBhZGRpbmdSaWdodCgpIDogTGF5b3V0VW5pdCgpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBjbGlwV2l0aFNjcm9sbGluZ1N0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXBw
ZWRXaXRoTG9jYWxTY3JvbGxpbmcpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgY2xp
cFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBwZWRXaXRoTG9jYWxTY3JvbGxp
bmcpOwogICAgIExheW91dFJlY3Qgc2Nyb2xsZWRQYWludFJlY3QgPSByZWN0OwogICAgIGlmIChj
bGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhlIG92ZXJm
bG93IGFyZWEuCiAgICAgICAgIGF1dG8mIHRoaXNCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KCp0
aGlzKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcCh0aGlzQm94Lm92ZXJmbG93Q2xpcFJlY3QocmVj
dC5sb2NhdGlvbigpLCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpOworICAgICAg
ICBjb250ZXh0LmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRpb24oKSwg
Y3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKICAgICAgICAgCiAgICAgICAgIC8v
IEFkanVzdCB0aGUgcGFpbnQgcmVjdCB0byByZWZsZWN0IGEgc2Nyb2xsZWQgY29udGVudCBib3gg
d2l0aCBib3JkZXJzIGF0IHRoZSBlbmRzLgogICAgICAgICBJbnRTaXplIG9mZnNldCA9IHRoaXNC
b3guc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY28KICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3Quc2V0SGVpZ2h0KGJvcmRl
clRvcCgpICsgbGF5ZXIoKS0+c2Nyb2xsSGVpZ2h0KCkgKyBib3JkZXJCb3R0b20oKSk7CiAgICAg
fQogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFja2dyb3VuZENsaXBTdGF0
ZVNhdmVyKCpjb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBi
YWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogICAgIEludFJlY3QgbWFza1JlY3Q7CiAKQEAg
LTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgICAg
IHNjcm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRlUGFk
ZGluZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKICAgICAgICAgICAgICAgICBz
Y3JvbGxlZFBhaW50UmVjdC5oZWlnaHQoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkg
LSAoaW5jbHVkZVBhZGRpbmcgPyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkgOiBMYXlv
dXRVbml0KCkpKTsKICAgICAgICAgICAgIGJhY2tncm91bmRDbGlwU3RhdGVTYXZlci5zYXZlKCk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIGNvbnRl
eHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGJnTGF5ZXItPmNs
aXAoKSA9PSBUZXh0RmlsbEJveCkgewogICAgICAgICAvLyBXZSBoYXZlIHRvIGRyYXcgb3VyIHRl
eHQgaW50byBhIG1hc2sgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAgYmFja2dyb3VuZCBk
cmF3aW5nLgpAQCAtNzUxLDE1ICs3NTEsMTUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7
CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0g
Y29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOworICAgICAg
ICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6
ZSgpKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJv
eCwgc2Nyb2xsZWRQYWludFJlY3QpOwogCiAgICAgICAgIC8vIFRoZSBtYXNrIGhhcyBiZWVuIGNy
ZWF0ZWQuICBOb3cgd2UganVzdCBuZWVkIHRvIGNsaXAgdG8gaXQuCiAgICAgICAgIGJhY2tncm91
bmRDbGlwU3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAobWFza1JlY3Qp
OwotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBj
b250ZXh0LmNsaXAobWFza1JlY3QpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoMSk7CiAgICAgfQogCiAgICAgLy8gT25seSBmaWxsIHdpdGggYSBiYXNlIGNvbG9yIChl
LmcuLCB3aGl0ZSkgaWYgd2UncmUgdGhlIHJvb3QgZG9jdW1lbnQsIHNpbmNlIGlmcmFtZXMvZnJh
bWVzIHdpdGgKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAg
ICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckJhY2tncm91bmQgPSB0cnVlOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRl
U2F2ZXIoKmNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7Cisg
ICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoY29u
dGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTsKICAgICAgICAgICAg
IGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAgICAgICAg
ICAgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKGNvbnRleHQsICZzdHlsZSgpKTsKIApAQCAt
ODE3LDEyICs4MTcsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAg
ICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpCiAgICAgICAgICAgICAg
ICAgICAgIGJhc2VDb2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsKIAotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNvbG9y
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgQ29tcG9zaXRlQ29weSk7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKSB7Ci0gICAgICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uID0gc2hvdWxkQ2xlYXJCYWNrZ3JvdW5k
ID8gQ29tcG9zaXRlQ29weSA6IGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJn
Q29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOworICAgICAgICAgICAgICAg
IENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/IENv
bXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmdDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIG9wZXJhdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KHNob3VsZENsZWFyQmFja2dyb3VuZCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGVhclJl
Y3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CisgICAgICAgICAgICAgICAgY29udGV4dC5j
bGVhclJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTgzNCwxNyArODM0LDE3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAg
ICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IG9wID09IENvbXBvc2l0ZVNvdXJjZU92
ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwogICAgICAgICAgICAgYXV0byBjbGllbnRG
b3JCYWNrZ3JvdW5kSW1hZ2UgPSBiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6
IHRoaXM7CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYmdJbWFnZS0+aW1hZ2Uo
Y2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBl
KCkgPT0gTWFza0x1bWluYW5jZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFu
Y2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CiAgICAg
ICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwog
ICAgICAgICAgICAgaWYgKGltYWdlLmdldCgpKQogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRT
cGFjZVNpemUoZ2VvbWV0cnkuc3BhY2VTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBnZW9tZXRyeS5k
ZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21l
dHJ5LnRpbGVTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVy
LT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1YWxp
dHlTY2FsaW5nKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdl
dCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQ
b2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewot
ICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgpLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAg
IGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3Qs
IENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiAgICAgfQogfQogCkBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpnZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZShjb25zdCBSZW5kZXJM
YXllck1vZGVsTwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKIH0KIAotYm9v
bCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLAorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJ
bWFnZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYg
cmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbmluZVBpZWNlSW1h
Z2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2Ug
PSBuaW5lUGllY2VJbWFnZS5pbWFnZSgpOwpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgc3RhdGljIGJv
b2wgam9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZSwg
Y29uc3QgQm9yZGVyRWQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBzaWRlUmVjdCwgQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNp
ZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBjb25zdCBQYXRoKiBw
YXRoLAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29s
IGFudGlhbGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IpCiB7CkBAIC0xNDQ0LDcgKzE0
NDQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgY29uc3QgQ29sb3ImIGNvbG9yVG9Q
YWludCA9IG92ZXJyaWRlQ29sb3IgPyAqb3ZlcnJpZGVDb2xvciA6IGVkZ2VUb1JlbmRlci5jb2xv
cigpOwogCiAgICAgaWYgKHBhdGgpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgaWYgKGlubmVy
Qm9yZGVyLmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5Z29u
KGdyYXBoaWNzQ29udGV4dCwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBzaWRlLCBhZGphY2Vu
dFNpZGUxU3R5bGVzTWF0Y2gsIGFkamFjZW50U2lkZTJTdHlsZXNNYXRjaCk7CiAgICAgICAgIGVs
c2UKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAg
Ym9vbCBjbGlwQWRqYWNlbnRTaWRlMiA9IGNvbG9yTmVlZHNBbnRpQWxpYXNBdENvcm5lcihzaWRl
LCBhZGphY2VudFNpZGUyLCBlZGdlcykgJiYgbWl0cmVBZGphY2VudFNpZGUyOwogICAgICAgICBi
b29sIHNob3VsZENsaXAgPSBjbGlwRm9yU3R5bGUgfHwgY2xpcEFkamFjZW50U2lkZTEgfHwgY2xp
cEFkamFjZW50U2lkZTI7CiAgICAgICAgIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIGNsaXBTdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQsIHNob3VsZENsaXApOworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBTdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCwgc2hvdWxkQ2xpcCk7CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBi
b29sIGFsaWFzQWRqYWNlbnRTaWRlMSA9IGNsaXBBZGphY2VudFNpZGUxIHx8IChjbGlwRm9yU3R5
bGUgJiYgbWl0cmVBZGphY2VudFNpZGUxKTsKICAgICAgICAgICAgIGJvb2wgYWxpYXNBZGphY2Vu
dFNpZGUyID0gY2xpcEFkamFjZW50U2lkZTIgfHwgKGNsaXBGb3JTdHlsZSAmJiBtaXRyZUFkamFj
ZW50U2lkZTIpOwpAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAog
ICAgICAgICAgICAgbWl0cmVBZGphY2VudFNpZGUxID0gZmFsc2U7CiAgICAgICAgICAgICBtaXRy
ZUFkamFjZW50U2lkZTIgPSBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBkcmF3TGluZUZvckJv
eFNpZGUoKmdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9yVG9QYWludCwgZWRn
ZVRvUmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFjZW50RWRnZTEud2lk
dGhGb3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRqYWNlbnRFZGdlMi53
aWR0aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOworICAgICAgICBkcmF3TGluZUZvckJv
eFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzaWRlUmVjdCwgc2lkZSwgY29sb3JUb1BhaW50LCBlZGdl
VG9SZW5kZXIuc3R5bGUoKSwgbWl0cmVBZGphY2VudFNpZGUxID8gYWRqYWNlbnRFZGdlMS53aWR0
aEZvclBhaW50aW5nKCkgOiAwLCBtaXRyZUFkamFjZW50U2lkZTIgPyBhZGphY2VudEVkZ2UyLndp
ZHRoRm9yUGFpbnRpbmcoKSA6IDAsIGFudGlhbGlhcyk7CiAgICAgfQogfQogCkBAIC0xNDg4LDcg
KzE0ODgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdChjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlcgogICAgIHJldHVybiBzaWRlUmVjdDsK
IH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
CiAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3QgQm9yZGVy
RWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRnZVNldCwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlIGJsZWVkQXZvaWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9y
KiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY28KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJh
bnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNv
bnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVy
QWRqdXN0bWVudCwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRC
b3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5k
ZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVu
dCwKICAgICBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIEJvcmRlckVkZ2VGbGFncyBlZGdlc1Rv
RHJhdywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50
aWFsaWFzKQogewogICAgIC8vIHdpbGxCZU92ZXJkcmF3biBhc3N1bWVzIHRoYXQgd2UgZHJhdyBp
biBvcmRlcjogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LgpAQCAtMTU2NiwxNCArMTU2NiwxNCBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljcwogCiAgICAgICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5
TGF5ZXIgPSBpbmNsdWRlc0FkamFjZW50RWRnZXMoY29tbW9uQ29sb3JFZGdlU2V0KSAmJiBjb21t
b25Db2xvci5oYXNBbHBoYSgpOwogICAgICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsK
LSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdGF0
aWNfY2FzdDxmbG9hdD4oY29tbW9uQ29sb3IuYWxwaGEoKSkgLyAyNTUpOworICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgIGNvbW1vbkNvbG9yID0g
Q29sb3IoY29tbW9uQ29sb3IucmVkKCksIGNvbW1vbkNvbG9yLmdyZWVuKCksIGNvbW1vbkNvbG9y
LmJsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwYWludEJvcmRlclNpZGVzKGdyYXBoaWNz
Q29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1
c3RtZW50LCBlZGdlcywgY29tbW9uQ29sb3JFZGdlU2V0LCBibGVlZEF2b2lkYW5jZSwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFudGlhbGlhcywgJmNv
bW1vbkNvbG9yKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5
ZXIpCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAg
ICAgICAgCiAgICAgICAgIGVkZ2VzVG9EcmF3ICY9IH5jb21tb25Db2xvckVkZ2VTZXQ7CiAgICAg
fQpAQCAtMTU4Miw5ICsxNTgyLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRU
cmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJs
ZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQg
PSBpbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBp
bmZvLmNvbnRleHQoKTsKIAotICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQpAQCAtMTU5Nyw3ICsxNTk3LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgIEJvcmRlckVkZ2UgZWRnZXNbNF07CiAgICAg
Qm9yZGVyRWRnZTo6Z2V0Qm9yZGVyRWRnZUluZm8oZWRnZXMsIHN0eWxlLCBkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICBSb3VuZGVkUmVjdCBvdXRlckJvcmRlciA9IHN0eWxlLmdldFJvdW5k
ZWRCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwotICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5bGUuZ2V0Um91bmRl
ZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2Uo
KmdyYXBoaWNzQ29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBpbmNsdWRlTG9naWNhbExl
ZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3QgaW5uZXJC
b3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVySW5uZXJSZWN0QWRq
dXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShncmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRh
bmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwog
CiAgICAgYm9vbCBoYXZlQWxwaGFDb2xvciA9IGZhbHNlOwogICAgIGJvb2wgaGF2ZUFsbFNvbGlk
RWRnZXMgPSB0cnVlOwpAQCAtMTcwMyw5ICsxNzAzLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0
JgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChwaXhlbFNu
YXBwZWRJbm5lckJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgICAgICBncmFw
aGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigp
LCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5maWxs
UGF0aChwYXRoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShSVUxF
X0VWRU5PREQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihlZGdl
c1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9IAogICAgICAgICAvLyBBdm9pZCBjcmVhdGluZyB0cmFuc3BhcmVudCBsYXll
cnMKQEAgLTE3MjAsMjMgKzE3MjAsMjMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRGaWxsUnVsZShSVUxFX05PTlpFUk8pOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgocGF0aCk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNp
YmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGJvb2wgY2xpcFRvT3V0ZXJCb3JkZXIgPSBvdXRlckJvcmRlci5pc1Jv
dW5kZWQoKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBo
aWNzQ29udGV4dCwgY2xpcFRvT3V0ZXJCb3JkZXIpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKICAg
ICBpZiAoY2xpcFRvT3V0ZXJCb3JkZXIpIHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5uZXIg
YW5kIG91dGVyIHJhZGlpIHJlY3RzLgogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0gQmFj
a2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVj
dEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuY2xpcFJvdW5kZWRSZWN0KG91dGVyQm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0
Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgLy8gaXNSZW5kZXJhYmxl
KCkgY2hlY2sgYXZvaWRzIGlzc3VlIGRlc2NyaWJlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3ODcKICAgICAgICAgLy8gVGhlIGluc2lkZSB3aWxsIGJlIGNs
aXBwZWQgb3V0IGxhdGVyIChpbiBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgpCiAg
ICAgICAgIGlmIChpbm5lckJvcmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXIucGl4ZWxTbmFwcGVk
Um91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIH0KIAogICAg
IC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNpbmcgZG9lc24ndCBjcmVhdGUg
c2VhbXMKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAg
ICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwg
dW5hZGp1c3RlZElubmVyQm9yZGVyLCBpbm5lckJvcmRlckFkanVzdG1lbnQsIGVkZ2VzLCBlZGdl
c1RvRHJhdywgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRoLCBj
b25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3
Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBM
YXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRoLCBjb25zdCBCb3Jk
ZXJFZGdlIGVkZ2VzW10sCiAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNz
LCBCb3hTaWRlIHNpZGUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ29sb3IgY29sb3IsIEVC
b3JkZXJTdHlsZSBib3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZv
aWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSkKIHsKQEAgLTE3NjUsMTQgKzE3NjUsMTQgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9UVEVEOgogICAgIGNhc2UgREFT
SEVEOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xv
cihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAvLyBUaGUgc3Ryb2tlIGlz
IGRvdWJsZWQgaGVyZSBiZWNhdXNlIHRoZSBwcm92aWRlZCBwYXRoIGlzIHRoZSAKICAgICAgICAg
Ly8gb3V0c2lkZSBlZGdlIG9mIHRoZSBib3JkZXIgc28gaGFsZiB0aGUgc3Ryb2tlIGlzIGNsaXBw
ZWQgb2ZmLiAKICAgICAgICAgLy8gVGhlIGV4dHJhIG11bHRpcGxpZXIgaXMgc28gdGhhdCB0aGUg
Y2xpcHBpbmcgbWFzayBjYW4gYW50aWFsaWFzCiAgICAgICAgIC8vIHRoZSBlZGdlcyB0byBwcmV2
ZW50IGphZ2dpZXMuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNz
KGRyYXdUaGlja25lc3MgKiAyICogMS4xZik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0
U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tlIDogRG90dGVk
U3Ryb2tlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhkcmF3
VGhpY2tuZXNzICogMiAqIDEuMWYpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tl
U3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tlIDogRG90dGVkU3Ryb2tl
KTsKIAogICAgICAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIGRhc2hlcyB0aGF0IGZpdCBpbiB0aGUg
cGF0aCBpcyBvZGQgYW5kIG5vbi1pbnRlZ3JhbCB0aGVuIHdlCiAgICAgICAgIC8vIHdpbGwgaGF2
ZSBhbiBhd2t3YXJkbHktc2l6ZWQgZGFzaCBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLiBUbyB0cnkg
dG8gYXZvaWQgdGhhdApAQCAtMTc5NSwxMyArMTc5NSwxMyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LAogICAgICAgICAgICAgRGFzaEFycmF5IGxpbmVEYXNoOwogICAgICAgICAgICAgbGluZURh
c2guYXBwZW5kKGRhc2hMZW5ndGgpOwogICAgICAgICAgICAgbGluZURhc2guYXBwZW5kKGdhcExl
bmd0aCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldExpbmVEYXNoKGxpbmVEYXNo
LCBkYXNoTGVuZ3RoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRMaW5lRGFzaChs
aW5lRGFzaCwgZGFzaExlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIEZJ
WE1FOiBzdHJva2luZyB0aGUgYm9yZGVyIHBhdGggY2F1c2VzIGlzc3VlcyB3aXRoIHRpZ2h0IGNv
cm5lcnM6CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODcxMQogICAgICAgICAvLyBBbHNvLCB0byBnZXQgdGhlIGJlc3QgYXBwZWFyYW5jZSB3ZSBz
aG91bGQgc3Ryb2tlIGEgcGF0aCBiZXR3ZWVuIHRoZSB0d28gYm9yZGVycy4KLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zdHJva2VQYXRoKGJvcmRlclBhdGgpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBjYXNlIERPVUJMRTogewpAQCAtMTgyNCwxOCArMTgyNCwxOCBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LAogCiAgICAgICAgIC8vIERyYXcgaW5uZXIgYm9yZGVyIGxpbmUKICAgICAgICAgewot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGlj
c0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBpbm5lckNsaXAg
PSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAg
ICAgICBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCBpbm5lckJv
cmRlckxlZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoLAogICAgICAgICAgICAgICAgIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChpbm5lckNsaXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckNsaXApKTsKICAgICAgICAgICAgIGRy
YXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRo
LCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIFNP
TElELCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRHJhdyBvdXRlciBib3JkZXIg
bGluZQogICAgICAgICB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgICAgIExheW91
dFJlY3Qgb3V0ZXJSZWN0ID0gYm9yZGVyUmVjdDsKICAgICAgICAgICAgIGlmIChibGVlZEF2b2lk
YW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICAg
ICAgICAgIG91dGVyUmVjdC5pbmZsYXRlKDEpOwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91dGVyQ2xpcCA9IHN0
eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihvdXRlclJlY3QsCiAgICAgICAgICAgICAgICAg
b3V0ZXJCb3JkZXJUb3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0b21XaWR0aCwgb3V0ZXJCb3JkZXJM
ZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAgICAgICBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Ci0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG91dGVy
Q2xpcCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBPdXRSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KG91dGVyQ2xpcCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVGcm9t
UGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0aGlj
a25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgU09MSUQsIGJsZWVkQXZv
aWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMTg3MCw3ICsxODcwLDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0Nv
bnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0aGlja25lc3MsIGRyYXdUaGlj
a25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgczEsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gUGFp
bnQgaW5uZXIgb25seQotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICBMYXlvdXRVbml0IHRvcFdpZHRo
ID0gZWRnZXNbQlNUb3BdLndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CiAgICAgICAgIExheW91dFVu
aXQgYm90dG9tV2lkdGggPSBlZGdlc1tCU0JvdHRvbV0ud2lkdGhGb3JQYWludGluZygpIC8gMjsK
ICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGggPSBlZGdlc1tCU0xlZnRdLndpZHRoRm9yUGFp
bnRpbmcoKSAvIDI7CkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LAogICAgICAgICAgICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0V2lk
dGgsCiAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChjbGlwUmVjdCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKICAgICAgICAgZHJhd0JveFNp
ZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2Vz
LCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgczIsIGJsZWVk
QXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODkyLDkgKzE4OTIsOSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaGljc0Nv
bnRleHQtPnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyUmVjdCwgZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0
eWxlKE5vU3Ryb2tlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3UmVjdChzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOwogfQogCiBzdGF0aWMgdm9pZCBmaW5kSW5uZXJWZXJ0ZXgoY29uc3QgRmxvYXRQb2ludCYg
b3V0ZXJDb3JuZXIsIGNvbnN0IEZsb2F0UG9pbnQmIGlubmVyQ29ybmVyLCBjb25zdCBGbG9hdFBv
aW50JiBjZW50ZXJQb2ludCwgRmxvYXRQb2ludCYgcmVzdWx0KQpAQCAtMTkxMiw3ICsxOTEyLDcg
QEAgc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91dGVyQ29y
bmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm4KICAgICAgICAgZmluZEludGVyc2VjdGlvbihvdXRl
ckNvcm5lciwgaW5uZXJDb3JuZXIsIEZsb2F0UG9pbnQoMCwgY2VudGVyUG9pbnQueSgpKSwgRmxv
YXRQb2ludCgxMDAsIGNlbnRlclBvaW50LnkoKSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9y
ZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJveFNpZGUg
c2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzKQogewog
ICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKQEAgLTE5OTQsNyArMTk5NCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4CiAgICAgLy8gSWYgdGhlIGJvcmRlciBtYXRjaGVzIGJvdGggb2YgaXRzIGFk
amFjZW50IHNpZGVzLCBkb24ndCBhbnRpLWFsaWFzIHRoZSBjbGlwLCBhbmQKICAgICAvLyBpZiBu
ZWl0aGVyIHNpZGUgbWF0Y2hlcywgYW50aS1hbGlhcyB0aGUgY2xpcC4KICAgICBpZiAoZmlyc3RF
ZGdlTWF0Y2hlcyA9PSBzZWNvbmRFZGdlTWF0Y2hlcykgewotICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIHF1YWQsICFmaXJzdEVkZ2VNYXRjaGVzKTsKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIHF1YWQsICFmaXJzdEVkZ2VN
YXRjaGVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAwNCw3ICsyMDA0LDcgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXgKICAgICBmaXJzdFF1YWRbMV0gPSBxdWFkWzFdOwogICAg
IGZpcnN0UXVhZFsyXSA9IHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0JvdHRvbSA/IEZsb2F0
UG9pbnQocXVhZFszXS54KCksIHF1YWRbMl0ueSgpKSA6IEZsb2F0UG9pbnQocXVhZFsyXS54KCks
IHF1YWRbM10ueSgpKTsKICAgICBmaXJzdFF1YWRbM10gPSBxdWFkWzNdOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgZmlyc3RRdWFkLCAhZmlyc3RFZGdlTWF0Y2hl
cyk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwg
IWZpcnN0RWRnZU1hdGNoZXMpOwogCiAgICAgRmxvYXRQb2ludCBzZWNvbmRRdWFkWzRdOwogICAg
IHNlY29uZFF1YWRbMF0gPSBxdWFkWzBdOwpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXgKICAgICBzZWNvbmRRdWFkWzJdID0gcXVhZFsyXTsKICAgICBzZWNvbmRR
dWFkWzNdID0gcXVhZFszXTsKICAgICAvLyBBbnRpYWxpYXNpbmcgYWZmZWN0cyB0aGUgc2Vjb25k
IHNpZGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNvbmRR
dWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4
UG9seWdvbig0LCBzZWNvbmRRdWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOwogfQogCiBzdGF0aWMg
TGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKGNvbnN0IFJvdW5kZWRS
ZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3hTaWRlIHNpZGUp
CkBAIC0yMTIyLDExICsyMTIyLDExIEBAIHN0YXRpYyBSb3VuZGVkUmVjdCBjYWxjdWxhdGVBZGp1
c3RlZElubmVyQm9yZGVyKGNvbnN0IFJvdW5kZWRSZWN0JmlubmVyQm9yZGVyLCBCCiAgICAgcmV0
dXJuIFJvdW5kZWRSZWN0KG5ld1JlY3QsIG5ld1JhZGlpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNv
bnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVk
UmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgQm94U2lkZSBzaWRlLCBjb25zdCBjbGFzcyBCb3JkZXJF
ZGdlIGVkZ2VzW10pCiB7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGNhbGN1bGF0ZVNpZGVS
ZWN0SW5jbHVkaW5nSW5uZXIob3V0ZXJCb3JkZXIsIGVkZ2VzLCBzaWRlKSk7Ci0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjYWxjdWxhdGVB
ZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5jbGlwKGNhbGN1bGF0ZVNpZGVSZWN0SW5jbHVkaW5nSW5uZXIob3V0ZXJCb3JkZXIsIGVk
Z2VzLCBzaWRlKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBPdXRSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KGNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIoaW5uZXJCb3JkZXIsIHNp
ZGUpKSk7CiB9CiAKIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlck9ic2N1cmVzQmFj
a2dyb3VuZEVkZ2UoY29uc3QgRmxvYXRTaXplJiBjb250ZXh0U2NhbGUpIGNvbnN0CkBAIC0yMjMw
LDggKzIyMzAsOCBAQCBzdGF0aWMgaW5saW5lIExheW91dFJlY3QgYXJlYUNhc3RpbmdTaGFkb3dJ
bkhvbGUoY29uc3QgTGF5b3V0UmVjdCYgaG9sZVJlY3QsIGludAogdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRSZWN0JiBwYWludFJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU2hhZG93U3R5bGUg
c2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGJvcmRlci1pbWFnZS4g
IFdvdWxkIGJlIGdyZWF0IHRvIHVzZSBib3JkZXItaW1hZ2UgYXMgYSBtYXNrLgotICAgIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQgPSBpbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkgfHwgIXN0eWxlLmJveFNoYWRvdygpKQogICAgICAgICByZXR1cm47CiAKICAgICBS
b3VuZGVkUmVjdCBib3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5zZXQpID8gc3R5bGUuZ2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpCkBAIC0yMjY4LDggKzIyNjgsOCBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlYwogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkU2hhZG93UmVjdC5pbmZsYXRlKHNo
YWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsKICAgICAgICAgICAgIHBpeGVsU25h
cHBlZFNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQpOwogCi0gICAgICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKKyAgICAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgICAgIGNvbnRl
eHQuY2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKIAogICAgICAgICAgICAgLy8gTW92ZSB0
aGUgZmlsbCBqdXN0IG91dHNpZGUgdGhlIGNsaXAsIGFkZGluZyAxIHBpeGVsIHNlcGFyYXRpb24g
c28gdGhhdCB0aGUgZmlsbCBkb2VzIG5vdAogICAgICAgICAgICAgLy8gYmxlZWQgaW4gKGR1ZSB0
byBhbnRpYWxpYXNpbmcpIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zZm9ybWVkLgpAQCAtMjI3OCw5
ICsyMjc4LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29u
c3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGZpbGxSZWN0
Lm1vdmUoZXh0cmFPZmZzZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dlYmtpdEJv
eFNoYWRvdygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNo
YWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgICAgICBGbG9hdFJvdW5k
ZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQ
YWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0
IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjkyLDE4ICsyMjkyLDE4IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQu
aW5mbGF0ZVdpdGhSYWRpaShMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoLTEpKTsKIAogICAgICAgICAg
ICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CiAKICAg
ICAgICAgICAgICAgICBSb3VuZGVkUmVjdCBpbmZsdWVuY2VSZWN0KExheW91dFJlY3QocGl4ZWxT
bmFwcGVkU2hhZG93UmVjdCksIGJvcmRlci5yYWRpaSgpKTsKICAgICAgICAgICAgICAgICBpbmZs
dWVuY2VSZWN0LmV4cGFuZFJhZGlpKDIgKiBzaGFkb3dQYWludGluZ0V4dGVudCArIHNoYWRvd1Nw
cmVhZCk7CiAKICAgICAgICAgICAgICAgICBpZiAoYWxsQ29ybmVyc0NsaXBwZWRPdXQoaW5mbHVl
bmNlUmVjdCwgaW5mby5yZWN0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJl
Y3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFw
cGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHBpeGVsU25hcHBlZEZp
bGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghcGl4ZWxTbmFwcGVkRmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENv
bG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFjaywg
c3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1bm5l
Y2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQpAQCAt
MjMxMywxNCArMjMxMywxNCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNo
YWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAg
ICAgIGlmIChoYXNPcGFxdWVCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGUgZnVuY3Rpb24gdG8gZGVjaWRlIG9uIHRoZSBwb2xpY3kgYmFzZWQgb24gdGhlIHRy
YW5zZm9ybSBzaG91bGQgYmUgYSBuYW1lZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIGlmIHRoaXMgY2hlY2sgaXMgcmlnaHQuIFdoYXQgYWJv
dXQgaW50ZWdyYWwgc2NhbGUgZmFjdG9ycz8KLSAgICAgICAgICAgICAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgICAgICAgICAgICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5hKCkgIT0gMSB8fCAodHJhbnNmb3JtLmQoKSAhPSAx
ICYmIHRyYW5zZm9ybS5kKCkgIT0gLTEpIHx8IHRyYW5zZm9ybS5iKCkgfHwgdHJhbnNmb3JtLmMo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQuaW5mbGF0ZShMYXlvdXRV
bml0Ojpmcm9tUGl4ZWwoLTEpLnRvRmxvYXQoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+Y2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xv
cjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuY2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjaywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIEluc2V0IHNoYWRvdy4KQEAgLTIzMzAsOSArMjMzMCw5IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29u
c3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIGlmIChwaXhlbFNuYXBwZWRIb2xlUmVjdC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKQotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVj
dCwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QsIHNoYWRvd0Nv
bG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0
KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFkb3dD
b2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KIApAQCAtMjM1NywyNSArMjM1NywyNSBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91
dFJlYwogICAgICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZE91dGVyUmVjdCA9IHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5b3V0UmVjdChwaXhl
bFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFkb3dT
cHJlYWQsIHNoYWRvd09mZnNldCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAgIEZs
b2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUgPSBGbG9hdFJvdW5kZWRSZWN0
KHBpeGVsU25hcHBlZEhvbGVSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJhZGlpKCkpOwog
Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNv
bnRleHQpOwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewogICAgICAgICAgICAg
ICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHBpeGVs
U25hcHBlZEJvcmRlclJlY3QpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGF0aCk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBhdGgpOwogICAgICAgICAgICAgICAgIHBp
eGVsU25hcHBlZFJvdW5kZWRIb2xlLnNocmlua1JhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZEJv
cmRlclJlY3QucmVjdCgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsaXAocGl4ZWxTbmFw
cGVkQm9yZGVyUmVjdC5yZWN0KCkpOwogCiAgICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0
KDIgKiByb3VuZFRvSW50KHBhaW50UmVjdC53aWR0aCgpKSArIHN0ZDo6bWF4KDAsIHNoYWRvd09m
ZnNldC53aWR0aCgpKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50IC0gMiAqIHNoYWRvd1NwcmVhZCAr
IDEsIDApOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGV4dHJhT2Zmc2V0LndpZHRo
KCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KGV4dHJhT2Zmc2V0LndpZHRoKCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgICAg
IHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+
aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lT
aGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAotICAgICAgICAgICAg
Y29udGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFwcGVkT3V0ZXJSZWN0LCBw
aXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShwaXhlbFNuYXBwZWRP
dXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNDg0LDExICsyNDg0LDExIEBAIExh
eW91dFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVt
ZW50KExheW91dFVuaXQgd2lkdGgsCiAgICAgcmV0dXJuIGN1cnJlbnRTdHlsZS5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0UmVjdCh4LCB5LCBjYXJldFdpZHRoLCBoZWlnaHQpIDog
TGF5b3V0UmVjdCh5LCB4LCBoZWlnaHQsIGNhcmV0V2lkdGgpOwogfQogCi1ib29sIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5lcyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCitib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5lcyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRvIG5v
dCBhbnRpYWxpYXMgd2hlbiBzY2FsZWQgYnkgYW4gaW50ZWdyYWwgdmFsdWUsCiAgICAgLy8gYW5k
IHdlIG1heSB3YW50IHRvIGFudGlhbGlhcyB3aGVuIHRyYW5zbGF0ZWQgYnkgYSBub24taW50ZWdy
YWwgdmFsdWUuCi0gICAgcmV0dXJuICFjb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpOworICAgIHJldHVybiAhY29udGV4dC5nZXRDVE0oKS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIFRy
YW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggYzIyOGE0ODVlZTM1ZmM5ODIz
NzcxOGNlOWM3ZDM5NDAyMTRkMTE1OC4uNTg4MDVlMDhjMjgyMWU0ZmRiNmM4YzQ5OTI1YzE5N2I5
ZjYyMDIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlckVsZW1lbnQmKSB7IH0KIAogICAgIHZvaWQgcGFpbnRC
b3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSA9IHRydWUpOwotICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGll
Y2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAg
Ym9vbCBwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93
KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAgICAgdm9pZCBwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwg
Y29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0Jv
eCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUoKSwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5k
T2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tncm91
bmRDb2xvclVzZSk7CiAKQEAgLTI1MSwxNiArMjUxLDE2IEBAIHByb3RlY3RlZDoKICAgICBSb3Vu
ZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdDsKICAg
ICBMYXlvdXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29u
c3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBo
aWNzQ29udGV4dCosIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKKyAg
ICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdlKiwg
Y29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiBjb250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRpbnVhdGlvbihSZW5k
ZXJCb3hNb2RlbE9iamVjdCopOwogCiAgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEZvckVt
cHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQp
OwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0
Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGlwUm91bmRlZElubmVyUmVjdChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlwUmVjdCk7
CisgICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpOwogCiAg
ICAgYm9vbCBoYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgpIGNv
bnN0OwogCkBAIC0zMDcsMTggKzMwNywxOCBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgZml4
ZWRCYWNrZ3JvdW5kUGFpbnRzSW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAgICB2b2lk
IGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVj
dCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2b2lk
IGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSb3VuZGVkUmVj
dCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMsIGJv
b2wgc2Vjb25kRWRnZU1hdGNoZXMpOwotICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4
SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91
bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25zdCBCb3JkZXJFZGdlW10pOwotICAgIHZvaWQgcGFpbnRP
bmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
CisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYsIEJveFNpZGUsIGNv
bnN0IEJvcmRlckVkZ2VbXSk7CisgICAgdm9pZCBwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3Jk
ZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgY29uc3QgTGF5b3V0
UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lkZSBh
ZGphY2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGNvbnN0IFBhdGgqLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBv
dmVycmlkZUNvbG9yID0gbnVsbHB0cik7Ci0gICAgdm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVy
U2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3Qg
SW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKKyAgICB2b2lkIHBhaW50VHJhbnNsdWNl
bnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVy
LCBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LAogICAgICAgICBjb25zdCBC
b3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBi
b29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Us
IGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRCb3JkZXJTaWRlcyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRl
ckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAorICAgIHZvaWQgcGFpbnRC
b3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAog
ICAgICAgICBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBjb25zdCBCb3Jk
ZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLAogICAg
ICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9y
ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3QgQm9yZGVyRWRnZVtdLAor
ICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKICAgICAgICAgZmxvYXQg
dGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJTdHls
ZSYsCiAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKICAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiwgY29u
c3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRSZWN0Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXggNWVl
Zjc2MjUyOTQwNTljYmIwOTdlMTBmZjlkOTRkOGQ1ODdlYmI3MC4uYjUzZjJhZjRmZWU1ZGJmMWYz
OTA4ZDg0MjNiNDNlYTk1NDE1MjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcApAQCAtMTMwLDEzICsxMzAsMTMgQEAgdm9pZCBSZW5k
ZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2YKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQ29sb3IgY29sb3Io
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBw
YWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KDEuMGYpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGNvbG9yLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAKICAgICBib3hPcmlnaW4ubW92ZShib3JkZXJMZWZ0KCkgKyBw
YWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2luKSk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOwogfQogCiBib29sIFJlbmRlckRl
dGFpbHNNYXJrZXI6OmlzT3BlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggMjU4MjA0ZTBiMGIwYmEwNWU1NGNkY2U0Nzc0MzYyODM1ODZj
ZTYyOS4uMGUxNzZhZDExNTFmY2JmM2E4Y2I1OGYwNzliNjYzYzM0YmI0YjQ2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjA0MSwxNyArMjA0MSwx
NyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIGFkZEZvY3VzUmluZ1JlY3RzKGZvY3Vz
UmluZ1JlY3RzLCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKTsKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0gICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRoZW1lKCkucGxhdGZvcm1Gb2N1c1Jp
bmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50KCkucGFnZSgpLT5mb2N1
c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLCBuZWVkc1JlcGFpbnQpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0cywgdGhlbWUo
KS5wbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgZG9jdW1l
bnQoKS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCksIG5l
ZWRzUmVwYWludCk7CiAgICAgaWYgKG5lZWRzUmVwYWludCkKICAgICAgICAgZG9jdW1lbnQoKS5w
YWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50KCk7
CiAjZWxzZQotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1Jl
Y3RzLCBzdHlsZS5vdXRsaW5lV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHlsZS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHN0eWxlLm91dGxp
bmVXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwogI2VuZGlmCiB9CiAKIHZvaWQgUmVuZGVy
RWxlbWVudDo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRS
ZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQg
PSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGlmIChncmFwaGljc0NvbnRleHQucGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDMxNWRjMTQ1ZGRmYjg1MDE0
NWNhMjBiZDlmMGExNTBhMWI2NTdlZTQuLjJiMWYxNjU1ZDk5NjQ2YTBmZDA1MDFlZWM1ZjgyODNi
NzI2MmQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
CiAgICAgaWYgKCFjV2lkdGggfHwgIWNIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0U2l6ZSBj
b250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRMb2Nh
dGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKICAgICBjb250ZW50TG9jYXRpb24ubW92
ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3Ao
KSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICNpZiBFTkFC
TEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0
SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlm
Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxp
Z25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVz
ZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxl
KCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50
YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpAQCAtMjYyLDkgKzI2Miw5IEBAIHZvaWQgUmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPCiAgICAgUmVuZGVyV2lkZ2V0OjpwYWludChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2lkZVJlY3QpCitzdGF0aWMgdm9p
ZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgaW5zaWRlUmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAogICAgIEZsb2F0UmVjdCByZWN0KGluc2lkZVJlY3QpOwogICAgIHJl
Y3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJvd1BhZGRpbmcpOwpAQCAtMjcyLDkgKzI3Miw5IEBA
IHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAgICAgRmxvYXRQb2ludCBjZW50ZXIocmVjdC5jZW50
ZXIoKSk7CiAgICAgRmxvYXRQb2ludCBhcnJvd1RpcChyZWN0Lm1heFgoKSwgY2VudGVyLnkoKSk7
CiAKLSAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMik7Ci0gICAgY29udGV4dC0+c2V0
TGluZUNhcChSb3VuZENhcCk7Ci0gICAgY29udGV4dC0+c2V0TGluZUpvaW4oUm91bmRKb2luKTsK
KyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250ZXh0LnNldExpbmVD
YXAoUm91bmRDYXApOworICAgIGNvbnRleHQuc2V0TGluZUpvaW4oUm91bmRKb2luKTsKIAogICAg
IFBhdGggcGF0aDsKICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHJlY3QueCgpLCBjZW50ZXIu
eSgpKSk7CkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50QXJy
b3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2kKICAgICBw
YXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNlbnRlci54KCksIHJlY3QueSgpKSk7CiAgICAgcGF0
aC5tb3ZlVG8oYXJyb3dUaXApOwogICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoY2VudGVy
LngoKSwgcmVjdC5tYXhZKCkpKTsKLSAgICBjb250ZXh0LT5zdHJva2VQYXRoKHBhdGgpOworICAg
IGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVj
dDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQpAQCAtMjkzLDggKzI5Myw4IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmpl
Y3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQu
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgY29u
dGVudFJlY3Q7CkBAIC0zMTAsMzYgKzMxMCwzNiBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAog
ICAgIFBhdGggYmFja2dyb3VuZDsKICAgICBiYWNrZ3JvdW5kLmFkZFJvdW5kZWRSZWN0KGluZGlj
YXRvclJlY3QsIEZsb2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cywgcmVw
bGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+Y2xpcChjb250ZW50
UmVjdCk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcigp
IDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgoYmFja2dyb3VuZCk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuY2xpcChjb250
ZW50UmVjdCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV91bmF2YWlsYWJsZVBsdWdpbklu
ZGljYXRvcklzUHJlc3NlZCA/IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENvbG9y
KCkgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAgICAgUGF0aCBzdHJv
a2VQYXRoOwogICAgIEZsb2F0UmVjdCBzdHJva2VSZWN0KGluZGljYXRvclJlY3QpOwogICAgIHN0
cm9rZVJlY3QuaW5mbGF0ZSgxKTsKICAgICBzdHJva2VQYXRoLmFkZFJvdW5kZWRSZWN0KHN0cm9r
ZVJlY3QsIEZsb2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEsIHJl
cGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzICsgMSkpOwogCi0gICAgY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNvbnRl
eHQtPnN0cm9rZVBhdGgoc3Ryb2tlUGF0aCk7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcih1
bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAg
ICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250ZXh0LnN0cm9rZVBhdGgo
c3Ryb2tlUGF0aCk7CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBmb250
LmZvbnRNZXRyaWNzKCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50VGV4
dFJlY3QubG9jYXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRUZXh0
TWFyZ2luKTsKICAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVjdC5s
b2NhdGlvbigpLnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAtIGZv
bnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxhY2Vt
ZW50VGV4dFJvdW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7Ci0gICAgY29udGV4dC0+c2V0RmlsbENv
bG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICBj
b250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxhYmVsWCwgbGFiZWxZ
KSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwg
RmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkpOwogCiAgICAgaWYgKHNob3VsZFVuYXZhaWxhYmxl
UGx1Z2luTWVzc2FnZUJlQnV0dG9uKGRvY3VtZW50KCksIG1fcGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24pKSB7CiAgICAgICAgIGFycm93UmVjdC5pbmZsYXRlKC1yZXBsYWNlbWVudEFycm93Q2ly
Y2xlUGFkZGluZyk7CiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigx
LjApOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3Io
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICBjb250ZXh0LT5maWxsRWxsaXBzZShh
cnJvd1JlY3QpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wKTsK
KyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxFbGxpcHNlKGFycm93UmVj
dCk7CiAKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNs
ZWFyKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlQ2xl
YXIpOwogICAgICAgICBkcmF3UmVwbGFjZW1lbnRBcnJvdyhjb250ZXh0LCBhcnJvd1JlY3QpOwot
ICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0
LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAppbmRleCBkNWZmZjkyMDMyMzU0MTg0ODI1YjEyMDQ4
NjFkNmE2NDJlNjVkMDdlLi4wOTUyZmRhMzRiODgyODkxNGMzOWZhYzRiMjg5OTQzYmIyMDQ4OTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25zKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAgICBwYWludFJlY3Qu
c2V0WChwYWludFJlY3QueCgpICsgeE9mZik7CiAgICAgfQogCi0gICAgaWYgKCFib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCkpKQorICAgIGlmICgh
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigp
LCBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSkp
KQogICAgICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwg
Tm9ybWFsKTsKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuYmFja2dy
b3VuZExheWVycygpLCBwYWludFJlY3QpOwogICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywg
cGFpbnRSZWN0LCBzdHlsZSgpLCBJbnNldCk7CkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBSZW5k
ZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIENyZWF0ZSBhIGNs
aXBwaW5nIHJlZ2lvbiBhcm91bmQgdGhlIGxlZ2VuZCBhbmQgcGFpbnQgdGhlIGJvcmRlciBhcyBu
b3JtYWwKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhp
Y3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB3b3JrIHdpdGgg
InJsIiBhbmQgImJ0IiBibG9jayBmbG93IGRpcmVjdGlvbnMuICBJbiB0aG9zZQogICAgIC8vIGNh
c2VzIHRoZSBsZWdlbmQgaXMgZW1iZWRkZWQgaW4gdGhlIHJpZ2h0IGFuZCBib3R0b20gYm9yZGVy
cyByZXNwZWN0aXZlbHkuCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6
cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQKICAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oc3R5bGUo
KS5ib3JkZXJMZWZ0V2lkdGgoKSwgbGVnZW5kLT53aWR0aCgpKSk7CiAgICAgICAgIGNsaXBSZWN0
LnNldEhlaWdodChsZWdlbmQtPmhlaWdodCgpKTsKICAgICB9Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGlwT3V0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3QsIGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0KHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkp
OwogCiAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKaW5kZXggYzdhYzY3NDZhMjc1YTk4ZWM4NmQwOTk4ZTY3NmQ2YjVhZjUxYWNjYS4uNjRl
Y2FjYjA2ZWNlZTkzMGYyNWM2NjZiMTQ5ZWQ4N2VlNTZkM2E2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0xMjAs
MTQgKzEyMCwxNCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgLy8gUHVzaCBhIGNsaXAuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAgICAg
aWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcykgewogICAgICAgICBJbnRS
ZWN0IGNsaXBSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChMYXlvdXRSZWN0KHBhaW50T2Zmc2V0Lngo
KSArIGJvcmRlckxlZnQoKSwgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCks
IGhlaWdodCgpIC0gYm9yZGVyQm90dG9tKCkgLSBib3JkZXJUb3AoKSArIGJ1dHRvblNoYWRvd0hl
aWdodCkpOwogICAgICAgICBpZiAoY2xpcFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoY2xp
cFJlY3QpOwogICAgIH0KIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZv
cmVncm91bmQpIHsKQEAgLTE2MywxMCArMTYzLDEwIEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRZID0gYmFzZWxpbmVQb3NpdGlvbihBbHBo
YWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVuYW1lCi0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgSW50UG9pbnQo
cm91bmRUb0ludCh0ZXh0WCksIHJvdW5kVG9JbnQodGV4dFkpKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJvdW5kVG9J
bnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGlu
cHV0RWxlbWVudCgpLmljb24oKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXJlIHRo
ZSBpY29uIHNob3VsZCBiZSBwbGFjZWQKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFJlbmRlckZp
bGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbgogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIC8vIERyYXcgdGhl
IGZpbGUgaWNvbgotICAgICAgICAgICAgaW5wdXRFbGVtZW50KCkuaWNvbigpLT5wYWludCgqcGFp
bnRJbmZvLmNvbnRleHQsIEludFJlY3Qocm91bmRUb0ludChpY29uWCksIHJvdW5kVG9JbnQoaWNv
blkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKKyAgICAgICAgICAgIGlucHV0RWxlbWVudCgp
Lmljb24oKS0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgSW50UmVjdChyb3VuZFRvSW50KGlj
b25YKSwgcm91bmRUb0ludChpY29uWSksIGljb25XaWR0aCwgaWNvbkhlaWdodCkpOwogI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAppbmRleCAzMzMxNzc2YWM0M2M4NGI4ODQ4YjMyYzQyM2U3NGU5ZTcxZmRjNjA0Li4y
ZjgyZGNiMTRiMzk0N2M4M2M2ODQ5OTc3NGU2ZDhkMjJmYTgwYTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKQEAgLTkwLDE1ICs5MCwxNSBAQCB2b2lk
IFJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gc29tZXRoaW5n
IGNsZXZlciB3aGVuIGJvcmRlcnMgZnJvbSBkaXN0aW5jdCBmcmFtZXNldHMgbWVldCBhdCBhIGpv
aW4uCiAgICAgCiAgICAgLy8gRmlsbCBmaXJzdC4KLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBw
YWludEluZm8uY29udGV4dCgpOwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxlKCku
Y29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0
RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JT
cGFjZSk7CisgICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQo
KS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2UpOwog
ICAgIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlmIHdlIGhhdmUgZW5v
dWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAgICAgLy8gYml0IG9m
IHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9yZGVyUmVjdC53aWR0
aCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0
LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3Io
KSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9p
bnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVp
Z2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKDEsIGhl
aWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAxLCBi
b3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNvbG9y
KCksIGNvbG9yU3BhY2UpOwogICAgIH0KIH0KIApAQCAtMTEwLDE1ICsxMTAsMTUgQEAgdm9pZCBS
ZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIGIKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0aGluZyBj
bGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1lZXQgYXQgYSBqb2lu
LgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgpLmNv
bG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVs
ZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3Bh
Y2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCku
aGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNlKTsKIAog
ICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlmIHdlIGhhdmUgZW5vdWdoIHJv
b20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAgICAgLy8gYml0IG9mIHRoZSBm
aWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9yZGVyUmVjdC5oZWlnaHQoKSA+
PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2Nh
dGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29s
b3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9y
ZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNpemUod2lkdGgoKSwgMSkp
LCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwgMSkp
LCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC5m
aWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFko
KSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9y
U3BhY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCmluZGV4IDVhNjUwYWFjOWRkYjQ5Nzc3YjYzZjNiZDg4MDNmMDZlNWVjNmJj
MTYuLmM2NzNkODBlYWQ5ODM2NDdhZmViOTMxZjQzZDc0ZDRkMGZlNWI3ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgYm9vbCBSZW5kZXJIVE1MQ2FudmFzOjpyZXF1aXJlc0xheWVyKCkgY29uc3QKIAogdm9pZCBS
ZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIExheW91dFJlY3QgY29udGVudEJveFJlY3QgPSB0
aGlzLT5jb250ZW50Qm94UmVjdCgpOwogICAgIGNvbnRlbnRCb3hSZWN0Lm1vdmVCeShwYWludE9m
ZnNldCk7CkBAIC03NSw5ICs3NSw5IEBAIHZvaWQgUmVuZGVySFRNTENhbnZhczo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAKICAgICAv
LyBOb3QgYWxsb3dlZCB0byBvdmVyZmxvdyB0aGUgY29udGVudCBib3guCiAgICAgYm9vbCBjbGlw
ID0gIWNvbnRlbnRCb3hSZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGNs
aXApOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8u
Y29udGV4dCgpLCBjbGlwKTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoc25hcHBlZEludFJlY3QoY29udGVudEJveFJlY3QpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KSk7CiAKICAg
ICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCAyOTg0ZDU3Y2FiN2YzMDdkOTlmOGZlMDAwNjI3MTcxMDYy
MTEwM2JkLi42OWFkMjE0OGZhNzlkZWFjNmEyOTJkMjc4YzEzNTZmYmZhODVkMjUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTM3NSw3ICszNzUsNyBAQCB2
b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgIExheW91dFVuaXQgbGVmdFBhZCA9IHBhZGRpbmdM
ZWZ0KCk7CiAgICAgTGF5b3V0VW5pdCB0b3BQYWQgPSBwYWRkaW5nVG9wKCk7CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCiAgICAgUGFnZSog
cGFnZSA9IGZyYW1lKCkucGFnZSgpOwpAQCAtMzkxLDEwICszOTEsMTAgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2YKICAgICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBMYXlvdXRV
bml0KDEgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAgICAgICAgIC8vIERyYXcgYW4gb3V0
bGluZSByZWN0IHdoZXJlIHRoZSBpbWFnZSBzaG91bGQgYmUuCi0gICAgICAgICAgICBjb250ZXh0
LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJvcmRlciArIGxl
ZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dpZHRoLCBjSGVp
Z2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CisgICAgICAgICAgICBjb250
ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVyICsgbGVm
dFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBjV2lkdGgsIGNIZWln
aHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldpZHRoKTsKIAogICAgICAgICAgICAgYm9v
bCBlcnJvclBpY3R1cmVEcmF3biA9IGZhbHNlOwogICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFn
ZU9mZnNldDsKQEAgLTQyNCwxMyArNDI0LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAj
aWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAgICAgICBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
TGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VT
Y2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgc25hcFJl
Y3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGlt
YWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CiAg
ICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGlu
ZyhtX2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZSgp
LmZvbnRDYXNjYWRlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQg
YXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CkBAIC00NDMsOSArNDQzLDkgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHRleHRXaWR0aCA9
IGZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yUGljdHVyZURy
YXduKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh1c2FibGVXaWR0aCA+PSB0ZXh0V2lkdGgg
JiYgZm9udE1ldHJpY3MuaGVpZ2h0KCkgPD0gaW1hZ2VPZmZzZXQuaGVpZ2h0KCkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCBhbHRUZXh0
T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
dGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1c2Fi
bGVXaWR0aCA+PSB0ZXh0V2lkdGggJiYgdXNhYmxlSGVpZ2h0ID49IGZvbnRNZXRyaWNzLmhlaWdo
dCgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVu
LCBhbHRUZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChm
b250LCB0ZXh0UnVuLCBhbHRUZXh0T2Zmc2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoaW1hZ2VSZXNvdXJjZSgpLmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAm
JiBjSGVpZ2h0ID4gMCkgewpAQCAtNDYxLDkgKzQ2MSw5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mCiAgICAgICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdCA9IHRoaXMtPnJlcGxh
Y2VkQ29udGVudFJlY3QoaW50cmluc2ljU2l6ZSgpKTsKICAgICAgICAgcmVwbGFjZWRDb250ZW50
UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgICAgICBib29sIGNsaXAgPSAhY29udGVudEJv
eFJlY3QuY29udGFpbnMocmVwbGFjZWRDb250ZW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgY2xpcCk7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlwKTsKICAgICAgICAg
aWYgKGNsaXApCi0gICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNvbnRlbnRCb3hSZWN0KTsKKyAg
ICAgICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50Qm94UmVjdCk7CiAKICAgICAgICAgcGFpbnRJ
bnRvUmVjdChjb250ZXh0LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVudFJl
Y3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIApAQCAtNDk1LDcgKzQ5NSw3IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWlu
dEluZm8pCiAgICAgaWYgKGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAhZnJhbWUoKS5zZWxlY3Rp
b24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlm
IChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8uY29u
dGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQo
KS5wYWludGluZ0Rpc2FibGVkKCkgJiYgIXBhaW50SW5mby5jb250ZXh0KCkudXBkYXRpbmdDb250
cm9sVGludHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1l
bnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CkBAIC01MjAsNyArNTIwLDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50
SW5mbykKICAgICBpZiAoIW91dGxpbmVXaWR0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdpZHRoLAorICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBvdXRsaW5lV2lkdGgsCiAgICAg
ICAgIGFyZWFFbGVtZW50U3R5bGUtPm91dGxpbmVPZmZzZXQoKSwKICAgICAgICAgYXJlYUVsZW1l
bnRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7
CiAjZW5kaWYKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxlbWVu
dEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgpOwog
fQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRv
UmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsK
ICAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpIHx8IGltYWdlUmVzb3VyY2UoKS5l
cnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAw
KQogICAgICAgICByZXR1cm47CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9u
RGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0
aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlUmVzb3VyY2UoKS5p
bWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLmdldCgpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgcmVjdCwKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZVJlc291cmNlKCkuaW1hZ2Uo
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggOTBm
M2UyNmJlNDgxMjA5YmNmZjZmODg3NWMxNGVmZDg3M2I2NjNkNC4uNjdkZWQxNzZkNmEzMTdiNmRi
YzRmNjFiY2Y1ODFjNDNiNjFkZTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApp
bmRleCA0OWQ0NTIwNWMwYTljOGIxZDYxNDUwMjU2MmU1NWJmMGE4MzQ2M2M1Li5mZTg4ZTc2Yzhl
MTE5YmMyMDBkNWRlODNjZDFlYzVhMGYzZThiYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTU2MCw4ICsxNTYwLDggQEAgdm9pZCBSZW5kZXJJbmxp
bmU6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKICAgICBpZiAoaGFzT3V0bGluZUFubm90YXRpb24oKSAmJiAhc3R5bGVUb1VzZS5v
dXRsaW5lU3R5bGVJc0F1dG8oKSAmJiAhdGhlbWUoKS5zdXBwb3J0c0ZvY3VzUmluZyhzdHlsZVRv
VXNlKSkKICAgICAgICAgYWRkUERGVVJMUmVjdChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7
Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBp
ZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGVUb1VzZS5v
dXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKQEAgLTE1ODEsNyArMTU4MSw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgQ29sb3Igb3V0bGluZUNvbG9yID0gc3R5bGVUb1VzZS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogICAgIGJvb2wgdXNlVHJh
bnNwYXJlbmN5TGF5ZXIgPSBvdXRsaW5lQ29sb3IuaGFzQWxwaGEoKTsKICAgICBpZiAodXNlVHJh
bnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0PihvdXRsaW5lQ29sb3IuYWxwaGEoKSkgLyAyNTUp
OworICAgICAgICBncmFwaGljc0NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdGF0aWNf
Y2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgb3V0bGlu
ZUNvbG9yID0gQ29sb3Iob3V0bGluZUNvbG9yLnJlZCgpLCBvdXRsaW5lQ29sb3IuZ3JlZW4oKSwg
b3V0bGluZUNvbG9yLmJsdWUoKSk7CiAgICAgfQogCkBAIC0xNTg5LDEwICsxNTg5LDEwIEBAIHZv
aWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHBhaW50T3V0bGluZUZvckxpbmUoZ3JhcGhp
Y3NDb250ZXh0LCBwYWludE9mZnNldCwgcmVjdHMuYXQoaSAtIDEpLCByZWN0cy5hdChpKSwgcmVj
dHMuYXQoaSArIDEpLCBvdXRsaW5lQ29sb3IpOwogCiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxh
eWVyKQotICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAordm9pZCBSZW5kZXJJ
bmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGxhc3RsaW5lLCBjb25zdCBMYXlv
dXRSZWN0JiB0aGlzbGluZSwgY29uc3QgTGF5b3V0UmVjdCYgbmV4dGxpbmUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciBvdXRsaW5lQ29sb3IpCiB7
CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9y
TGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgIEludFJl
Y3QgcGl4ZWxTbmFwcGVkTmV4dExpbmUgPSBzbmFwcGVkSW50UmVjdChwYWludE9mZnNldC54KCkg
KyBuZXh0bGluZS54KCksIDAsIG5leHRsaW5lLndpZHRoKCksIDApOwogICAgIAogICAgIC8vIGxl
ZnQgZWRnZQotICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgIEZsb2F0UmVjdChGbG9h
dFBvaW50KHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgsCiAgICAgICAgIHBpeGVs
U25hcHBlZEJveC55KCkgLSAobGFzdGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8IGxh
c3RsaW5lLngoKSB8fCAobGFzdGxpbmUubWF4WCgpIC0gMSkgPD0gdGhpc2xpbmUueCgpID8gb3V0
bGluZVdpZHRoIDogMCkpLAogICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC54KCks
CkBAIC0xNjI2LDcgKzE2MjYsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9y
TGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICBh
bnRpYWxpYXMpOwogICAgIAogICAgIC8vIHJpZ2h0IGVkZ2UKLSAgICBkcmF3TGluZUZvckJveFNp
ZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250
ZXh0LAogICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgp
LAogICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8fCBs
YXN0bGluZS5tYXhYKCkgPCB0aGlzbGluZS5tYXhYKCkgfHwgKHRoaXNsaW5lLm1heFgoKSAtIDEp
IDw9IGxhc3RsaW5lLngoKSA/IG91dGxpbmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQb2lu
dChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApAQCAtMTYzOCw3ICsxNjM4
LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgYW50aWFsaWFzKTsKICAgICAv
LyB1cHBlciBlZGdlCiAgICAgaWYgKHRoaXNsaW5lLngoKSA8IGxhc3RsaW5lLngoKSkKLSAgICAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRyYXdMaW5l
Rm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxvYXRQ
b2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICAgICAgcGl4
ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCksCiAgICAgICAgICAgICBGbG9hdFBvaW50
KHN0ZDo6bWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsIChsYXN0bGlu
ZS5pc0VtcHR5KCkgPyAxMDAwMDAwIDogcGl4ZWxTbmFwcGVkTGFzdExpbmUueCgpKSksCkBAIC0x
NjQ5LDcgKzE2NDksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgYW50
aWFsaWFzKTsKICAgICAKICAgICBpZiAobGFzdGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgp
KQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIEZsb2F0UmVj
dChGbG9hdFBvaW50KHN0ZDo6bWF4KGxhc3RsaW5lLmlzRW1wdHkoKSA/IC0xMDAwMDAwIDogcGl4
ZWxTbmFwcGVkTGFzdExpbmUubWF4WCgpLCBwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdp
ZHRoKSwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgpLAog
ICAgICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdp
ZHRoLApAQCAtMTY1OSw3ICsxNjU5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGlu
ZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAg
ICAgICAgIG91dGxpbmVXaWR0aCwgYW50aWFsaWFzKTsKIAogICAgIGlmICh0aGlzbGluZS54KCkg
PT0gdGhpc2xpbmUubWF4WCgpKQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNz
Q29udGV4dCwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAg
ICAgICAgICAgIEZsb2F0UmVjdChGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRs
aW5lV2lkdGgsCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gb3V0bGluZVdpZHRo
KSwKICAgICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxp
bmVXaWR0aCwKQEAgLTE2NzEsNyArMTY3MSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91
dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAK
ICAgICAvLyBsb3dlciBlZGdlCiAgICAgaWYgKHRoaXNsaW5lLngoKSA8IG5leHRsaW5lLngoKSkK
LSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3Qo
RmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICAg
ICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9hdFBvaW50KHN0ZDo6
bWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsICFuZXh0bGluZS5pc0Vt
cHR5KCkgPyBwaXhlbFNuYXBwZWROZXh0TGluZS54KCkgKyAxIDogMTAwMDAwMCksCkBAIC0xNjgy
LDcgKzE2ODIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgYW50aWFs
aWFzKTsKICAgICAKICAgICBpZiAobmV4dGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgpKQot
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICAgICAgZHJh
d0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIEZsb2F0UmVjdChG
bG9hdFBvaW50KHN0ZDo6bWF4KCFuZXh0bGluZS5pc0VtcHR5KCkgPyBwaXhlbFNuYXBwZWROZXh0
TGluZS5tYXhYKCkgOiAtMTAwMDAwMCwgcGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0
aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gubWF4WSgpKSwKICAgICAgICAgICAgIEZs
b2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2OTIs
NyArMTY5Miw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAgICAgICBvdXRsaW5l
V2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUueCgpID09IHRoaXNsaW5lLm1h
eFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9h
dFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAg
ICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9hdFBvaW50
KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggOTJiY2ViNWI2ZWU0NzIxOWQ3NDlhNTYxOGNiYTgx
NDczMGIyNWRlNS4uNDUwYmIwZjk5NTY4NmYxZWVmZjEzZGU1YzZlMWQ0NzdkMGE0ODk3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTczLDcgKzE3Myw3IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgUmVuZGVyUHRyPFJlbmRlcklubGluZT4gY2xvbmUoKSBjb25z
dDsKIAotICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIHByZXZMaW5lLCBjb25zdCBMYXlvdXRS
ZWN0JiB0aGlzTGluZSwKKyAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwgY29u
c3QgTGF5b3V0UmVjdCYgdGhpc0xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IExheW91dFJlY3QmIG5leHRMaW5lLCBjb25zdCBDb2xvcik7CiAgICAgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIGNvbnRpbnVhdGlvbkJlZm9yZShSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggN2RlZGU3MWNj
NGQ0MzQxNGU4M2E5ZjhhNzE3NTk2MjlhYjdkYWQ3My4uNzQzMDlmZGMyODFmZjgyYTYxYzk1NTIx
ZTc3MDY4MjJjODVmNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0xNzg3LDkgKzE3ODcsOSBAQCBzdGF0aWMgTGF5b3V0UmVjdCBwYWludGluZ0V4dGVu
dChjb25zdCBSZW5kZXJMYXllciYgY3VycmVudExheWVyLCBjb25zdCBSZW5kZXJMYQogICAgIHJl
dHVybiBpbnRlcnNlY3Rpb24odHJhbnNwYXJlbmN5Q2xpcEJveChjdXJyZW50TGF5ZXIsIHJvb3RM
YXllciwgUGFpbnRpbmdUcmFuc3BhcmVuY3lDbGlwQm94LCBSb290T2ZUcmFuc3BhcmVuY3lDbGlw
Qm94LCBwYWludEJlaGF2aW9yKSwgcGFpbnREaXJ0eVJlY3QpOwogfQogCi12b2lkIFJlbmRlckxh
eWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5m
bywgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkgfHwgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBh
aW50QmVoYXZpb3IpICYmIG1fdXNlZFRyYW5zcGFyZW5jeSkpCisgICAgaWYgKGNvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5w
YWludEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSB0cmFuc3BhcmVudFBhaW50aW5nQW5jZXN0b3Io
KTsKQEAgLTE3OTgsMjIgKzE3OTgsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclAKICAgICAK
ICAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlv
cikpIHsKICAgICAgICAgbV91c2VkVHJhbnNwYXJlbmN5ID0gdHJ1ZTsKLSAgICAgICAgY29udGV4
dC0+c2F2ZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgTGF5b3V0UmVjdCBh
ZGp1c3RlZENsaXBSZWN0ID0gcGFpbnRpbmdFeHRlbnQoKnRoaXMsIHBhaW50aW5nSW5mby5yb290
TGF5ZXIsIGRpcnR5UmVjdCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwogICAgICAgICBh
ZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9uKTsK
ICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZENsaXBSZWN0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkQ2xpcFJlY3Qp
OworICAgICAgICBjb250ZXh0LmNsaXAocGl4ZWxTbmFwcGVkQ2xpcFJlY3QpOwogCiAjaWYgRU5B
QkxFKENTU19DT01QT1NJVElORykKICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSgpKQotICAgICAg
ICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQtPmNvbXBvc2l0ZU9w
ZXJhdGlvbigpLCBibGVuZE1vZGUoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUoKSk7CiAj
ZW5kaWYKIAotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHJlbmRlcmVy
KCkub3BhY2l0eSgpKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHJl
bmRlcmVyKCkub3BhY2l0eSgpKTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAg
ICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0
ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFs
KTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQuY29t
cG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7CiAjZW5kaWYKIAogI2lmZGVmIFJF
VkVBTF9UUkFOU1BBUkVOQ1lfTEFZRVJTCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBib29sIFJlbmRl
ckxheWVyOjpzaG93c092ZXJmbG93Q29udHJvbHMoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMpCit2b2lkIFJlbmRlckxh
eWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIGJvb2wg
cGFpbnRpbmdPdmVybGF5Q29udHJvbHMpCiB7CiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYg
d2UgaGF2ZSBubyBvdmVyZmxvdy4KICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlw
KCkpCkBAIC0zNjA1LDcgKzM2MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93
Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludAogICAgIHBh
aW50UmVzaXplcihjb250ZXh0LCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBkYW1hZ2VSZWN0KTsKIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCkKIHsKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAgIEFT
U0VSVChib3gpOwpAQCAtMzYxNSw3ICszNjE1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRT
Y3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGEK
ICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0KSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKKyAgICBpZiAo
Y29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9sbENv
cm5lclN0eWxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjI4LDEwICszNjI4LDEw
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwYWlu
dCB3aGl0ZSBpZiB3ZSBoYXZlIG92ZXJsYXkgc2Nyb2xsYmFycywgc2luY2Ugd2UgbmVlZAogICAg
IC8vIHRvIHNlZSB3aGF0IGlzIGJlaGluZCBpdC4KICAgICBpZiAoIWhhc092ZXJsYXlTY3JvbGxi
YXJzKCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwg
Ym94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYWJz
UmVjdCwgQ29sb3I6OndoaXRlLCBib3gtPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIH0KIAotdm9p
ZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCit2b2lkIFJlbmRl
ckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCkKIHsKICAgICBSZWZQdHI8SW1h
Z2U+IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0U2l6ZSBjb3JuZXJSZXNpemVyU2l6ZTsK
QEAgLTM2NDcsMTggKzM2NDcsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVz
aXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3UKICAgICB9CiAK
ICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25TY3Jv
bGxiYXJPbkxvZ2ljYWxMZWZ0KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXpl
clNpemUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3Qu
aGVpZ2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjApKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdl
KHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOwotICAgICAgICBj
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShyZXNpemVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJSZXNpemVyU2l6ZS53
aWR0aCgpLCByZXNpemVyQ29ybmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVyUmVjdC5oZWlnaHQo
KSAtIGNvcm5lclJlc2l6ZXJTaXplLmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoLTEuMCwgMS4wKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKHJlc2l6ZUNv
cm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOworICAgICAgICBjb250ZXh0LnJl
c3RvcmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0
ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0Lm1h
eFhNYXhZQ29ybmVyKCkgLSBjb3JuZXJSZXNpemVyU2l6ZSwgY29ybmVyUmVzaXplclNpemUpLCBy
ZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY29udGV4dC0+
ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29s
b3JTcGFjZSgpLCBpbWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHJlc2l6ZUNvcm5l
ckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBpbWFnZVJlY3Qp
OwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3Qm
IGRhbWFnZVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91
dFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNpemUo
KSA9PSBSRVNJWkVfTk9ORSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY3MSw3ICszNjcxLDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhkYW1h
Z2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29u
dHJvbFRpbnRzKCkpIHsKKyAgICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7
CiAgICAgICAgIHVwZGF0ZVJlc2l6ZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMzY4NiwxNCArMzY4NiwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIC8vIERy
YXcgYSBmcmFtZSBhcm91bmQgdGhlIHJlc2l6ZXIgKDFweCBncmV5IGxpbmUpIGlmIHRoZXJlIGFy
ZSBhbnkgc2Nyb2xsYmFycyBwcmVzZW50LgogICAgIC8vIENsaXBwaW5nIHdpbGwgZXhjbHVkZSB0
aGUgcmlnaHQgYW5kIGJvdHRvbSBlZGdlcyBvZiB0aGlzIGZyYW1lLgogICAgIGlmICghaGFzT3Zl
cmxheVNjcm9sbGJhcnMoKSAmJiAobV92QmFyIHx8IG1faEJhcikpIHsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4
dC0+Y2xpcChhYnNSZWN0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LmNsaXAoYWJzUmVjdCk7CiAgICAgICAg
IExheW91dFJlY3QgbGFyZ2VyQ29ybmVyID0gYWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29ybmVy
LnNldFNpemUoTGF5b3V0U2l6ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIExheW91dFVuaXQ6OmZy
b21QaXhlbCgxKSwgbGFyZ2VyQ29ybmVyLmhlaWdodCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBpeGVs
KDEpKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3
LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC0+
ZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2VyQ29ybmVyKSk7CisgICAgICAgIGNvbnRleHQu
c2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwcGVkSW50UmVjdChsYXJn
ZXJDb3JuZXIpKTsKICAgICB9CiB9CiAKQEAgLTM3NjEsNyArMzc2MSw3IEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0
eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0aW9u
LCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwg
Y29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50QmVoYXZpb3IgcGFp
bnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQYWludExheWVyRmxh
Z3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYg
c3VicGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVy
T2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsK
ICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIApAQCAtMzc3
Miw3ICszNzcyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LAogICAgICAgICB3aWRnZXQtPnNl
dE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRP
dmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0
KiBzdWJ0cmVlUGFpbnRSb290KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVybGF5U2Nyb2xs
YmFycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJl
Y3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFp
bnRSb290KQogewogICAgIGlmICghbV9jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMpCiAg
ICAgICAgIHJldHVybjsKQEAgLTM3OTcsMTggKzM3OTcsMTggQEAgc3RhdGljIGJvb2wgaW5Db250
YWluaW5nQmxvY2tDaGFpbihSZW5kZXJMYXllciogc3RhcnRMYXllciwgUmVuZGVyTGF5ZXIqIGVu
ZExheWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1Jl
Y3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5n
UnVsZSBydWxlKQordm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IENs
aXBSZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCiB7CiAgICAg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKTsKIAogICAgIGJvb2wgbmVlZHNDbGlwcGluZyA9IGNsaXBSZWN0LnJlY3QoKSAh
PSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgaWYgKG5lZWRzQ2xpcHBpbmcgfHwg
Y2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250ZXh0LT5zYXZlKCk7Cisg
ICAgICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgaWYgKG5lZWRzQ2xpcHBpbmcpIHsKICAgICAg
ICAgTGF5b3V0UmVjdCBhZGp1c3RlZENsaXBSZWN0ID0gY2xpcFJlY3QucmVjdCgpOwogICAgICAg
ICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9u
KTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVk
Q2xpcFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7
CiAgICAgfQogCiAgICAgaWYgKGNsaXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkgewpAQCAtMzgx
OSw3ICszODE5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBHcmFwaGljc0NvbnQKICAgICAgICAgICAgIGlmIChs
YXllci0+cmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllci0+cmVuZGVyZXIoKS5z
dHlsZSgpLmhhc0JvcmRlclJhZGl1cygpICYmIGluQ29udGFpbmluZ0Jsb2NrQ2hhaW4odGhpcywg
bGF5ZXIpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3RlZENsaXBSZWN0ID0g
TGF5b3V0UmVjdCh0b0xheW91dFBvaW50KGxheWVyLT5vZmZzZXRGcm9tQW5jZXN0b3IocGFpbnRp
bmdJbmZvLnJvb3RMYXllcikpLCBsYXllci0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBhZGp1
c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9uKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QobGF5ZXItPnJlbmRlcmVyKCku
c3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYWRqdXN0ZWRDbGlwUmVjdCkucGl4ZWxT
bmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0eWxl
KCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3QpLnBpeGVsU25hcHBl
ZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxheWVyID09IHBhaW50aW5nSW5mby5y
b290TGF5ZXIpCkBAIC0zODI4LDEwICszODI4LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBU
b1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250
CiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpyZXN0b3JlQ2xpcChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBjb25zdCBDbGlw
UmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpyZXN0b3JlQ2xpcChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBjb25zdCBD
bGlwUmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgaWYgKGNsaXBSZWN0LnJlY3QoKSAhPSBwYWludERp
cnR5UmVjdCB8fCBjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpCi0gICAgICAgIGNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKIHN0YXRpYyB2b2lk
IHBlcmZvcm1PdmVybGFwVGVzdHMoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwJiBvdmVybGFwVGVzdFJl
cXVlc3RzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIpCkBAIC0zODc1LDEyICszODc1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWludEZv
ckZpeGVkUm9vdEJhY2tncm91bmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBSZW5kZXJMCiAg
ICAgcmV0dXJuIGxheWVyLT5yZW5kZXJlcigpLmlzUm9vdCgpICYmIChwYWludEZsYWdzICYgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSk7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRG
bGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxh
Z3MgcGFpbnRGbGFncykKIHsKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgLy8g
VGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2ggY29t
cG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3
ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3QgaW4g
dGhpcyBjYXNlLgotICAgICAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSB8
fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBv
c2l0aW5nTGF5ZXJzKSkKKyAgICAgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMo
KSB8fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKSkKICAgICAgICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXllclRl
bXBvcmFyeUNsaXBSZWN0czsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tpbmcoKS0+cGFpbnRzSW50
b1dpbmRvdygpCiAgICAgICAgICAgICAmJiAhYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9zaXRl
ZEFuY2VzdG9yKCkKQEAgLTM5NjQsNyArMzk2NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYK
ICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHBhaW50aW5nSW5m
bywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBBU1NFUlQoaXNTZWxmUGFpbnRpbmdMYXll
cigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKTsKIApAQCAtMzk4Miw5ICsz
OTgyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlv
bihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBwYWludExheWVyQ29udGVudHMo
Y29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogfQogCi1ib29sIFJlbmRl
ckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpCitib29sIFJlbmRlckxheWVyOjpzZXR1cEZv
bnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wmIGRp
ZFF1YW50aXplRm9udHMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkK
KyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGJvb2wgc2Nyb2xsaW5nT25NYWluVGhyZWFkID0gdHJ1ZTsKQEAgLTQwMDIsOCAr
NDAwMiw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9u
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYm9vbCYKICAgICBpZiAoUGFnZSogcGFnZSA9IHJl
bmRlcmVyKCkuZnJhbWUoKS5wYWdlKCkpCiAgICAgICAgIGlzWm9vbWluZyA9ICFwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS5oYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKTsKICAgICBpZiAoc2Nyb2xs
aW5nT25NYWluVGhyZWFkIHx8IGNvbnRlbnRzU2Nyb2xsQnlQYWludGluZyB8fCBpc1pvb21pbmcp
IHsKLSAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQtPnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cygpOwotICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoZmFsc2UpOworICAgICAgICBkaWRRdWFudGl6ZUZvbnRzID0gY29udGV4dC5zaG91bGRT
dWJwaXhlbFF1YW50aXplRm9udHMoKTsKKyAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMoZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDA3Miw5ICs0MDcyLDkgQEAgUGF0aCBSZW5kZXJMYXllcjo6Y29t
cHV0ZUNsaXBQYXRoKGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0
JgogICAgIHJldHVybiBQYXRoKCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBh
dGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFp
bnRpbmdJbmZvLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYg
cm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKK2Jv
b2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290
UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkuaGFzQ2xpcFBh
dGgoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFyZW5kZXJlcigp
Lmhhc0NsaXBQYXRoKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpIHsKQEAg
LTQwODgsOCArNDA4OCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgICAgIFdpbmRS
dWxlIHdpbmRSdWxlOwogICAgICAgICBMYXlvdXRTaXplIHBhaW50aW5nT2Zmc2V0RnJvbVJvb3Qg
PSBMYXlvdXRTaXplKHNuYXBTaXplVG9EZXZpY2VQaXhlbChvZmZzZXRGcm9tUm9vdCArIHBhaW50
aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbiwgTGF5b3V0UG9pbnQoKSwgcmVuZGVyZXIoKS5k
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKICAgICAgICAgUGF0aCBwYXRoID0gY29t
cHV0ZUNsaXBQYXRoKHBhaW50aW5nT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywg
d2luZFJ1bGUpOwotICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPmNs
aXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAg
IGNvbnRleHQuY2xpcFBhdGgocGF0aCwgd2luZFJ1bGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTQwOTgsNyArNDA5OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xp
cFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAg
ICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0RWxlbWVu
dEJ5SWQocmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24tPmZyYWdtZW50KCkpOwogICAgICAgICBp
ZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpjbGlwUGF0aFRhZykg
JiYgZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBhIHNhZmVyIGNhc3Qgc3VjaCBhcyB0b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
KCkuCi0gICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZG8gYSBjb250ZXh0LT5zYXZl
KCkgYW5kIHJldHVybiB0cnVlIHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CisgICAgICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZG8gYSBjb250ZXh0LnNhdmUoKSBhbmQgcmV0dXJuIHRy
dWUgc28gd2UgcmVzdG9yZSB0aGUgY29udGV4dD8KICAgICAgICAgICAgIHN0YXRpY19jYXN0PFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcio+KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5hcHBseUNsaXBw
aW5nVG9Db250ZXh0KHJlbmRlcmVyKCksIHJvb3RSZWxhdGl2ZUJvdW5kcywgcGFpbnRpbmdJbmZv
LnBhaW50RGlydHlSZWN0LCBjb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQxMDYsOSAr
NDEwNiw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFJlbmRlckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKSBjb25zdAorYm9vbCBSZW5k
ZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKIHsKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHBhaW50RmxhZ3MgJiBQYWludExheWVy
UGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykKQEAgLTQxMjYsNyArNDEyNiw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgUGFpbnRMYXllckZsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBh
aW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3Vu
ZHNDb21wdXRlZCkKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4g
UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExheWVy
UGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZl
Qm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKIHsKICAgICBpZiAoIWhh
c0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50RmxhZ3MpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTQxNjMsNyArNDE2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJF
ZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0Nv
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXI6
OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciogZmlsdGVyUGFpbnRlciwg
R3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWlu
dGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykKK0dyYXBoaWNzQ29udGV4
dCYgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciog
ZmlsdGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFp
bnRpbmdJbmZvJiBwYWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykK
IHsKICAgICBBU1NFUlQoZmlsdGVyUGFpbnRlci0+aGFzU3RhcnRlZEZpbHRlckVmZmVjdCgpKTsK
ICAgICAvLyBBcHBseSB0aGUgY29ycmVjdCBjbGlwcGluZyAoaWUuIG92ZXJmbG93OiBoaWRkZW4p
LgpAQCAtNDE4NSw3ICs0MTg1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVaSW5kZXgo
UmVuZGVyTGF5ZXIqIGZpcnN0LCBSZW5kZXJMYXllciogc2Vjb25kKQogLy8gVGhlc2UgbGF5ZXJz
IHNob3VsZCBub3QgYmUgcGFpbnRlZCBpbiBhIHNpbWlsYXIgd2F5IGFzIHRoZSBvdGhlciBlbGVt
ZW50cyBjb2xsZWN0ZWQgaW4KIC8vIG5hbWVkIGZsb3dzIC0gcmVnaW9ucyAtPiBuYW1lZCBmbG93
cyAtIHNpbmNlIHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgY2xpcHBlZCB0byB0aGUKIC8vIHJl
Z2lvbnMgdmlld3BvcnQuCi12b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVkTGF5ZXJzSW5OYW1l
ZEZsb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxh
eWVyOjpwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKCFpc1Jvb3RMYXllcigpKQogICAgICAgICByZXR1cm47
CkBAIC00MjA2LDcgKzQyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVkTGF5ZXJz
SW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTAogICAgICAgICBm
aXhlZExheWVyLT5wYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50
TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBB
U1NFUlQoaXNTZWxmUGFpbnRpbmdMYXllcigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2Vu
ZGFudCgpKTsKIApAQCAtNDI0OCwyNCArNDI0OCwyNSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkaXNhYmxlIHN1YnBpeGVsIHF1
YW50aXphdGlvbiBmb3Igb3ZlcmZsb3cgY2xpcHMgb3Igc3ViZnJhbWVzIG9uY2Ugd2Ugc2Nyb2xs
IHRob3NlCiAgICAgLy8gdGhpbmdzIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgogICAgIGJvb2wg
ZGlkUXVhbnRpemVGb250cyA9IHRydWU7Ci0gICAgYm9vbCBuZWVkVG9BZGp1c3RTdWJwaXhlbFF1
YW50aXphdGlvbiA9IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQsIGRpZFF1
YW50aXplRm9udHMpOworICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4ZWxRdWFudGl6YXRpb24g
PSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihvcmlnaW5hbENvbnRleHQsIGRpZFF1YW50
aXplRm9udHMpOwogCiAgICAgLy8gQXBwbHkgY2xpcC1wYXRoIHRvIGNvbnRleHQuCiAgICAgTGF5
b3V0U2l6ZSBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gb2Zmc2V0RnJvbVJvb3Q7Ci0gICAg
aWYgKHJlbmRlcmVyKCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYmIChyZW5kZXJlcigp
Lmhhc0NsaXBQYXRoKCkgfHwgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoY29udGV4dCwgcGFpbnRG
bGFncykpKQorICAgIGlmIChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSAm
JiAocmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKG9y
aWdpbmFsQ29udGV4dCwgcGFpbnRGbGFncykpKQogICAgICAgICBjb2x1bW5Bd2FyZU9mZnNldEZy
b21Sb290ID0gdG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5mby5y
b290TGF5ZXIsIExheW91dFBvaW50KCksIEFkanVzdEZvckNvbHVtbnMpKTsKIAogICAgIGJvb2wg
aGFzQ2xpcFBhdGggPSBmYWxzZTsKICAgICBpZiAoc2hvdWxkQXBwbHlDbGlwUGF0aChwYWludGlu
Z0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkKLSAgICAgICAgaGFzQ2xpcFBh
dGggPSBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHBhaW50aW5nSW5mbywgY29sdW1uQXdhcmVPZmZz
ZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRl
ZCk7CisgICAgICAgIGhhc0NsaXBQYXRoID0gc2V0dXBDbGlwUGF0aChvcmlnaW5hbENvbnRleHQs
IHBhaW50aW5nSW5mbywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91
bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKICAgICBMYXllclBhaW50aW5nSW5m
byBsb2NhbFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBjb250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gZmlsdGVyUGFpbnRlciA9IHNldHVwRmlsdGVy
cyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRGbGFncywgY29sdW1uQXdhcmVPZmZz
ZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRl
ZCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gJm9yaWdpbmFsQ29udGV4dDsKKyAg
ICBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9IG9yaWdpbmFsQ29u
dGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZp
bHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMoKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBw
YWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMs
IHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKICAgICBpZiAoZmlsdGVyUGFpbnRlcikgewog
ICAgICAgICBjb250ZXh0ID0gZmlsdGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4dCgpOwotICAgICAg
ICBpZiAoY29udGV4dCAhPSB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgJiYgaGF2ZVRyYW5zcGFy
ZW5jeSkgeworICAgICAgICBpZiAoY29udGV4dCAhPSAmdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0
ICYmIGhhdmVUcmFuc3BhcmVuY3kpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBmaWx0
ZXIgYW5kIHRyYW5zcGFyZW5jeSwgd2UgaGF2ZSB0byBlYWdlcmx5IHN0YXJ0IGEgdHJhbnNwYXJl
bmN5IGxheWVyIGhlcmUsIHJhdGhlciB0aGFuIHJpc2sgYSBjaGlsZCBsYXllciBsYXppbHkgc3Rh
cnRzIG9uZSB3aXRoIHRoZSB3cm9uZyBjb250ZXh0LgogICAgICAgICAgICAgYmVnaW5UcmFuc3Bh
cmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KTsKICAgICAgICAgfQpAQCAtNDMxMSw2MyArNDMx
Miw2MyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgIGlmIChpc1BhaW50aW5nQ29tcG9z
aXRlZEJhY2tncm91bmQpIHsKICAgICAgICAgLy8gUGFpbnQgb25seSB0aGUgYmFja2dyb3VuZHMg
Zm9yIGFsbCBvZiB0aGUgZnJhZ21lbnRzIG9mIHRoZSBsYXllci4KICAgICAgICAgaWYgKHNob3Vs
ZFBhaW50Q29udGVudCAmJiAhc2VsZWN0aW9uT25seSkKLSAgICAgICAgICAgIHBhaW50QmFja2dy
b3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5
ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ks
CisgICAgICAgICAgICBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMs
ICpjb250ZXh0LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERp
cnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKICAgICAgICAgICAgICAgICBsb2NhbFBhaW50aW5n
SW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICB9
CiAKICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBuZWdh
dGl2ZSB6LWluZGljZXMuCiAgICAgaWYgKChpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAmJiBp
c1BhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgfHwgKCFpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVu
dCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQpKQotICAgICAgICBwYWludExpc3Qo
bmVnWk9yZGVyTGlzdCgpLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZs
YWdzKTsKKyAgICAgICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgKmNvbnRleHQsIGxvY2Fs
UGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIAogICAgIGlmIChpc1BhaW50aW5n
Q29tcG9zaXRlZEZvcmVncm91bmQpIHsKICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCkK
LSAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywg
Y29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCisgICAgICAgICAgICBwYWludEZvcmVncm91bmRGb3JG
cmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCB0cmFuc3BhcmVuY3lMYXllckNvbnRl
eHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKICAgICAg
ICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50
Um9vdEZvclJlbmRlcmVyLCBzZWxlY3Rpb25Pbmx5IHx8IHNlbGVjdGlvbkFuZEJhY2tncm91bmRz
T25seSk7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFBhaW50T3V0bGluZSkKLSAgICAgICAgcGFp
bnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50
aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAg
ICAgICAgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwg
bG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5k
ZXJlcik7CiAKICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAg
ICAgIC8vIFBhaW50IGFueSBjaGlsZCBsYXllcnMgdGhhdCBoYXZlIG92ZXJmbG93LgotICAgICAg
ICBwYWludExpc3QobV9ub3JtYWxGbG93TGlzdC5nZXQoKSwgY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgIHBhaW50TGlzdChtX25vcm1hbEZsb3dM
aXN0LmdldCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7
CiAgICAgCiAgICAgICAgIC8vIE5vdyB3YWxrIHRoZSBzb3J0ZWQgbGlzdCBvZiBjaGlsZHJlbiB3
aXRoIHBvc2l0aXZlIHotaW5kaWNlcy4KLSAgICAgICAgcGFpbnRMaXN0KHBvc1pPcmRlckxpc3Qo
KSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAg
IHBhaW50TGlzdChwb3NaT3JkZXJMaXN0KCksICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
bG9jYWxQYWludEZsYWdzKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgZml4ZWQgZWxlbWVudHMg
ZnJvbSBmbG93IHRocmVhZHMuCi0gICAgICAgIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3Mo
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgIHBh
aW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBs
b2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHJlZ2lv
biwgcGFpbnQgaXRzIGNvbnRlbnRzIHZpYSB0aGUgZmxvdyB0aHJlYWQncyBsYXllci4KICAgICAg
ICAgaWYgKHNob3VsZFBhaW50Q29udGVudCkKLSAgICAgICAgICAgIHBhaW50Rmxvd1RocmVhZElm
UmVnaW9uRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgICAgIHBhaW50Rmxvd1RocmVhZElmUmVn
aW9uRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgfQogCiAgICAgaWYgKGlzUGFpbnRpbmdPdmVybGF5
U2Nyb2xsYmFycyAmJiBoYXNTY3JvbGxiYXJzKCkpCi0gICAgICAgIHBhaW50T3ZlcmZsb3dDb250
cm9sc0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8pOworICAgICAgICBwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMobGF5ZXJGcmFn
bWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbyk7CiAKICAgICBpZiAoZmlsdGVyUGFp
bnRlcikgewotICAgICAgICBjb250ZXh0ID0gYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50ZXIuZ2V0
KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxheWVyRnJh
Z21lbnRzKTsKKyAgICAgICAgY29udGV4dCA9ICZhcHBseUZpbHRlcnMoZmlsdGVyUGFpbnRlci5n
ZXQoKSwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbGF5ZXJG
cmFnbWVudHMpOwogICAgICAgICBmaWx0ZXJQYWludGVyID0gbnVsbHB0cjsKICAgICB9CiAgICAg
CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2Ugbm93IHVzZSB0aGUgb3JpZ2luYWwgdHJhbnNwYXJl
bmN5IGNvbnRleHQuCi0gICAgQVNTRVJUKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9PSBjb250
ZXh0KTsKKyAgICBBU1NFUlQoJnRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9PSBjb250ZXh0KTsK
IAogICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIShzZWxlY3Rpb25Pbmx5IHx8IHNlbGVj
dGlvbkFuZEJhY2tncm91bmRzT25seSkpIHsKICAgICAgICAgaWYgKHNob3VsZFBhaW50TWFzayhw
YWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkgewogICAgICAgICAg
ICAgLy8gUGFpbnQgdGhlIG1hc2sgZm9yIHRoZSBmcmFnbWVudHMuCi0gICAgICAgICAgICBwYWlu
dE1hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOworICAgICAgICAgICAgcGFpbnRNYXNr
Rm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8s
IHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IShwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdNYXNrUGhhc2UpICYm
IChwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdDbGlwUGF0aFBoYXNl
KSkgewogICAgICAgICAgICAgLy8gUmUtdXNlIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFn
bWVudHMgdG8gcGFpbnQgYmxhY2sgZm9yIHRoZSBjb21wb3NpdGluZyBjbGlwcGluZyBtYXNrLgot
ICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdt
ZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RGb3JSZW5k
ZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGxh
eWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgobG9jYWxQ
YWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZSkpIHsK
ICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBib3JkZXIgcmFkaXVzIG1hc2sgZm9yIHRoZSBmcmFn
bWVudHMuCi0gICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGxh
eWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgc3VidHJlZVBhaW50Um9v
dEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFn
bWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgc3VidHJl
ZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM4Niw3ICs0
Mzg3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgY29udGV4dC0+cmVzdG9y
ZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9y
bShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWlu
dGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiB0
cmFuc2xhdGlvbk9mZnNldCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5n
VHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IExheW91
dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0KQogewogICAgIC8vIFRoaXMgaW52b2x2ZXMgc3VidHJh
Y3Rpbmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIgaW4gb3VyIGN1cnJlbnQgY29vcmRp
bmF0ZSBzcGFjZSwgYnV0IHByZXNlcnZpbmcKICAgICAvLyB0aGUgYWNjdW11bGF0ZWQgZXJyb3Ig
Zm9yIHN1Yi1waXhlbCBsYXlvdXQuCkBAIC00NDAyLDggKzQ0MDMsOCBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBncmFwaGljcyBjb250ZXh0IHRvIHRoZSBz
bmFwcGluZyBwb3NpdGlvbiB0byBhdm9pZCBvZmYtZGV2aWNlLXBpeGVsIHBvc2l0aW5nLgogICAg
IHRyYW5zZm9ybS50cmFuc2xhdGVSaWdodChkZXZpY2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JUaGlz
TGF5ZXIud2lkdGgoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyLmhlaWdo
dCgpKTsKICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtLgotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHRy
YW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5jb25jYXRDVE0odHJhbnNmb3Jt
LnRvQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gTm93IGRvIGEgcGFpbnQgd2l0aCB0aGUg
cm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExheW91dFNpemUgYWRqdXN0ZWRTdWJw
aXhlbEFjY3VtdWxhdGlvbiA9IG9mZnNldEZvclRoaXNMYXllciAtIExheW91dFNpemUoZGV2aWNl
UGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKQEAgLTQ0MTIsNyArNDQxMyw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9u
KGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIH0KIAotdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0lu
Zm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
aXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzKQogewogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU5Nyw3
ICs0NTk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21l
bnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3Jt
ZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykK
IHsKICAgICBMYXllckZyYWdtZW50cyBlbmNsb3NpbmdQYWdpbmF0aW9uRnJhZ21lbnRzOwogICAg
IExheW91dFNpemUgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdDsKQEAgLTQ2MjksNyAr
NDYzMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFn
bWVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgfQogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4
dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRCYWNr
Z3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxh
eWVyQ29udGV4dCwKICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5
UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9j
YWxQYWludGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKICAgICBSZW5kZXJP
YmplY3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcikKIHsKQEAgLTQ2NTcsNyArNDY1OCw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBM
YXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVy
OjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dCogdHJh
bnNwYXJlbmN5TGF5ZXJDb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29u
dGV4dCwKICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVjdCwg
Ym9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWlu
dGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKICAgICBSZW5kZXJPYmplY3Qq
IHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgYm9vbCBzZWxlY3Rpb25Pbmx5KQogewpAQCAt
NDcxNCw3ICs0NzE1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICAgICAgcmVzdG9y
ZUNsaXAoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGNsaXBwZWRS
ZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRz
V2l0aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0
IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogICAgIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywgUGFpbnRC
ZWhhdmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3RGb3JS
ZW5kZXJlcikKIHsKICAgICBib29sIHNob3VsZENsaXAgPSBsb2NhbFBhaW50aW5nSW5mby5jbGlw
VG9EaXJ0eVJlY3QgJiYgbGF5ZXJGcmFnbWVudHMuc2l6ZSgpID4gMTsKQEAgLTQ3MzYsNyArNDcz
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQ
aGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxh
eWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBsb2NhbFBhaW50aW5nSW5mbywKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvLAogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVu
dCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzUxLDcgKzQ3NTIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbnRzLAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8s
Cit2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywKICAgICBSZW5kZXJPYmplY3QqIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcikKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZyYWdt
ZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKQEAgLTQ3NzEsNyArNDc3Miw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJG
cmFnbWVudHMsIEdyCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xp
cHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50
cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9j
YWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNr
Rm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGlu
Z0luZm8sCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00
NzkwLDcgKzQ3OTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNr
Rm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllcgogICAgIH0KIH0KIAotdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCit2b2lkIFJlbmRlckxh
eWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVu
dHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbykKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IGZyYWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKICAgICAgICAgaWYgKGZyYWdtZW50LmJhY2tn
cm91bmRSZWN0LmlzRW1wdHkoKSkKQEAgLTY5MTgsNyArNjkxOSw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OmZpbHRlck5lZWRzUmVwYWludCgpCiAgICAgcmVuZGVyZXIoKS5yZXBhaW50KCk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlZ2lvbiwgTGF5
b3V0UmVjdCBwYWludERpcnR5UmVjdCwgTGF5b3V0UG9pbnQgcGFpbnRPZmZzZXQsIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJl
bmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIExheW91dFJlY3Qg
cGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWludEJlaGF2aW9yIHBh
aW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIExheW91dFJl
Y3QgcmVnaW9uQ29udGVudEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVnaW9uLT5sYXllck93
bmVyKCkpLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgQ3VycmVudFJlbmRlclJlZ2lvbk1haW50YWlu
ZXIgcmVnaW9uTWFpbnRhaW5lcigqcmVnaW9uKTsKQEAgLTY5MjYsMTcgKzY5MjcsMTcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBSZW4KIAogICAgIExheW91dFNpemUgbW92ZU9mZnNldCA9IHJlZ2lv
bi0+Zmxvd1RocmVhZFBvcnRpb25Mb2NhdGlvbigpIC0gKHBhaW50T2Zmc2V0ICsgcmVnaW9uQ29u
dGVudEJveC5sb2NhdGlvbigpKSArIHJlZ2lvbi0+ZnJhZ21lbnRDb250YWluZXIoKS5zY3JvbGxl
ZENvbnRlbnRPZmZzZXQoKTsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBy
b3VuZFBvaW50VG9EZXZpY2VQaXhlbHModG9MYXlvdXRQb2ludChtb3ZlT2Zmc2V0KSwgcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQtPnNhdmUo
KTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLWFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCAtYWRq
dXN0ZWRQYWludE9mZnNldC55KCkpOworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgLWFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpKTsKIAogICAgIExheW91dFNpemUgc3VicGl4ZWxBY2N1bXVsYXRpb24gPSBtb3ZlT2Zmc2V0
IC0gdG9MYXlvdXRTaXplKExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQpKTsKICAgICBw
YWludERpcnR5UmVjdC5tb3ZlKG1vdmVPZmZzZXQpOwogICAgIHBhaW50KGNvbnRleHQsIHBhaW50
RGlydHlSZWN0LCBMYXlvdXRTaXplKC1zdWJwaXhlbEFjY3VtdWxhdGlvbi53aWR0aCgpLCAtc3Vi
cGl4ZWxBY2N1bXVsYXRpb24uaGVpZ2h0KCkpLCBwYWludEJlaGF2aW9yLCBudWxscHRyLCBwYWlu
dEZsYWdzIHwgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyk7CiAgICAgcmVnaW9uLT5yZXN0
b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKTsKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7
CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rmxv
d1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBmcmFnbWVu
dHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBh
aW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVy
OjpwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYgZnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAg
IGlmICghcmVuZGVyZXIoKS5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXgg
YjZhMTI4Y2E4ZWY5NDVkMDA2ZTE4Yjc5MDlhYzkxNzVjN2MyYWI0My4uZWQxYjQwMDI0Njc0ODE3
YjI3ZTdiNDcxNzZhMDYzZTE2ZjJlMmI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKQEAgLTI2MCw5ICsyNjAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoaXRUZXN0T3Zl
cmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQmIGxvY2FsUG9pbnQp
OwogICAgIEludFNpemUgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2ludCYgYWJz
b2x1dGVQb2ludCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmZsb3dDb250cm9scyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qs
IGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMgPSBmYWxzZSk7Ci0gICAgdm9pZCBwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCk7CisgICAg
dm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UG9p
bnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRy
b2xzID0gZmFsc2UpOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2b2lk
IHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0
IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxJbmZvQWZ0
ZXJMYXlvdXQoKTsKIApAQCAtNDYwLDEzICs0NjAsMTMgQEAgcHVibGljOgogICAgIC8vIHBhaW50
cyB0aGUgbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVjdCBmcm9tIGJhY2sgdG8K
ICAgICAvLyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZlbnRz
IGJ5IHdhbGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZyb20g
ZnJvbnQgdG8gYmFjay4KLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExh
eW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0
aW9uID0gTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uID0gTGF5b3V0U2l6
ZSgpLCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwKICAgICAgICAgUmVuZGVy
T2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgUGFpbnRMYXllckZsYWdzID0gMCk7
CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYp
OwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYsIEhpdFRlc3RSZXN1bHQmKTsKLSAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFpbnRC
ZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0cik7CisgICAg
dm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91
dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBh
aW50Um9vdCA9IG51bGxwdHIpOwogCi0gICAgdm9pZCBwYWludE5hbWVkRmxvd1RocmVhZEluc2lk
ZVJlZ2lvbihHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCosIExheW91
dFJlY3QsIExheW91dFBvaW50LCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwg
UGFpbnRMYXllckZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludE5hbWVkRmxvd1RocmVhZEluc2lk
ZVJlZ2lvbihHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCosIExheW91
dFJlY3QsIExheW91dFBvaW50LCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwg
UGFpbnRMYXllckZsYWdzID0gMCk7CiAKICAgICBzdHJ1Y3QgQ2xpcFJlY3RzQ29udGV4dCB7CiAg
ICAgICAgIENsaXBSZWN0c0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXIqIGluUm9vdExheWVyLCBD
bGlwUmVjdHNUeXBlIGluQ2xpcFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFu
Y3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxi
YXJTaXplLCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwIGluUmVzcGVjdE92ZXJmbG93Q2xpcCA9
IFJlc3BlY3RPdmVyZmxvd0NsaXApCkBAIC03MTcsOCArNzE3LDggQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVSZXBhaW50UmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygpOwogICAgIHZvaWQg
Y2xlYXJSZXBhaW50UmVjdHMoKTsKIAotICAgIHZvaWQgY2xpcFRvUmVjdChjb25zdCBMYXllclBh
aW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IENsaXBSZWN0JiwgQm9yZGVyUmFk
aXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwotICAgIHZvaWQg
cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CisgICAgdm9pZCBjbGlwVG9SZWN0KGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQ2xpcFJlY3QmLCBCb3JkZXJS
YWRpdXNDbGlwcGluZ1J1bGUgPSBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CisgICAgdm9p
ZCByZXN0b3JlQ2xpcChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERp
cnR5UmVjdCwgY29uc3QgQ2xpcFJlY3QmKTsKIAogICAgIGJvb2wgc2hvdWxkUmVwYWludEFmdGVy
TGF5b3V0KCkgY29uc3Q7CiAKQEAgLTc2OCw0MiArNzY4LDQyIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKLSAgICBib29s
IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdyYXBoaWNzQ29udGV4dCosIGJvb2wmIGRp
ZFF1YW50aXplRm9udHMpOworICAgIGJvb2wgc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24o
R3JhcGhpY3NDb250ZXh0JiwgYm9vbCYgZGlkUXVhbnRpemVGb250cyk7CiAKICAgICBQYXRoIGNv
bXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVj
dCYgcm9vdFJlbGF0aXZlQm91bmRzLCBXaW5kUnVsZSYpIGNvbnN0OwogCi0gICAgYm9vbCBzZXR1
cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJv
dW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAgIGJvb2wgc2V0dXBD
bGlwUGF0aChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3Vu
ZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKIAotICAgIGJvb2wgaGFzRmls
dGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiwgUGFpbnRMYXllckZsYWdzKSBjb25z
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IHNldHVw
RmlsdGVycyhHcmFwaGljc0NvbnRleHQqLCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJG
bGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RS
ZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwotICAgIEdy
YXBoaWNzQ29udGV4dCogYXBwbHlGaWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyKiwg
R3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiwgTGF5
ZXJGcmFnbWVudHMmKTsKKyAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNz
Q29udGV4dCYsIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZp
bHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0Jiwg
TGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0IExheW91dFNpemUmIG9m
ZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RS
ZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGFwcGx5RmlsdGVy
cyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxD
b250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVyRnJhZ21lbnRzJik7CiAKLSAgICB2b2lk
IHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQ
YWludExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFn
cyk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAgICB2
b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiB0
cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7Ci0gICAgdm9pZCBwYWludExheWVyQ29u
dGVudHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExh
eWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3Mp
OworICAgIHZvaWQgcGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludEZpeGVkTGF5ZXJzSW5O
YW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MpOworICAgIHZvaWQgcGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0IExh
eW91dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpKTsKKyAgICB2b2lkIHBh
aW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExpc3QoVmVjdG9yPFJlbmRlckxh
eWVyKj4qLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
TGF5ZXJGbGFncyk7CiAKICAgICB2b2lkIGNvbGxlY3RGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMm
LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJl
Y3QsCiAgICAgICAgIFBhZ2luYXRpb25JbmNsdXNpb25Nb2RlLAogICAgICAgICBDbGlwUmVjdHNU
eXBlLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBpbk92ZXJsYXlTY3JvbGxiYXJTaXpl
UmVsZXZhbmN5LCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCogbGF5ZXJCb3VuZGluZ0Jv
eCA9IG51bGxwdHIsIFNob3VsZEFwcGx5Um9vdE9mZnNldFRvRnJhZ21lbnRzID0gSWdub3JlUm9v
dE9mZnNldEZvckZyYWdtZW50cyk7CiAgICAgdm9pZCB1cGRhdGVQYWludGluZ0luZm9Gb3JGcmFn
bWVudHMoTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5
ZXJGbGFncywgYm9vbCBzaG91bGRQYWludENvbnRlbnQsIGNvbnN0IExheW91dFNpemUmIG9mZnNl
dEZyb21Sb290KTsKLSAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBM
YXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIEdyYXBoaWNzQ29udGV4dCogdHJhbnNw
YXJlbmN5TGF5ZXJDb250ZXh0LAorICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRz
KGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NDb250ZXh0
JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIHRy
YW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhhdmVUcmFuc3BhcmVuY3ksIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jv
b3RGb3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQqIHRy
YW5zcGFyZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29u
dGV4dCYgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0
JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRp
bmdSb290Rm9yUmVuZGVyZXIsCiAgICAgICAgIGJvb2wgc2VsZWN0aW9uT25seSk7Ci0gICAgdm9p
ZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSwgY29uc3Qg
TGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIp
OwotICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2
aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBh
aW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7Ci0gICAgdm9pZCBwYWlu
dE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9y
UmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9p
ZCBwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlLCBjb25zdCBMYXllckZy
YWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CisgICAg
dm9pZCBwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJl
bmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZvaWQgcGFpbnRPdmVy
Zmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mKTsKKyAgICB2b2lkIHBhaW50TWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJl
cik7CisgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50
VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwogCiAgICAgUmVuZGVyTGF5ZXIqIHRy
YW5zcGFyZW50UGFpbnRpbmdBbmNlc3RvcigpOwotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lM
YXllcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBM
YXlvdXRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcnMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBMYXlvdXRS
ZWN0JiBkaXJ0eVJlY3QpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCiAgICAgICAgIGNvbnN0
IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBib29sIGFw
cGxpZWRUcmFuc2Zvcm0sCkBAIC05MzgsNyArOTM4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVNjcm9sbENvcm5lclN0eWxlKCk7CiAgICAgdm9pZCB1cGRhdGVSZXNpemVyU3R5bGUoKTsK
IAotICAgIHZvaWQgZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9y
bVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVy
Q29ybmVyUmVjdCk7CiAKICAgICB2b2lkIHVwZGF0ZVBhZ2luYXRpb24oKTsKIApAQCAtOTgyLDcg
Kzk4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mLAogICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqLCBk
b3VibGUqIHpPZmZzZXRGb3JEZXNjZW5kYW50cywKICAgICAgICAgZG91YmxlKiB6T2Zmc2V0LCBj
b25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUs
IGJvb2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwotICAgIHZvaWQgcGFpbnRGbG93VGhyZWFkSWZS
ZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBw
YWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYs
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZs
YWdzKTsKICAgICBib29sIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIoQ2xp
cFJlY3RzJikgY29uc3Q7CiAKICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogY3VycmVudFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDUwNjRjNGY4Y2Y4NmVmM2U3MGEzZWU3
N2RiMjJjMTI1NjZlYjQ3ZjkuLjM5MDQxYTc5OTVlOGQ2ZjZmMTllYTE3ZjY0MTMzYzlmZWUzODEx
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0Q29u
dGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaAogICAgIH0K
IH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3ZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBn
cmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgY29uc3QgSW50UmVj
dCYgcGFpbnREaXJ0eVJlY3QsIC8vIEluIHRoZSBjb29yZHMgb2Ygcm9vdExheWVyLgogICAgIFBh
aW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UgcGFp
bnRpbmdQaGFzZSkKIHsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdy
YXBoCiAgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVuY2xvc2luZ0ludFJlY3QoY29t
cG9zaXRlZEJvdW5kc0luY2x1ZGluZ01hcmdpbigpKSk7CiAKICAgICAgICAgLy8gV2UgaGF2ZSB0
byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBmb3IgaGl0IHRlc3RpbmcsIGJlY2F1c2UgYm90aCBtZXRo
b2RzIGNhbiBjb21wdXRlIGFuZCBjYWNoZSBjbGlwUmVjdHMuCi0gICAgICAgIHBhaW50SW50b0xh
eWVyKGdyYXBoaWNzTGF5ZXIsICZjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3JOb3Jt
YWwsIHBhaW50aW5nUGhhc2UpOworICAgICAgICBwYWludEludG9MYXllcihncmFwaGljc0xheWVy
LCBjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3JOb3JtYWwsIHBhaW50aW5nUGhhc2Up
OwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoJnJlbmRlcmVy
KCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVyRm9y
SG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CkBAIC0yMzU0LDggKzIzNTQsOCBAQCB2b2lkIFJlbmRl
ckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGlj
c0xheWVyLCBHcmFwaAogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyQW5k
UmVzaXplci54KCksIC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnkoKSk7CiAgICAgICAgIExheW91
dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gTGF5b3V0UmVjdChjbGlwKTsKICAgICAgICAgdHJhbnNm
b3JtZWRDbGlwLm1vdmVCeShzY3JvbGxDb3JuZXJBbmRSZXNpemVyLmxvY2F0aW9uKCkpOwotICAg
ICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCBJbnRQb2ludCgp
LCBzbmFwcGVkSW50UmVjdCh0cmFuc2Zvcm1lZENsaXApKTsKLSAgICAgICAgbV9vd25pbmdMYXll
ci5wYWludFJlc2l6ZXIoJmNvbnRleHQsIEludFBvaW50KCksIHRyYW5zZm9ybWVkQ2xpcCk7Cisg
ICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgSW50UG9pbnQo
KSwgc25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAgICAgIG1fb3duaW5nTGF5
ZXIucGFpbnRSZXNpemVyKGNvbnRleHQsIEludFBvaW50KCksIHRyYW5zZm9ybWVkQ2xpcCk7CiAg
ICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIH0KICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggMjRlYjJiYmRi
YjE0MjE1ZjMyNDBlOTdmNTNlMDVkZTllYjQ4NjQ5MS4uZDY2ZmI4MjE1NDgxYjU5NWVlY2ExOTMz
YjJiZWJkZjM0NTZiMDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMzI2LDcgKzMyNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNU
aWxlZEJhY2tpbmdGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV9jaGlsZENvbnRh
aW5tZW50TGF5ZXIgJiYgbV91c2luZ1RpbGVkQ2FjaGVMYXllcik7IH0KICAgICBHcmFwaGljc0xh
eWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3VzaW5nVGls
ZWRDYWNoZUxheWVyID8gbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCkgOiBudWxscHRyOyB9
CiAKLSAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciwg
R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOworICAgIHZvaWQgcGFpbnRJbnRvTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIHBhaW50
RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSk7CiAK
ICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHVwZGF0ZUdlb21ldHJ5LgogICAgIHZvaWQgYWRq
dXN0QW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kc0ZvckZsb3dUaHJlYWQoTGF5b3V0UmVjdCYgYW5j
ZXN0b3JDb21wb3NpdGluZ0JvdW5kcywgY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5j
ZXN0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4OTU1NmUzMWMzYTEzZmE1NzQzNGQ3OGM2ZTJmMThjYTIz
NGQ1ZjhkLi42ZjQ1ZTk2Nzg1ZWZjM2JmMDE5NjM2NmNmZDBhMmY3NmZmYzBmZmNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMjg2Niw3ICsyODY2LDcgQEAgdm9pZCBwYWludFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKICAgICBjb250ZXh0
LnRyYW5zbGF0ZSgtc2Nyb2xsYmFyUmVjdC54KCksIC1zY3JvbGxiYXJSZWN0LnkoKSk7CiAgICAg
SW50UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBjbGlwOwogICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3Zl
Qnkoc2Nyb2xsYmFyUmVjdC5sb2NhdGlvbigpKTsKLSAgICBzY3JvbGxiYXItPnBhaW50KCZjb250
ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgIHNjcm9sbGJhci0+cGFpbnQoY29udGV4dCwgdHJh
bnNmb3JtZWRDbGlwKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIApAQCAtMjg4Myw3ICsy
ODgzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVudHMoY29uc3Qg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3IKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoLXNjcm9sbENvcm5lci54KCksIC1zY3JvbGxDb3JuZXIueSgpKTsKICAgICAgICAgSW50UmVj
dCB0cmFuc2Zvcm1lZENsaXAgPSBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlvbmVk
SXRlbXM7CiAgICAgICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyLmxvY2F0
aW9uKCkpOwotICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGFpbnRTY3JvbGxDb3Ju
ZXIoJmNvbnRleHQsIHRyYW5zZm9ybWVkQ2xpcCk7CisgICAgICAgIG1fcmVuZGVyVmlldy5mcmFt
ZVZpZXcoKS5wYWludFNjcm9sbENvcm5lcihjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOwogICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNDBmNWUzMmNmNTAyY2JiZGUwYmY1M2M0MGMzM2Ey
NDFmNDY1YTM3Ny4uZTNjYjc5NmJmZjQ3MzZmNDdkYzZhMTE2NmU4ZTQ0MmViMGY0NjA3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzQ1LDcgKzM0
NSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxiYXIoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgICAgICAgICBtX3ZCYXItPndpZHRo
KCksCiAgICAgICAgICAgICBoZWlnaHQoKSAtIChib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgp
KSk7CiAgICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KHNjcm9sbFJlY3QpOwotICAgICAgICBt
X3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVkSW50UmVjdChwYWludEluZm8u
cmVjdCkpOworICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBw
ZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC0zOTcsNyArMzk3LDcg
QEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICB9CiAKICAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGNvbG9yU3BhY2UpOwogCiAgICAgVGV4dFJ1biB0
ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5bGUu
ZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRpKCkpLCB0cnVlLCBU
ZXh0UnVuOjpOb1JvdW5kaW5nKTsKICAgICBGb250Q2FzY2FkZSBpdGVtRm9udCA9IHN0eWxlKCku
Zm9udENhc2NhZGUoKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBh
aW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JgogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAotICAgIHBhaW50SW5mby5jb250
ZXh0LT5kcmF3QmlkaVRleHQoaXRlbUZvbnQsIHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChyLmxv
Y2F0aW9uKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdCaWRpVGV4dChpdGVtRm9u
dCwgdGV4dFJ1biwgcm91bmRlZEludFBvaW50KHIubG9jYXRpb24oKSkpOwogfQogCiB2b2lkIFJl
bmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgaW50IGxpc3RJbmRleCkKQEAgLTQzNSw3ICs0
MzUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwogICAgICAgICBMYXlvdXRSZWN0IGl0ZW1S
ZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKICAgICAg
ICAgaXRlbVJlY3QuaW50ZXJzZWN0KGNvbnRyb2xDbGlwUmVjdChwYWludE9mZnNldCkpOwotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QoaXRlbVJlY3Qp
LCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNlKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2Vy
LmNwcAppbmRleCBhODU1YTQ4ZTUyODgwOGIyNGNmOTVjODE3MjBlMGM5OTFjNGI1ODYwLi44YmEw
ZDZkMzIxNGY0ZGM1NmFjYjAxNDg2NDYxODY0MDRmN2U1YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk0LDE0ICsxMTk0LDE0IEBA
IHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgRmxvYXRSZWN0IG1hcmtlciA9IGdldFJlbGF0
aXZlTWFya2VyUmVjdCgpOwogICAgIG1hcmtlci5tb3ZlQnkoYm94T3JpZ2luKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBpZiAoaXNJbWFn
ZSgpKSB7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlzLCBt
YXJrZXIuc2l6ZSgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CisgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXplKCkp
LmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKICAgICAgICAgaWYgKHNlbGVj
dGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgTGF5b3V0UmVjdCBz
ZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBzZWxSZWN0Lm1vdmVC
eShib3hPcmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJl
Y3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZElu
dFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTIwOSwyNiArMTIwOSwyNiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGlmIChz
ZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgTGF5b3V0UmVjdCBz
ZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5KGJv
eE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJl
Y3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsUmVj
dCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICB9CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICBjb250ZXh0LT5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEu
MGYpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBjb250
ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihj
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgRUxpc3RTdHlsZVR5cGUgdHlwZSA9
IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBj
YXNlIERpc2M6Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxsaXBzZShtYXJrZXIpOworICAg
ICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
ICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3QobWFya2Vy
KTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1JlY3QobWFya2VyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTMxNywyMiArMTMxNywyMiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGNvbnN0
IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgIFRleHRSdW4g
dGV4dFJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1fdGV4
dCwgc3R5bGUoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCwgZmFsc2UpOwogICAgIGlmICghc3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKSB7CiAgICAgICAgIG1hcmtlci5tb3ZlQnkoLWJveE9yaWdpbik7CiAgICAgICAgIG1h
cmtlciA9IG1hcmtlci50cmFuc3Bvc2VkUmVjdCgpOwogICAgICAgICBtYXJrZXIubW92ZUJ5KEZs
b2F0UG9pbnQoYm94LngoKSwgYm94LnkoKSAtIGxvZ2ljYWxIZWlnaHQoKSkpOwogICAgICAgICBz
dGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKG1hcmtlci54KCks
IG1hcmtlci5tYXhZKCkpOwotICAgICAgICBjb250ZXh0LT5yb3RhdGUoc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGRlZzJyYWQoOTAuKSkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1hcmtlci54
KCksIC1tYXJrZXIubWF4WSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUobWFya2VyLngo
KSwgbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQucm90YXRlKHN0YXRpY19jYXN0PGZs
b2F0PihkZWcycmFkKDkwLikpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLW1hcmtlci54
KCksIC1tYXJrZXIubWF4WSgpKTsKICAgICB9CiAKICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4g
PSBGbG9hdFBvaW50KG1hcmtlci54KCksIG1hcmtlci55KCkgKyBzdHlsZSgpLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkpOwogICAgIHRleHRPcmlnaW4gPSByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHMo
TGF5b3V0UG9pbnQodGV4dE9yaWdpbiksIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwg
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwogCiAgICAgaWYgKHR5cGUgPT0gQXN0
ZXJpc2tzIHx8IHR5cGUgPT0gRm9vdG5vdGVzKQotICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChm
b250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250
LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgVUNoYXIg
c3VmZml4ID0gbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpOwogCkBA
IC0xMzYzLDcgKzEzNjMsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICB9CiAg
ICAgICAgIHRleHRSdW4uc2V0VGV4dChTdHJpbmdWaWV3KHRvRHJhdykpOwogCi0gICAgICAgIGNv
bnRleHQtPmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOworICAgICAgICBjb250
ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCmluZGV4
IDIxNzEzODhlYWZlOGE4YzIzYmQzMTU5NmFjMGNlZTk0ODI4YjhiMWEuLmI1MmE2YzliNGNkZGI2
OTAxMzBjZmI5MWJlN2Y4ZGYyYjY0ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKQEAgLTkxLDkgKzkxLDkgQEAgc3RhdGljIEZs
b2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIGMKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgdW56
b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAg
ICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29t
TGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVj
dC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwg
dW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxv
YXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAgICAg
fQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CiB9CkBAIC0xMjgsNzYgKzEyOCw3NiBAQCB2b2lk
IFJlbmRlck1lZGlhQ29udHJvbHM6OmFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRlclN0
eWxlJiBzdHlsZSkKIAogYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJv
bHNQYXJ0KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIHBhcnQsIGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOwogCiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBNZWRpYUVudGVyRnVsbHNj
cmVlbkJ1dHRvbjoKICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b246CiAgICAgICAg
IGlmIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nh
c3Q8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAg
ICAgICAgICAgIGJvb2wgZW50ZXJCdXR0b24gPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFF
bnRlckZ1bGxzY3JlZW5CdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChlbnRl
ckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tNZWRpYVVJUGFydEV4
aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KGVu
dGVyQnV0dG9uID8gV0tNZWRpYVVJUGFydEZ1bGxzY3JlZW5CdXR0b24gOiBXS01lZGlhVUlQYXJ0
RXhpdEZ1bGxzY3JlZW5CdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uOgogICAgIGNhc2UgTWVkaWFIaWRl
Q2xvc2VkQ2FwdGlvbnNCdXR0b246CiAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xUb2dnbGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCo+KG8ubm9kZSgpKSkgewogICAgICAgICAg
ICAgYm9vbCBjYXB0aW9uc1Zpc2libGUgPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFIaWRl
Q2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChjYXB0
aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0SGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIDogV0tN
ZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0Ry
YXdNZWRpYVVJUGFydChjYXB0aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0SGlkZUNsb3NlZENh
cHRpb25zQnV0dG9uIDogV0tNZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwgcGFp
bnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9uOgog
ICAgIGNhc2UgTWVkaWFVbk11dGVCdXR0b246CiAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xNdXRl
QnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVs
ZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgYXVkaW9FbmFibGVkID0gYnRu
LT5kaXNwbGF5VHlwZSgpID09IE1lZGlhTXV0ZUJ1dHRvbjsKLSAgICAgICAgICAgIHdrRHJhd01l
ZGlhVUlQYXJ0KGF1ZGlvRW5hYmxlZCA/IFdLTWVkaWFVSVBhcnRNdXRlQnV0dG9uIDogV0tNZWRp
YVVJUGFydFVuTXV0ZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChh
dWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRVbk11
dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVy
bWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlh
UGF1c2VCdXR0b246CiAgICAgY2FzZSBNZWRpYVBsYXlCdXR0b246CiAgICAgICAgIGlmIChNZWRp
YUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgY2FuUGxh
eSA9IGJ0bi0+ZGlzcGxheVR5cGUoKSA9PSBNZWRpYVBsYXlCdXR0b247Ci0gICAgICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChjYW5QbGF5ID8gV0tNZWRpYVVJUGFydFBsYXlCdXR0b24gOiBXS01l
ZGlhVUlQYXJ0UGF1c2VCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
Y2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDogV0tNZWRpYVVJUGFydFBhdXNlQnV0
dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVJld2lu
ZEJ1dHRvbjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFJld2luZEJ1
dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRSZXdpbmRC
dXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWlu
ZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVJldHVyblRvUmVhbHRp
bWVCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRTZWVrVG9S
ZWFsdGltZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBh
cnRTZWVrVG9SZWFsdGltZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhU2Vla0JhY2tCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBh
cnRTZWVrQmFja0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRTZWVrQmFja0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlh
U2Vla0ZvcndhcmRCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBh
cnRTZWVrRm9yd2FyZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRTZWVrRm9yd2FyZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhU2xpZGVyOiB7CiAgICAgICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQobykpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB1bnpv
b21lZFJlY3QgPSBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChvLCBwYWlu
dEluZm8sIHIpOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayhwYWludEluZm8u
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVkaWFFbGVtZW50LT5w
ZXJjZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1lZGlhRWxlbWVudC0+
Y3VycmVudFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVNsaWRlclRyYWNrKHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVkaWFFbGVtZW50LT5wZXJjZW50
TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1lZGlhRWxlbWVudC0+Y3VycmVu
dFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTWVkaWFTbGlkZXJUaHVt
YjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRpbWVsaW5lU2xpZGVy
VGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5l
U3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0VGltZWxp
bmVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
ZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhVm9sdW1l
U2xpZGVyQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
Vm9sdW1lU2xpZGVyQ29udGFpbmVyLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tN
ZWRpYVVJUGFydFZvbHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tN
ZWRpYVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhVm9sdW1lU2xpZGVyVGh1bWI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdL
TWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBh
cnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0Ry
YXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVsbFNjcmVlblZvbHVtZVNsaWRlciwgcGFpbnRJ
bmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclRodW1i
OgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVsbFNjcmVlblZvbHVt
ZVNsaWRlclRodW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFy
dEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhVGltZWxpbmVDb250YWluZXI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdL
TWVkaWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tN
ZWRpYVVJUGFydEJhY2tncm91bmQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YUN1cnJlbnRUaW1lRGlzcGxheToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRl
eCA3ZTFmZDViNGM0ZjY3ZjgzNjE3NmEyNWQxMWQ0OTk5YzdlZjc4YjJiLi41OWM2M2MwYTBiYzJm
NWQxMmJmMWMyNGEyNWM3NjQ4ZjY1OGQyNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpmbG93VGhyZWFkUG9ydGlvbk92ZXJmbG93UmVj
dChjb25zdCBMYXlvdXRSZWN0JgogCiB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENv
bHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJlYWQg
PSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIFJlbmRl
ck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQbwogICAgIGlmIChjb2xDb3VudCA8PSAxKQogICAgICAgICByZXR1cm47CiAK
LSAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250
ZXh0KTsKKyAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhc0xpbmVzKHBhaW50SW5m
by5jb250ZXh0KCkpOwogCiAgICAgaWYgKGZsb3dUaHJlYWQtPnByb2dyZXNzaW9uSXNJbmxpbmUo
KSkgewogICAgICAgICBib29sIGxlZnRUb1JpZ2h0ID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgXiBmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKQEAgLTYxNyw3
ICs2MTcsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICAgICAgICAgIExheW91
dFVuaXQgcnVsZVRvcCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwYWludE9mZnNldC55
KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IHBhaW50T2Zmc2V0LnkoKSArIHJ1bGVM
b2dpY2FsTGVmdCAtIHJ1bGVUaGlja25lc3MgLyAyICsgcnVsZUFkZDsKICAgICAgICAgICAgICAg
ICBMYXlvdXRVbml0IHJ1bGVCb3R0b20gPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcnVs
ZVRvcCArIGNvbnRlbnRIZWlnaHQoKSA6IHJ1bGVUb3AgKyBydWxlVGhpY2tuZXNzOwogICAgICAg
ICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3QgPSBzbmFwcGVkSW50UmVjdChy
dWxlTGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0IC0gcnVsZUxlZnQsIHJ1bGVCb3R0b20gLSBydWxl
VG9wKTsKLSAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKnBhaW50SW5mby5jb250
ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUs
IDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKHBh
aW50SW5mby5jb250ZXh0KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LCBib3hTaWRlLCBydWxlQ29s
b3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0ID0gY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0
OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29s
dW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBjb2xDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBydWxl
UmVjdC5tb3ZlKHN0ZXApOwogICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxlUmVj
dCA9IHNuYXBwZWRJbnRSZWN0KHJ1bGVSZWN0KTsKLSAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94
U2lkZSgqcGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZFJ1bGVSZWN0LCBib3hTaWRlLCBy
dWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICAgICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwg
Ym94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDk3OWU5Y2ZmNzNjMmJlZDlkMDk3MzZiOGJiYzZhMTc3MGZkMzI0N2QuLmM4MDUxZDkxYTNm
YTEyYWVhYmFhYWU2YmFjNTY0YTllZmU2NjIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE8KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSBkb3duY2FzdDxFbGVtZW50Pigq
bm9kZSkuZ2V0QXR0cmlidXRlKGhyZWZBdHRyKTsKICAgICBpZiAoaHJlZi5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRVUkxGb3JSZWN0KG5vZGUt
PmRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFVSTEZvclJlY3Qobm9kZS0+ZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChocmVmKSwgc25hcHBlZEludFJlY3QodXJsUmVjdCkpOwogfQogCiAjaWYgUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
aW5kZXggOGM5OGJiYTg1NDYzNjBmYTAyZWQ1Y2I1YWE3N2UyNTRhMGFlZjI5ZC4uZmQyMDUwNGVj
M2Q1Y2NlODFhYjYxNGFhNjJkNTViZDcwNzE0MzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIFJlbmRl
clJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgY29tcGxldGVseUNsaXBwZWRPdXQgPSB0cnVlOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhhdmUgYSBi
b3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5kIGNvbnRl
bnQgdGhhdCBnZXRzIHBhaW50ZWQuCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgICAg
ICBGbG9hdFJvdW5kZWRSZWN0IHJvdW5kZWRJbm5lclJlY3QgPSBGbG9hdFJvdW5kZWRSZWN0KHN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwKICAgICAgICAgICAgICAg
ICBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90
dG9tKCksIHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdSaWdodCgpICsgYm9y
ZGVyUmlnaHQoKSwgdHJ1ZSwgdHJ1ZSkpOwotICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJl
Y3QocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwgcm91bmRlZElubmVyUmVjdCk7CisgICAg
ICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8uY29udGV4dCgpLCBwYWludFJl
Y3QsIHJvdW5kZWRJbm5lclJlY3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODksNyArMTg5
LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgcGFpbnRSZXBsYWNlZChwYWlu
dEluZm8sIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogCiAgICAgICAgIGlmIChzdHlsZSgpLmhhc0Jv
cmRlclJhZGl1cygpKQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsK
KyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KICAgICAg
ICAgCiAgICAgLy8gVGhlIHNlbGVjdGlvbiB0aW50IG5ldmVyIGdldHMgY2xpcHBlZCBieSBib3Jk
ZXItcmFkaXVzIHJvdW5kaW5nLCBzaW5jZSB3ZSB3YW50IGl0IHRvIHJ1biByaWdodCB1cCB0byB0
aGUgZWRnZXMgb2YKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ICAgIGlmIChkcmF3U2VsZWN0aW9uVGludCkgewogICAgICAgICBMYXlvdXRSZWN0IHNlbGVjdGlv
blBhaW50aW5nUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxlY3Rpb25Q
YWludGluZ1JlY3QubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRpbmdSZWN0
KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rp
b25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxpY2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxpY2EuY3BwCmluZGV4IDM3NzIwZmUzODljMTkzNmM4ZGUyNjVkYzZlYzRhMWZiY2QyMDczM2Yu
LjYxZDBhMTdiMzhhMTk4ZDJmY2RmMGUwNmRhYjQyN2UyNjIxMmQ5ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBS
ZW5kZXJSZXBsaWNhOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBSZW5kZXJMYXllciogcm9vdFBhaW50aW5nTGF5ZXIg
PSBsYXllcigpLT50cmFuc2Zvcm0oKSA/IGxheWVyKCktPnBhcmVudCgpIDogbGF5ZXIoKS0+ZW5j
bG9zaW5nVHJhbnNmb3JtZWRBbmNlc3RvcigpOwogICAgICAgICBSZW5kZXJMYXllcjo6TGF5ZXJQ
YWludGluZ0luZm8gcGFpbnRpbmdJbmZvKHJvb3RQYWludGluZ0xheWVyLCBwYWludEluZm8ucmVj
dCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgTGF5b3V0U2l6ZSgpLCAwKTsKICAgICAgICAgUmVuZGVy
TGF5ZXI6OlBhaW50TGF5ZXJGbGFncyBmbGFncyA9IFJlbmRlckxheWVyOjpQYWludExheWVySGF2
ZVRyYW5zcGFyZW5jeSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQXBwbGllZFRyYW5zZm9ybSB8
IFJlbmRlckxheWVyOjpQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzIHwgUmVuZGVyTGF5ZXI6
OlBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb247Ci0gICAgICAgIGxheWVyKCktPnBhcmVudCgp
LT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0LCBwYWludGluZ0luZm8sIGZsYWdzKTsKKyAg
ICAgICAgbGF5ZXIoKS0+cGFyZW50KCktPnBhaW50TGF5ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwg
cGFpbnRpbmdJbmZvLCBmbGFncyk7CiAgICAgfSBlbHNlIGlmIChwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8sIGFkanVzdGVkUGFp
bnRPZmZzZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmNwcAppbmRleCBjMzY0MTBkNTcyMDUyMmUxZGI5ZjI0ZjgwMDg5MzYwODA1NTk5ODQ3Li4yNzdk
YWM4ZGZhNGNjM2EzM2VlYWRkMjdlMWYxZTgzNjJiM2M2MDJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAyLDkgKzEwMiw5IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNjcm9sbGJhclBhcnRz
KCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhcjo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KQogewotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYg
KGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxi
YXJQYXJ0cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUyLDcgKzI1Miw3IEBAIHZv
aWQgUmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBjb25z
dCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBwYXJ0UmVuZGVyZXIg
PSBtX3BhcnRzLmdldChwYXJ0VHlwZSk7CiAgICAgaWYgKCFwYXJ0UmVuZGVyZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZjZjODVjOTc3YzBiNGJm
ZDNlZmI2OThhZGJiYWNkZDAwMDc5N2Q0Ni4uZjI3ZWMwM2JiYjA5MDc4MGQ0MmUzNDdiNmMyM2Fh
NGQ2ZDhjMDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3gqIG93bmluZ1JlbmRl
cmVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50UGFydChHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXJQYXJ0LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFBhcnQoR3JhcGhpY3ND
b250ZXh0JiwgU2Nyb2xsYmFyUGFydCwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgSW50UmVjdCBi
dXR0b25SZWN0KFNjcm9sbGJhclBhcnQpOwogICAgIEludFJlY3QgdHJhY2tSZWN0KGludCBzdGFy
dExlbmd0aCwgaW50IGVuZExlbmd0aCk7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEhvdmVyZWRQYXJ0
KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzc2VkUGFy
dChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAppbmRleCAxZDcxYTg5YjFjY2Q5ODVkMjYzZmMyZTJh
MGU1Mzg3Nzg5MjUzOTAzLi4wY2JlYzBmYzkzNGYxNmVkZWYxNDUwZDg1MDQ3NDA1MmE3ZGYwOTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFy
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwCkBAIC0xNTUsMjMgKzE1NSwyMyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlYwogICAgIH0K
IH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNv
bnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50
b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICAvLyBNYWtlIHN1
cmUgb3VyIGRpbWVuc2lvbnMgbWF0Y2ggdGhlIHJlY3QuCiAgICAgc2V0TG9jYXRpb24ocmVjdC5s
b2NhdGlvbigpIC0gdG9MYXlvdXRTaXplKHBhaW50T2Zmc2V0KSk7CiAgICAgc2V0V2lkdGgocmVj
dC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAKLSAgICBpZiAoZ3Jh
cGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIXN0eWxlKCkub3BhY2l0eSgpKQor
ICAgIGlmIChncmFwaGljc0NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZSgpLm9w
YWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3QgdXNlIFJlbmRlckxh
eWVycyBmb3Igc2Nyb2xsYmFyIHBhcnRzLCBzbyB3ZSBuZWVkIHRvIGhhbmRsZSBvcGFjaXR5IGhl
cmUuCiAgICAgLy8gT3BhY2l0eSBmb3IgU2Nyb2xsYmFyQkdQYXJ0IGlzIGhhbmRsZWQgYnkgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OndpbGxQYWludFNjcm9sbGJhcigpLgogICAgIGJvb2wgbmVlZHNU
cmFuc3BhcmVuY3lMYXllciA9IG1fcGFydCAhPSBTY3JvbGxiYXJCR1BhcnQgJiYgc3R5bGUoKS5v
cGFjaXR5KCkgPCAxOwogICAgIGlmIChuZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXAo
cmVjdCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihz
dHlsZSgpLm9wYWNpdHkoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOworICAgICAgICBncmFwaGljc0NvbnRleHQu
YmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdHlsZSgpLm9wYWNpdHkoKSk7CiAgICAgfQogICAgIAog
ICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCkBAIC0xODcsOCArMTg3LDggQEAgdm9pZCBSZW5kZXJT
Y3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdAogICAgIHBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgaWYg
KG5lZWRzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAppbmRleCA3YTcxZmE3MzlmOGQ4NTEx
YzQ5NGEwMDRhNDM5MzM3MmYxMzQzMWNhLi44NjU5OTE0MmE5ZmNiYWUyYzU4ZTg1YjBkMGRiMTgy
N2RhZDlhZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwogICAgIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lk
IHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBMYXlvdXRSZWN0Jik7CiAKICAgICAvLyBTY3JvbGxiYXIgcGFydHMgbmVlZHMgdG8gYmUgcmVu
ZGVyZWQgYXQgZGV2aWNlIHBpeGVsIGJvdW5kYXJpZXMuCiAgICAgdmlydHVhbCBMYXlvdXRVbml0
IG1hcmdpblRvcCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFy
Z2luQm94LnRvcCgpKSk7IHJldHVybiBtX21hcmdpbkJveC50b3AoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKaW5kZXggMDlkOTY1
MjE4ZTg3NWVkNjc0YTRiY2EzNzJmOGI5YjVlYTI4Mzc4YS4uZGI1Mjg4ZmRjNWU1NTI2YTQzZjBh
YmVmYjk3ZDk2Y2ZkNGQwODZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0xMjUsMzUgKzEyNSwzNSBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFNjcm9sbGJhcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAgICBj
b250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFy
JiBzY3JvbGxiYXIpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIp
LnBhaW50UGFydCgmY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXIuZnJhbWVSZWN0
KCkpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQo
Y29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXIuZnJhbWVSZWN0KCkpOwogfQogCiB2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQo
JmNvbnRleHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxi
YXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsKIH0K
IAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNjcm9sbGJhclBhcnQgcGFydCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNj
cm9sbGJhcikucGFpbnRQYXJ0KCZjb250ZXh0LCBwYXJ0LCByZWN0KTsKKyAgICBkb3duY2FzdDxS
ZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3Qp
OwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihz
Y3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8
UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0
KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQo
JmNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQogCiB2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCA0
N2YwZjgwMzNlYjA5NGMwNGQxOTQzYWVmNjc4NDFlZjk2NDE4MjA4Li5mN2U0MTlkMDVhMWI0MzE0
NzdjZDU1NTJmOGM2ZGMzMGRjOWU5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xs
VmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgb3ZlcnJpZGU7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXImIHNjcm9sbGJhciwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xs
YmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwCmluZGV4IDQ1NWZjZTg5MjlkMDVmMmVhMTAxM2Y3M2U3ZmUzZWJiN2Q5
NDk5OGUuLmJkMWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1MGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50
U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYgKCFj
V2lkdGggfHwgIWNIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXpl
KGNXaWR0aCwgY0hlaWdodCk7CiAgICAgTGF5b3V0UG9pbnQgY29udGVudExvY2F0aW9uID0gbG9j
YXRpb24oKSArIHBhaW50T2Zmc2V0OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUo
KS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJh
d0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
KSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vy
c29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGM3MGE0ZDEy
MDA3YTg0MjdjMjljMjU0NjI1N2QzNWEzMDU3MzIwYTYuLjQ4NTU5NWExYjgwNjRhNjMyZjlmODUz
NDRkOWNlMWY4ZDYzOTZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcApAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50Qm94RGVjb3Jh
dGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwCiAgICAgTGF5
b3V0UmVjdCByZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogICAgIHN1YnRyYWN0Q2FwdGlvblJl
Y3QocmVjdCk7CiAKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2Ug
PSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9IGRldGVybWluZUJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWJv
eFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChyZWN0LmxvY2F0aW9uKCksIGJsZWVk
QXZvaWRhbmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCByZWN0LCBzdHls
ZSgpLCBOb3JtYWwpOwogICAgIHBhaW50QmFja2dyb3VuZChwYWludEluZm8sIHJlY3QsIGJsZWVk
QXZvaWRhbmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5j
cHAKaW5kZXggMTdlNWFjNDU0MGI0NzNiYWU2ZmE2ZjliNTc1MzZlNGM0MzRkODY1Ny4uMTE1ZmZj
Nzk3NDg2Yjc5YTlmY2M0OGM4YjdjMDg2OWM2YzdjZDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyMDEsOCArMTIwMSw4IEBAIHZvaWQg
UmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmRlcnMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYgKHBhaW50UmVjdC5tYXhZKCkgKyB0YWJsZSgpLT5v
dXRlckJvcmRlckJvdHRvbSgpIDw9IGxvY2FsUmVwYWludFJlY3QueSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OwotICAgIGlmICghdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkgfHwgZ3JhcGhp
Y3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmICghdGFibGUoKS0+Y3Vy
cmVudEJvcmRlclZhbHVlKCkgfHwgZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlRm9yQ2VsbEZs
b3cgPSB0aGlzLT5zdHlsZUZvckNlbGxGbG93KCk7CkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCB2b2lk
IFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQbwogICAgIAogICAgIGZvciAoQ29sbGFwc2VkQm9yZGVyKiBib3Jk
ZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKTsgYm9yZGVyOyBib3JkZXIgPSBib3JkZXJzLm5leHRC
b3JkZXIoKSkgewogICAgICAgICBpZiAoYm9yZGVyLT5ib3JkZXJWYWx1ZS5pc1NhbWVJZ25vcmlu
Z0NvbG9yKCp0YWJsZSgpLT5jdXJyZW50Qm9yZGVyVmFsdWUoKSkpCi0gICAgICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm9y
ZGVyLT54MSwgYm9yZGVyLT55MSksIEZsb2F0UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55Mikp
LCBib3JkZXItPnNpZGUsCisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludChib3JkZXItPngxLCBib3JkZXItPnkxKSwgRmxv
YXRQb2ludChib3JkZXItPngyLCBib3JkZXItPnkyKSksIGJvcmRlci0+c2lkZSwKICAgICAgICAg
ICAgICAgICBib3JkZXItPmJvcmRlclZhbHVlLmNvbG9yKCksIGJvcmRlci0+c3R5bGUsIDAsIDAs
IGFudGlhbGlhcyk7CiAgICAgfQogfQpAQCAtMTI3NSwxMSArMTI3NSwxMSBAQCB2b2lkIFJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheQogICAgICAgICAvLyBXZSBoYXZlIHRvIGNsaXAgaGVyZSBiZWNhdXNlIHRo
ZSBiYWNrZ3JvdW5kIHdvdWxkIHBhaW50CiAgICAgICAgIC8vIG9uIHRvcCBvZiB0aGUgYm9yZGVy
cyBvdGhlcndpc2UuICBUaGlzIG9ubHkgbWF0dGVycyBmb3IgY2VsbHMgYW5kIHJvd3MuCiAgICAg
ICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGJhY2tncm91bmRPYmplY3QtPmhhc0xheWVyKCkgJiYgKGJh
Y2tncm91bmRPYmplY3QgPT0gdGhpcyB8fCBiYWNrZ3JvdW5kT2JqZWN0ID09IHBhcmVudCgpKSAm
JiB0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIHNob3VsZENsaXApOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSwgc2hvdWxkQ2xpcCk7CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAg
ICBMYXlvdXRSZWN0IGNsaXBSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVm
dCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAgICAgICAgICAg
ICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpLCBoZWlnaHQoKSAtIGJv
cmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlw
KGNsaXBSZWN0KTsKICAgICAgICAgfQogICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZv
LCBjLCBiZ0xheWVyLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNuYXBwZWRJbnRS
ZWN0KGZyYW1lUmVjdCgpKS5zaXplKCkpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3NpdGVT
b3VyY2VPdmVyLCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGM5MTBhYjZmNmFiMDY5YmE0
YjYzMjUyMjRmZWEwMDEyYzQ2ZjdlNTMuLjNlOWQ4YTVmYjFjYWJjOTEwZDI4NGRhMTVmM2RkNzBl
NGM2YWM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6
cGFpbnRSb3dHcm91cEJvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgYm9vbCBhbgog
ICAgIHJlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICBpZiAocmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKnBhaW50SW5mby5j
b250ZXh0LCByZWN0LCBzaWRlLCBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3JkZXJD
b2xvciksIGJvcmRlclN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOworICAgIGRyYXdMaW5lRm9yQm94
U2lkZShwYWludEluZm8uY29udGV4dCgpLCByZWN0LCBzaWRlLCBzdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihib3JkZXJDb2xvciksIGJvcmRlclN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwog
fQogCiBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpvZmZzZXRMZWZ0Rm9yUm93R3JvdXBCb3JkZXIo
UmVuZGVyVGFibGVDZWxsKiBjZWxsLCBjb25zdCBMYXlvdXRSZWN0JiByb3dHcm91cFJlY3QsIHVu
c2lnbmVkIHJvdykKQEAgLTExNjksMTEgKzExNjksMTEgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rp
b246OnBhaW50Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmYKIHsKICAgICBpZiAodGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCktPnByZWNlZGVuY2Uo
KSA+IEJST1dHUk9VUCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChwYWludEluZm8uY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlh
bGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBib29sIGFudGlhbGlhcyA9IHNob3Vs
ZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIExheW91dFJlY3Qgcm93
R3JvdXBSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICByb3dHcm91
cFJlY3QubW92ZUJ5KC1MYXlvdXRQb2ludChvdXRlckJvcmRlckxlZnQoJnN0eWxlKSwgKGJvcmRl
clNpZGUgPT0gQlNSaWdodCkgPyAwIDogb3V0ZXJCb3JkZXJUb3AoJnN0eWxlKSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3YTJiOTc2Y2Q2OTkyYmU1
MmI2MDBmNjBiZGI0MDZmNWZlNjRjMTBjLi5kY2FjNGZhNzMxNmVjMzViMGU2MWJjMjAwZDgyMjFl
YTYwMjNlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAg
LTI2NywxMiArMjY3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJv
eCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgLy8gSWYgcGFp
bnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50cywg
dGhlbiBqdXN0IGJhaWwuCiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0aW5nIGNvbnRyb2wgdGludHMs
IGp1c3Qgc2NoZWR1bGUgYSByZXBhaW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0cyB0aW50aW5nCiAg
ICAgLy8gZm9yIHRoYXQgY29udHJvbC4KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnVwZGF0
aW5nQ29udHJvbFRpbnRzKCkpIHsKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS51cGRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGlmIChjb250cm9sU3VwcG9ydHNUaW50cyhib3gp
KQogICAgICAgICAgICAgYm94LnJlcGFpbnQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBib3guc3R5bGUoKS5hcHBlYXJhbmNl
KCk7CkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoY29uc3QgUmVu
ZGVyQm94JiBib3gsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNvbnMKICAgICBjYXNl
IEJ1dHRvblBhcnQ6CiAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgogICAgICAgICB1cGRh
dGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoYm94LCBjb250cm9sU3RhdGVzKTsKLSAgICAgICAg
bV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgY29uc3RfY2FzdDxHcmFwaGljc0Nv
bnRleHQqPihwYWludEluZm8uY29udGV4dCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJveC5z
dHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmljZVNj
YWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IpOworICAgICAgICBtX3RoZW1lLT5wYWludChwYXJ0
LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBwZWRS
ZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygp
LCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDExLDcgKzQxMSw3IEBAIGJv
b2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVz
JiBjb250cm9sU3RhdGVzLCBjb25zCiAKIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25s
eShjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC00NjUs
NyArNDY1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KGNvbnN0IFJlbmRl
ckJveCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW4KIAogYm9vbCBSZW5kZXJUaGVtZTo6
cGFpbnREZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5j
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBJbnRSZWN0
IGludGVncmFsU25hcHBlZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKQEAgLTEwNTMsOCAr
MTA1Myw4IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tSZWdpb25XaWR0
aCA9IHRyYWNrQm91bmRzLmhlaWdodCgpIC0gdGh1bWJTaXplLndpZHRoKCk7CiAgICAgfQogICAg
IFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlvbnMtPml0ZW0oaSk7
IGkrKykgewogICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKSk7CiAg
ICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8SFRNTE9w
dGlvbkVsZW1lbnQ+KCpub2RlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZvaWQgUmVuZGVyVGhl
bWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludElu
Zm8mIHBhaW50CiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRYKHRpY2tQb3NpdGlvbik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHRpY2tSZWN0LnNldFkodGlja1Bvc2l0aW9uKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0KTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUmVjdCh0aWNrUmVjdCk7CiAgICAgfQogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAxODZiNzYwMTQ5
ZTZhZWU2MGMwZGFjYjc0MjJlOTA1NzQyODc2MWIxLi5mZWZiYjI0YjU2NDgyNGUzNDYzOWM1MTkw
OWVkM2YwNmM3ZDM5MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUd0ay5jcHAKQEAgLTUyNiwxNiArNTI2LDE2IEBAIHN0YXRpYyB2b2lkIHBhaW50VG9nZ2xlKGNv
bnN0IFJlbmRlclRoZW1lR3RrKiB0aGVtZSwgR1R5cGUgd2lkZ2V0VHlwZSwgY29uc3QgUmVuCiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0
YXRlRmxhZ3M+KGZsYWdzKSk7CiAKICAgICBpZiAod2lkZ2V0VHlwZSA9PSBHVEtfVFlQRV9DSEVD
S19CVVRUT04pCi0gICAgICAgIGd0a19yZW5kZXJfY2hlY2soY29udGV4dCwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfY2hlY2soY29udGV4
dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCks
IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGVsc2UKLSAgICAg
ICAgZ3RrX3JlbmRlcl9vcHRpb24oY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmICh0aGVtZS0+aXNGb2N1c2VkKHJl
bmRlck9iamVjdCkpIHsKICAgICAgICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0KHJlY3QpOwogICAg
ICAgICBnaW50IGluZGljYXRvclNwYWNpbmc7CiAgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9zdHlsZShjb250ZXh0LCAiaW5kaWNhdG9yLXNwYWNpbmciLCAmaW5kaWNhdG9yU3BhY2luZywg
bnVsbHB0cik7CiAgICAgICAgIGluZGljYXRvclJlY3QuaW5mbGF0ZShpbmRpY2F0b3JTcGFjaW5n
KTsKLSAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGluZGljYXRvclJlY3QueCgpLCBpbmRpY2F0b3JSZWN0
LnkoKSwKKyAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5kaWNhdG9y
UmVjdC55KCksCiAgICAgICAgICAgICBpbmRpY2F0b3JSZWN0LndpZHRoKCksIGluZGljYXRvclJl
Y3QuaGVpZ2h0KCkpOwogICAgIH0KIApAQCAtNTk0LDggKzU5NCw4IEBAIHN0YXRpYyB2b2lkIHJl
bmRlckJ1dHRvbihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwg
Y29uc3QgUmVuCiAgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBH
VEtfU1RZTEVfQ0xBU1NfREVGQVVMVCk7CiAgICAgfQogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3Jv
dW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
YnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRv
blJlY3QuaGVpZ2h0KCkpOwotICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9u
UmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAg
Z3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9u
UmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1l
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1
dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25S
ZWN0LmhlaWdodCgpKTsKIAogICAgIGlmICh0aGVtZS0+aXNGb2N1c2VkKHJlbmRlck9iamVjdCkp
IHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKQEAgLTYyNyw3ICs2MjcsNyBA
QCBzdGF0aWMgdm9pZCByZW5kZXJCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHlsZUNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbgogICAgICAgICAgICAgYnV0dG9uUmVjdC5tb3ZlKGNo
aWxkRGlzcGxhY2VtZW50WCwgY2hpbGREaXNwbGFjZW1lbnRZKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJl
Y3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfZm9j
dXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
YnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRv
blJlY3QuaGVpZ2h0KCkpOwogICAgIH0KIH0KIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50QnV0
dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTc0NCw3ICs3NDQsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0LCBjb25zdCBQYWludAogICAgIC8vIEZJWE1FOiBhZG9wdCBzdWJwaXhlbCB0aGVtZXMuCiAg
ICAgSW50UmVjdCByZWN0ID0gSW50UmVjdChyKTsKIAotICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWly
b190KiBjYWlyb0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpOwogICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8R3Rr
VGV4dERpcmVjdGlvbj4oZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSkpOwogCiAgICAgLy8gUGFpbnQgdGhlIGJ1dHRvbi4KQEAgLTg4MCw4ICs4ODAsOCBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlck9iamVjdCwgY29uc3QgUGFpbgogICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxB
R19GT0NVU0VEOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0
aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3Jv
dW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIGd0
a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSk7CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmIChpc0ZvY3VzZWQocmVu
ZGVyT2JqZWN0KSAmJiBpc0VuYWJsZWQocmVuZGVyT2JqZWN0KSkgewogICAgICAgICBnYm9vbGVh
biBpbnRlcmlvckZvY3VzOwpAQCAtODkwLDcgKzg5MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQ
YWluCiAgICAgICAgIGlmICghaW50ZXJpb3JGb2N1cykgewogICAgICAgICAgICAgSW50UmVjdCBm
b2N1c1JlY3QocmVjdCk7CiAgICAgICAgICAgICBmb2N1c1JlY3QuaW5mbGF0ZShmb2N1c1dpZHRo
ICsgZm9jdXNQYWQpOwotICAgICAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCksIGZv
Y3VzUmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1
c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4dEFyZWEoY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvCiAgICAgcmV0dXJuIHBh
aW50VGV4dEZpZWxkKG8sIGksIHIpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29uc3QgSW50
UmVjdCYgaWNvblJlY3QpCitzdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29uc3QgSW50UmVjdCYgaWNvblJl
Y3QpCiB7CiAgICAgSW50U2l6ZSBpY29uU2l6ZShnZGtfcGl4YnVmX2dldF93aWR0aChpY29uKSwg
Z2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KGljb24pKTsKICAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gc2Nh
bGVkSWNvbjsKQEAgLTkxNCw3ICs5MTQsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29ucwogICAg
ICAgICBpY29uID0gc2NhbGVkSWNvbi5nZXQoKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBjciA9
IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJvX3QqIGNyID0gY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBn
ZGtfY2Fpcm9fc2V0X3NvdXJjZV9waXhidWYoY3IsIGljb24sIGljb25SZWN0LngoKSwgaWNvblJl
Y3QueSgpKTsKICAgICBjYWlyb19wYWludChjcik7CkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNv
bnN0IFJlbmRlck9iamVjdCYgcgogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVj
dC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMsIHJlbmRl
ck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVpZ2h0KCkp
KTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQoKSwgaWNv
blJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGljb24uZ2V0
KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwMjcsNyArMTAyNyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplCiAgICAgICAgIGd0a1RleHREaXJlY3Rpb24ocmVu
ZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLAogICAgICAgICBndGtJY29uU3RhdGUodGhp
cywgcmVuZGVyT2JqZWN0KSwKICAgICAgICAgZ2V0SWNvblNpemVGb3JQaXhlbFNpemUocmVjdC5o
ZWlnaHQoKSkpOwotICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdl
dCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwg
aWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTA0Nyw3
ICsxMDQ3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRDYXBzTG9ja0luZGljYXRvcihj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY28KIHsKICAgICAvLyBUaGUgb3RoZXIg
cGFpbnQgbWV0aG9kcyBkb24ndCBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgcGFpbnRpbmcgaXMgZGlz
YWJsZWQgYmVjYXVzZSBSZW5kZXJUaGVtZSBhbHJlYWR5IGNoZWNrcyBpdAogICAgIC8vIGJlZm9y
ZSBjYWxsaW5nIHRoZW0sIGJ1dCBwYWludENhcHNMb2NrSW5kaWNhdG9yKCkgaXMgY2FsbGVkIGJ5
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSB3aGljaCBkb2Vzbid0IGNoZWNrIGl0LgotICAg
IGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWlu
dEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBpbnQgaWNvblNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRDYXBz
TG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY28KICAgICAg
ICAgcmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBpY29uU2l6ZSwKICAgICAgICAgcmVjdC55KCkg
KyAocmVjdC5oZWlnaHQoKSAtIGljb25TaXplKSAvIDIsCiAgICAgICAgIGljb25TaXplLCBpY29u
U2l6ZSk7Ci0gICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCks
IGljb25SZWN0KTsKKyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29u
LmdldCgpLCBpY29uUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMDIsMTUgKzEx
MDIsMTUgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBpZiAoIWlzRW5hYmxlZChyZW5k
ZXJPYmplY3QpKQogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwg
R1RLX1NUQVRFX0ZMQUdfSU5TRU5TSVRJVkUpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5k
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIGd0a19y
ZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmIChpc0ZvY3VzZWQocmVuZGVy
T2JqZWN0KSkgewogICAgICAgICBnaW50IGZvY3VzV2lkdGgsIGZvY3VzUGFkOwogICAgICAgICBn
dGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUoY29udGV4dCwgImZvY3VzLWxpbmUtd2lkdGgiLCAm
Zm9jdXNXaWR0aCwgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQsIG51bGxwdHIpOwogICAgICAg
ICBJbnRSZWN0IGZvY3VzUmVjdChyZWN0KTsKICAgICAgICAgZm9jdXNSZWN0LmluZmxhdGUoZm9j
dXNXaWR0aCArIGZvY3VzUGFkKTsKLSAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBw
YWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCks
IGZvY3VzUmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOwor
ICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCksIGZvY3VzUmVjdC55KCksIGZvY3Vz
UmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGd0a19zdHls
ZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
T2JqZWN0LCBjb25zdCBQYQogICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19BQ1RJVkU7
CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0
a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CiAKLSAgICBndGtfcmVuZGVyX3NsaWRlcihjb250ZXh0LCBw
YWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAorICAgIGd0a19yZW5kZXJfc2xpZGVy
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJl
Y3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAogICAgICAgICBw
YXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfT1JJRU5UQVRJT05fSE9SSVpP
TlRBTCA6IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CiAKICAgICBndGtfc3R5bGVfY29udGV4
dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTE3NCw4ICsxMTc0LDggQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGEKIAogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBHVEtf
U1RZTEVfQ0xBU1NfVFJPVUdIKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2Zy
YW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0
a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNv
bnRleHQpOwogCkBAIC0xMTkzLDcgKzExOTMsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWlu
dFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQog
ICAgIHByb2dyZXNzUmVjdCA9IFJlbmRlclRoZW1lR3RrOjpjYWxjdWxhdGVQcm9ncmVzc1JlY3Qo
cmVuZGVyT2JqZWN0LCBwcm9ncmVzc1JlY3QpOwogCiAgICAgaWYgKCFwcm9ncmVzc1JlY3QuaXNF
bXB0eSgpKQotICAgICAgICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcHJvZ3Jlc3NSZWN0LngoKSwgcHJvZ3Jl
c3NSZWN0LnkoKSwgcHJvZ3Jlc3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWlnaHQoKSk7
CisgICAgICAgIGd0a19yZW5kZXJfYWN0aXZpdHkoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcHJvZ3Jlc3NSZWN0LngoKSwgcHJvZ3Jlc3NSZWN0
LnkoKSwgcHJvZ3Jlc3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWlnaHQoKSk7CiAKICAg
ICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsK
QEAgLTEyNTYsOCArMTI1Niw4IEBAIHN0YXRpYyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJl
bmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgYnV0dG9u
UmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIDIpOwogICAgIGd0a19zdHlsZV9jb250ZXh0
X3NldF9qdW5jdGlvbl9zaWRlcyhjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtKdW5jdGlvblNpZGVz
PihqdW5jdGlvbikpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1
dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOwot
ICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJl
Y3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3Jv
dW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCks
IGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0
b25SZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0
b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKIAog
ICAgIC8vIFBhaW50IGFycm93IGNlbnRlcmVkIGluc2lkZSBidXR0b24uCiAgICAgLy8gVGhpcyBj
b2RlIGlzIGJhc2VkIG9uIGd0a3NwaW5idXR0b24uYyBjb2RlLgpAQCAtMTI4Myw3ICsxMjgzLDcg
QEAgc3RhdGljIHZvaWQgcGFpbnRTcGluQXJyb3dCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBH
dGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIGMKICAgICBnaW50IGhlaWdodCA9ICh3aWR0aCArIDEp
IC8gMjsKIAogICAgIGFycm93UmVjdC5tb3ZlKChhcnJvd1JlY3Qud2lkdGgoKSAtIHdpZHRoKSAv
IDIsIChhcnJvd1JlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMik7Ci0gICAgZ3RrX3JlbmRlcl9h
cnJvdyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCks
IGFuZ2xlLCBhcnJvd1JlY3QueCgpLCBhcnJvd1JlY3QueSgpLCB3aWR0aCk7CisgICAgZ3RrX3Jl
bmRlcl9hcnJvdyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCBhbmdsZSwgYXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgpOwogCiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIH0KQEAgLTE0MTcsNyArMTQx
Nyw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgp
CiB9CiAjZW5kaWYKIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBjb25zdCBj
aGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1l
ZGlhQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IGNoYXIqIHN5bWJvbGljSWNv
bk5hbWUsIGNvbnN0IGNoYXIqIGZhbGxiYWNrU3RvY2tJY29uTmFtZSkKIHsKICAgICBJbnRSZWN0
IGljb25SZWN0KAogICAgICAgICByZWN0LngoKSArIChyZWN0LndpZHRoKCkgLSBtX21lZGlhSWNv
blNpemUpIC8gMiwKQEAgLTE0MzYsNyArMTQzNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6Omhh
c093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihDb250cm9sUGFydCBwYXJ0KSBjb25zdAogCiBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2Jq
ZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgInZpZXctZnVsbHNjcmVlbi1zeW1ib2xpYyIs
IEdUS19TVE9DS19GVUxMU0NSRUVOKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5k
ZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJ2aWV3LWZ1bGxzY3JlZW4tc3lt
Ym9saWMiLCBHVEtfU1RPQ0tfRlVMTFNDUkVFTik7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVkaWFNdXRlQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE0NDYs
NyArMTQ0Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGJvb2wgbXV0ZWQgPSBtZWRpYUVsZW1lbnQtPm11dGVkKCk7Ci0gICAgcmV0dXJu
IHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwK
KyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250
ZXh0KCksIHJlY3QsCiAgICAgICAgIG11dGVkID8gImF1ZGlvLXZvbHVtZS1tdXRlZC1zeW1ib2xp
YyIgOiAiYXVkaW8tdm9sdW1lLWhpZ2gtc3ltYm9saWMiLAogICAgICAgICBtdXRlZCA/ICJhdWRp
by12b2x1bWUtbXV0ZWQiIDogImF1ZGlvLXZvbHVtZS1oaWdoIik7CiB9CkBAIC0xNDYxLDE5ICsx
NDYxLDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBib29sIHNob3dQbGF5QnV0dG9uID0gbm9kZUhhc0NsYXNzKG5vZGUsICJwYXVzZWQiKTsK
IAotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNv
bnRleHQsIHJlY3QsCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBw
YWludEluZm8uY29udGV4dCgpLCByZWN0LAogICAgICAgICBzaG93UGxheUJ1dHRvbiA/ICJtZWRp
YS1wbGF5YmFjay1zdGFydC1zeW1ib2xpYyIgOiAibWVkaWEtcGxheWJhY2stcGF1c2Utc3ltYm9s
aWMiLAogICAgICAgICBzaG93UGxheUJ1dHRvbiA/IEdUS19TVE9DS19NRURJQV9QTEFZIDogR1RL
X1NUT0NLX01FRElBX1BBVVNFKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRp
YVNlZWtCYWNrQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LCAi
bWVkaWEtc2Vlay1iYWNrd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9SRVdJTkQpOwor
ICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRl
eHQoKSwgcmVjdCwgIm1lZGlhLXNlZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVE
SUFfUkVXSU5EKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNlZWtGb3J3
YXJkQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gcGFpbnRN
ZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LCAibWVkaWEt
c2Vlay1mb3J3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElBX0ZPUldBUkQpOworICAgIHJl
dHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQoKSwg
cmVjdCwgIm1lZGlhLXNlZWstZm9yd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9GT1JX
QVJEKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTE0ODcsNyArMTQ4Nyw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlCiAgICAgICAgIGljb24gPSBnZXRTdG9ja1N5bWJvbGlj
SWNvbkZvcldpZGdldFR5cGUoR1RLX1RZUEVfQ09OVEFJTkVSLCAidXNlci1pbnZpc2libGUtc3lt
Ym9saWMiLCBHVEtfU1RPQ0tfSlVTVElGWV9GSUxMLAogICAgICAgICAgICAgZ3RrVGV4dERpcmVj
dGlvbihyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSksIGd0a0ljb25TdGF0ZSh0aGlz
LCByZW5kZXJPYmplY3QpLCBpY29uUmVjdC53aWR0aCgpKTsKICAgICB9Ci0gICAgcGFpbnRHZGtQ
aXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsKKyAgICBwYWlu
dEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgpLCBpY29uUmVjdCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTE1MDcsOSArMTUwNyw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mCiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
OwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0
cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQo
KTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKE5vU3Ry
b2tlKTsKIAogICAgIGZsb2F0IG1lZGlhRHVyYXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9u
KCk7CiAgICAgZmxvYXQgdG90YWxUcmFja1dpZHRoID0gci53aWR0aCgpOwpAQCAtMTUyNywxNyAr
MTUyNywxNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZgogICAgICAgICByYW5nZVJlY3Quc2V0
V2lkdGgobGVuZ3RoUmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgpOwogICAgICAgICBpZiAoaW5kZXgp
CiAgICAgICAgICAgICByYW5nZVJlY3QubW92ZShzdGFydFJhdGlvICogdG90YWxUcmFja1dpZHRo
LCAwKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qo
cmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmFuZ2VSZWN0LCBi
b3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCi0gICAgY29u
dGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHIpCiB7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gby5zdHlsZSgpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJS
YWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZyb21TdHls
ZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNTU2LDkg
KzE1NTYsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJh
Y2soY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplYwogICAgIGlmICghdm9sdW1lKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0OwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJv
a2VTdHlsZShOb1N0cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQoKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnNldFN0cm9r
ZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAgIGludCByZWN0SGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsK
ICAgICBmbG9hdCB0cmFja0hlaWdodCA9IHJlY3RIZWlnaHQgKiB2b2x1bWU7CkBAIC0xNTY3LDkg
KzE1NjcsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJh
Y2soY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplYwogICAgIHZvbHVtZVJlY3QubW92ZSgw
LCByZWN0SGVpZ2h0IC0gdHJhY2tIZWlnaHQpOwogICAgIHZvbHVtZVJlY3Quc2V0SGVpZ2h0KGNl
aWwodHJhY2tIZWlnaHQpKTsKIAotICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksCisgICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh2b2x1bWVSZWN0LCBib3Jk
ZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLAogICAgICAgICBzdHlsZS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4
dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGVj
NzJhZTMzOWE2MmU3ZGQ5NTAyMDcyOWExZGIyZGZmNDEwNDM3MGYuLjhkMTIzYTlhMDFlMGU4ODBk
ODljMzcxZTU4NmRlNTc1YWQ5ZDkzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KQEAgLTM2NywxMyArMzY3LDEzIEBAIHN0YXRpYyBDR1BvaW50IHNob3J0
ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgpCiAKIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29u
dGV4dCk7Ci0gICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBh
aW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRS
b3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogCiAgICAg
ZmxvYXQgd2lkdGggPSBjbGlwLndpZHRoKCk7CiAgICAgZmxvYXQgaGVpZ2h0ID0gY2xpcC5oZWln
aHQoKTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7
CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShD
b25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNs
aXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAKQEAgLTM5OCwxNSArMzk4LDE1IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAgICAgICAgICBzaG9ydGVuZWQobGluZVsyXSwg
bGluZVsxXSwgbGluZVdpZHRoIC8gNC4wZikKICAgICAgICAgfTsKIAotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdm
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Sm9pbmVkTGluZXMo
c2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3Sm9pbmVkTGluZXMoc2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJl
KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6
bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAx
LjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBj
bGlwLmhlaWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0pvaW5lZExpbmVzKGxpbmUsIDMsIHRydWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBG
bG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMGYsIGNs
aXAubWF4WSgpKTsKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVu
dFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xp
cC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC00NTAsMTAgKzQ1
MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbgogCiBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0
UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwg
cmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5m
by5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAo
Ym94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9u
KCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlv
bik7CiAKQEAgLTQ2NSwxMCArNDY1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFk
aW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJCiAgICAg
ICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAg
ICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJhdGlvKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBz
ZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCBy
YWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1
cywgcmFkaXVzKSk7CiAgICAgfQogICAgIEZsb2F0UG9pbnQgYm90dG9tQ2VudGVyKGNsaXAueCgp
ICsgY2xpcC53aWR0aCgpIC8gMi4wLCBjbGlwLm1heFkoKSk7CiAgICAgZHJhd0F4aWFsR3JhZGll
bnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0
aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xh
dGlvbik7CkBAIC00ODEsMTUgKzQ4MSwxNSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRl
eHRGaWVsZERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYQogICAg
IFJlbmRlclN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAgIEZsb2F0UG9pbnQgcG9pbnQo
cmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5ib3Jk
ZXJUb3BXaWR0aCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KHJlY3Qp
KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKExheW91dFJlY3QocmVjdCkpLnBpeGVsU25hcHBl
ZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoYm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOwogCiAgICAgLy8gVGhpcyBncmFkaWVudCBnZXRzIGRyYXduIGJsYWNrIHdoZW4gcHJpbnRp
bmcuCiAgICAgLy8gRG8gbm90IGRyYXcgdGhlIGdyYWRpZW50IGlmIHRoZXJlIGlzIG5vIHZpc2li
bGUgdG9wIGJvcmRlci4KICAgICBib29sIHRvcEJvcmRlcklzSW52aXNpYmxlID0gIXN0eWxlLmhh
c0JvcmRlcigpIHx8ICFzdHlsZS5ib3JkZXJUb3BXaWR0aCgpIHx8IHN0eWxlLmJvcmRlclRvcElz
VHJhbnNwYXJlbnQoKTsKICAgICBpZiAoIWJveC52aWV3KCkucHJpbnRpbmcoKSAmJiAhdG9wQm9y
ZGVySXNJbnZpc2libGUpCi0gICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgZ3JhZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwg
cG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBm
KSksIExpbmVhckludGVycG9sYXRpb24pOworICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBncmFkaWVudFdpdGhOYW1lKEluc2V0
R3JhZGllbnQpLCBwb2ludCwgRmxvYXRQb2ludChDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50
LnkoKSArIDMuMGYpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgIFJlbmRl
clN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoID0g
c3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9hdFJlY3QgY2xpcChyZWN0LngoKSArIHN0
eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCks
IHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIC0gc3R5bGUuYm9yZGVyUmln
aHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSAtIHN0eWxl
LmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBmbG9h
dCBhZGp1c3RMZWZ0ID0gMC41OwogICAgIGZsb2F0IGFkanVzdFJpZ2h0ID0gMC41OwpAQCAtNjI5
LDkgKzYyOSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICB7CiAgICAgICAgIEZsb2F0
UmVjdCB0aXRsZUNsaXAoY2xpcC54KCkgLSBhZGp1c3RMZWZ0LCBjbGlwLnkoKSAtIGFkanVzdFRv
cCwgY2xpcC53aWR0aCgpIC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQgKyBhZGp1c3RMZWZ0
LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsgYWRqdXN0Qm90dG9tKTsKIAotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAsCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVDbGlwLAogICAgICAgICAgICAg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0
aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApLAogICAgICAgICAgICAg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53
aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWln
aHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApKSk7CiAK
QEAgLTY0MywxOSArNjQzLDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RC
dXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKIAogICAgIGZsb2F0
IHNlcGFyYXRvciA9IGNsaXAubWF4WCgpIC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQ7CiAK
LSAgICBib3guZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29udGV4dCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0gYm9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQ
b2ludChzZXBhcmF0b3IsIGNsaXAubWF4WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5
bGUoKSwgMCwgMCk7CisgICAgYm94LmRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4
dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludChzZXBhcmF0b3IgLSBib3JkZXJUb3BXaWR0aCwgY2xp
cC55KCkpLCBGbG9hdFBvaW50KHNlcGFyYXRvciwgY2xpcC5tYXhZKCkpKSwgQlNSaWdodCwgc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHls
ZS5ib3JkZXJUb3BTdHlsZSgpLCAwLCAwKTsKIAogICAgIEZsb2F0UmVjdCBidXR0b25DbGlwKHNl
cGFyYXRvciAtIGFkanVzdFRvcCwgY2xpcC55KCkgLSBhZGp1c3RUb3AsIE1lbnVMaXN0QnV0dG9u
UGFkZGluZ1JpZ2h0ICsgYWRqdXN0VG9wICsgYWRqdXN0UmlnaHQsIGNsaXAuaGVpZ2h0KCkgKyBh
ZGp1c3RUb3AgKyBhZGp1c3RCb3R0b20pOwogCiAgICAgLy8gTm93IHBhaW50IHRoZSBidXR0b24g
cG9ydGlvbi4KICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5i
b3JkZXJUb3BXaWR0aCgpKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXpl
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwg
cmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgo
c3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5maWxsUmVjdChidXR0b25DbGlwLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFk
aWVudCA6IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50
KGJ1dHRvbkNsaXAueCgpLCBidXR0b25DbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24p
OwogICAgIH0KQEAgLTY3MCw3ICs2NzAsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAg
ICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgo
KSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlw
Lm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdSYWlz
ZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xv
cjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAu
NWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgIGVsbGlwc2UubW92ZShzaXpl
ICsgcGFkZGluZywgMCk7CiAgICAgICAgIH0KICAgICB9ICBlbHNlIHsKQEAgLTY4OSwxMyArNjg5
LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQ
b2ludChhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOwogCiAgICAgICAgIGZsb2F0
IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8gMC4yIDogMC41OwotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
b3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5
Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTc1OSwxMyArNzU5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5m
byYKIAogICAgIC8vIERyYXcgdGhlIHRyYWNrIGdyYWRpZW50LgogICAgIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Cisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29u
dGV4dCgpKTsKIAogICAgICAgICBJbnRTaXplIGNvcm5lclNpemUoY29ybmVyV2lkdGgsIGNvcm5l
ckhlaWdodCk7CiAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgaW5uZXJCb3JkZXIodHJhY2tDbGlw
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChpbm5lckJvcmRlcik7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyKTsKIAot
ICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgSU9TR3JhZGllbnRSZWYgZ3Jh
ZGllbnQgPSByZWFkb25seSA/IGdyYWRpZW50V2l0aE5hbWUoUmVhZG9ubHlTbGlkZXJUcmFja0dy
YWRpZW50KSA6IGdyYWRpZW50V2l0aE5hbWUoU2xpZGVyVHJhY2tHcmFkaWVudCk7CiAgICAgICAg
IGlmIChpc0hvcml6b250YWwpCiAgICAgICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRl
eHQsIGdyYWRpZW50LCB0cmFja0NsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludCh0cmFja0NsaXAu
eCgpLCB0cmFja0NsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC03NzUsMTMg
Kzc3NSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJl
bmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mCiAKICAgICAvLyBEcmF3IHRoZSB0cmFj
ayBib3JkZXIuCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgICAgIENHQ29udGV4
dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwogICAgICAgICBpZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRl
ZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1Bh
dGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29y
bmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC04MTIsMTAgKzgxMiwxMCBAQCB2b2lkIFJlbmRl
clRoZW1lSU9TOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29y
YXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
KyAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIEZsb2F0UG9p
bnQgYm90dG9tQ2VudGVyKGNsaXAueCgpICsgY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5tYXhZ
KCkpOwogICAgIGlmIChpc1ByZXNzZWQoYm94KSkKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQo
Y2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNsaWRlclRodW1iT3BhcXVlUHJlc3NlZEdyYWRp
ZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSks
IExpbmVhckludGVycG9sYXRpb24pOwpAQCAtODQ1LDE4ICs4NDUsMTggQEAgYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEkKICAgICBjb25zdCBpbnQgcHJvZ3Jlc3NCYXJIZWlnaHQgPSA5OwogICAgIGNv
bnN0IGZsb2F0IHZlcnRpY2FsT2Zmc2V0ID0gKHJlY3QuaGVpZ2h0KCkgLSBwcm9ncmVzc0Jhckhl
aWdodCkgLyAyLjA7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKHJlY3Qud2lkdGgoKSA8IDEwIHx8
IHJlY3QuaGVpZ2h0KCkgPCA5KSB7CiAgICAgICAgIC8vIFRoZSByZWN0IGlzIHNtYWxsZXIgdGhh
biB0aGUgc3RhbmRhcmQgcHJvZ3Jlc3MgYmFyLiBXZSBjbGlwIHRvIHRoZSBlbGVtZW50J3MgcmVj
dCB0byBhdm9pZAogICAgICAgICAvLyBsZWFraW5nIHBpeGVscyBvdXRzaWRlIHRoZSByZXBhaW50
IHJlY3QuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHJlY3QpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAocmVjdCk7CiAgICAgfQogCiAgICAgLy8gMSkgRHJhdyB0
aGUgcHJvZ3Jlc3MgYmFyIHRyYWNrLgogICAgIC8vIDEuMSkgRHJhdyB0aGUgd2hpdGUgYmFja2dy
b3VuZCB3aXRoIGdyZXkgZ3JhZGllbnQgYm9yZGVyLgotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cygwLjY4KTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBjb250
ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygwLjY4KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxl
KFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zmc2V0OwogICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ry
b2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSk7CkBAIC04NjQsMjggKzg2NCwy
OCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKIAogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0
eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUs
IDI1NSwgMjU1KSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Io
MjU1LCAyNTUsIDI1NSksIGNvbG9yU3BhY2UpOwogCiAgICAgUGF0aCB0cmFja1BhdGg7CiAgICAg
RmxvYXRSZWN0IHRyYWNrUmVjdChyZWN0LngoKSArIDAuMjUsIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyAwLjI1LCByZWN0LndpZHRoKCkgLSAwLjUsIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41
KTsKICAgICBGbG9hdFNpemUgcm91bmRlZENvcm5lclJhZGl1cyg1LCA0KTsKICAgICB0cmFja1Bh
dGguYWRkUm91bmRlZFJlY3QodHJhY2tSZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICBj
b250ZXh0LT5kcmF3UGF0aCh0cmFja1BhdGgpOworICAgIGNvbnRleHQuZHJhd1BhdGgodHJhY2tQ
YXRoKTsKIAogICAgIC8vIDEuMikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYu
IEl0IGlzIHN1cHBvc2VkIHRvIG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBh
bmQgZGFya2VyIHRoZSBzdHJva2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0Lngo
KSwgcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0Jhckhl
aWdodCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywg
cm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyLCByb3Vu
ZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVz
LCByb3VuZGVkQ29ybmVyUmFkaXVzKSk7CiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0
ID0gcHJvZ3Jlc3NCYXJIZWlnaHQgLyAyLjsKICAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkpOwogICAgIHVwcGVyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAg
IHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7
Ci0gICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNl
Tm9uTnVsbCgpKTsKIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwgcmVjdC53aWR0aCgpLCB1cHBlckdyYWRpZW50SGVp
Z2h0KSk7CisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwog
CiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVz
cz4ocmVuZGVyZXIpOwogICAgIGlmIChyZW5kZXJQcm9ncmVzcy5pc0RldGVybWluYXRlKCkpIHsK
QEAgLTg5OSwxMyArODk5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NC
YXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIGJh
ckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7
CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAy
NDQpKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGJhckdyYWRpZW50LnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9r
ZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkpOwogICAgICAgICBiYXJTdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAg
IGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQs
IDI0MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29s
b3IoMzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGJh
clN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAg
ICAgIFBhdGggYmFyUGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTkxMyw3
ICs5MTMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAgICAgbGVmdCA9IHJl
Y3QubWF4WCgpIC0gYmFyV2lkdGg7CiAgICAgICAgIEZsb2F0UmVjdCBiYXJSZWN0KGxlZnQgKyAw
LjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgc3RkOjptYXgoYmFyV2lkdGgg
LSAwLjUsIDAuMCksIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41KTsKICAgICAgICAgYmFyUGF0aC5h
ZGRSb3VuZGVkUmVjdChiYXJSZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICAgICAgY29u
dGV4dC0+ZHJhd1BhdGgoYmFyUGF0aCk7CisgICAgICAgIGNvbnRleHQuZHJhd1BhdGgoYmFyUGF0
aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTg0LDEwICs5ODQsMTAgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmpl
Y3QmIGJveCwgY29uc3QgUGFpbnQKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQdXNoQnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBj
bGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBw
YWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
aWYgKGJveC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikuaXNEYXJrKCkpCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwg
Z3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQ
b2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICBl
bHNlIHsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGNvbnN0IGludCBrTXVsdGlwbGVUaHVtYm5haWxT
aHJpbmtTaXplID0gMjsKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlck9iamVjdCYgYnV0
dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBJY29uKiBpY29uLCBGaWxlVXBsb2FkRGVjb3JhdGlvbnMgZmlsZVVwbG9hZERlY29yYXRp
b25zKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
YWludEluZm8uY29udGV4dCgpKTsKIAogICAgIEludFNpemUgY29ybmVyU2l6ZShrVGh1bWJuYWls
Qm9yZGVyQ29ybmVyUmFkaXVzLCBrVGh1bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzKTsKICAgICBD
b2xvciBwaWN0dXJlRnJhbWVDb2xvciA9IGJ1dHRvblJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpOwpAQCAtMTAzMSwxMiArMTAz
MSwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQg
cGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQg
bWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3Ig
PSBDb2xvcihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1l
UmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBp
Y3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1l
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
LSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHRodW1ibmFpbFJlY3QpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8u
Y29udGV4dCgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwKHRodW1ibmFpbFJlY3QpOwogICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJ
bWFnZUNvbG9yLmlzRGFyaygpKQogICAgICAgICAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCksIHRodW1ibmFpbFJlY3Qu
bG9jYXRpb24oKSwgRmxvYXRQb2ludCh0aHVtYm5haWxSZWN0LngoKSwgdGh1bWJuYWlsUmVjdC5t
YXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTA1
Miw4ICsxMDUyLDggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKICAgICB9CiAKICAgICAvLyBG
b3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgaWNvbi0+cGFpbnQoKnBh
aW50SW5mby5jb250ZXh0LCB0aHVtYm5haWxSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaWNvbi0+cGFpbnQocGFp
bnRJbmZvLmNvbnRleHQoKSwgdGh1bWJuYWlsUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggZGUyMmQw
MGM4NjdlNDQwMGRlNDY4MzEwNmY0ZjQ3NjIyM2UwZmZhMi4uZmI0ZTRjODBjODYyOTBkY2UxNmFj
YWExOWRiZmI3ZDJmYTM2ZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQpAQCAtODUwLDExICs4NTAsMTEgQEAgTlNDb250cm9sU2l6ZSBSZW5kZXJUaGVt
ZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250KFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QK
IAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByKQogewot
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU1RleHRGaWVsZENlbGwgKnRleHRGaWVsZCA9IHRo
aXMtPnRleHRGaWVsZCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgW3RleHRGaWVsZCBzZXRFbmFi
bGVkOihpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKV07CiAgICAgW3RleHRG
aWVsZCBkcmF3V2l0aEZyYW1lOk5TUmVjdChyKSBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsK
QEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RUZXh0RmllbGRT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KgogCiBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0
KCkpOwogICAgIHdrRHJhd0JlemVsZWRUZXh0QXJlYShyLCBpc0VuYWJsZWQobykgJiYgIWlzUmVh
ZE9ubHlDb250cm9sKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC05MDksNyArOTA5LDcg
QEAgY29uc3QgaW50KiBSZW5kZXJUaGVtZU1hYzo6cG9wdXBCdXR0b25QYWRkaW5nKE5TQ29udHJv
bFNpemUgc2l6ZSkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0UG9w
dXBCdXR0b25DZWxsU3RhdGUocmVuZGVyZXIsIEludFNpemUocmVjdC5zaXplKCkpKTsKIAogICAg
IE5TUG9wVXBCdXR0b25DZWxsKiBwb3B1cEJ1dHRvbiA9IHRoaXMtPnBvcHVwQnV0dG9uKCk7CkBA
IC05MjQsMTkgKzkyNCwxOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0KGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChyZWN0
LndpZHRoKCkgPj0gbWluaW11bU1lbnVMaXN0U2l6ZShyZW5kZXJlci5zdHlsZSgpKSkKICAgICAg
ICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QocmVjdCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJn
aW5zKCksIHpvb21MZXZlbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBCZWZvcmUgWW9zZW1p
dGUgd2UgZGlkIG5vdCB3YW50IHRoZSBjZWxsIHRvIGV2ZXIgZHJhdyBvdXRzaWRlIHRoZSBnaXZl
biByZWN0YW5nbGUuCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTAw
MAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGluZmxhdGVkUmVjdCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKGluZmxhdGVkUmVjdCk7CiAjZW5kaWYKIAogICAgIGlmICh6b29t
TGV2ZWwgIT0gMS4wZikgewogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRS
ZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0
KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29t
TGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRS
ZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54
KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBwYWludENlbGxBbmRTZXRGb2N1
c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KHBvcHVwQnV0dG9uLCByZW5kZXJlciwg
cGFpbnRJbmZvLCBpbmZsYXRlZFJlY3QpOwpAQCAtOTY0LDEwICs5NjQsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmYKICAgICBpZiAoIWlzPFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU0xldmVs
SW5kaWNhdG9yQ2VsbCogY2VsbCA9IGxldmVsSW5kaWNhdG9yRm9yKGRvd25jYXN0PFJlbmRlck1l
dGVyPihyZW5kZXJPYmplY3QpKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBbY2VsbCBkcmF3V2l0aEZy
YW1lOnJlY3QgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihyZW5kZXJPYmplY3QpXTsKICAgICBbY2Vs
bCBzZXRDb250cm9sVmlldzpuaWxdOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVj
dCwgY29uc3QgUGEKICAgICB0cmFja0luZm8ucmVzZXJ2ZWQgPSAwOwogICAgIHRyYWNrSW5mby5m
aWxsZXIxID0gMDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNv
bnRleHQsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNv
bnRleHQoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTExNDIsMTQgKzExNDIsMTQgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsK
ICAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVP
cmllbnRhdGlvbk5vcm1hbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBpZiAoIXJlbmRlclByb2dy
ZXNzLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUoMiAqIGluZmxhdGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qu
d2lkdGgoKSwgMCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUo
LTEsIDEpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoMiAqIGluZmxh
dGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qud2lkdGgoKSwgMCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQogCi0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC0xMjEwLDEwICsxMjEwLDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RC
dXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250ZXh0Q29udGFpbmVyIGNnQ29u
dGV4dENvbnRhaW5lcihwYWludEluZm8uY29udGV4dCk7CisgICAgQ29udGV4dENvbnRhaW5lciBj
Z0NvbnRleHRDb250YWluZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBib3JkZXIgPSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUo
KS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLndpZHRoKCk7CkBAIC0xMjM5LDMzICsxMjM5LDMzIEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0g
YWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgp
LCAgci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBj
Z0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGlu
Zyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRp
ZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWkoKS50
b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgp
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIGJvcmRlci5yYWRpaSgpLnRv
cExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkp
KTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAg
ICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAg
IH0KIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9tR3JhZGll
bnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50
U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRv
bVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6
ZSgpLCBJbnRTaXplKCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVy
LmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9t
U2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
ICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRl
eHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250
ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNv
bnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7CkBAIC0xMjkyLDEwICsxMjkyLDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgaWYgKGJvdW5kcy53aWR0aCgpIDwgYXJyb3dXaWR0aCAr
IGFycm93UGFkZGluZ0xlZnQgKiByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAg
IEZsb2F0UG9pbnQgYXJyb3cxWzNdOwogICAgIGFycm93MVswXSA9IEZsb2F0UG9pbnQobGVmdEVk
Z2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cxWzJdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJy
b3dzIC8gMi4wZiAtIGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCBhcnJvdwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdzEsIHRydWUp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cxLCB0
cnVlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cyWzNdOwogICAgIGFycm93MlswXSA9IEZsb2F0
UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAg
LTEzMTEsNyArMTMxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cyWzJd
ID0gRmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZICsgc3Bh
Y2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiArIGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhl
IGJvdHRvbSBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigz
LCBhcnJvdzIsIHRydWUpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHln
b24oMywgYXJyb3cyLCB0cnVlKTsKIAogICAgIENvbG9yIGxlZnRTZXBhcmF0b3JDb2xvcigwLCAw
LCAwLCA0MCk7CiAgICAgQ29sb3IgcmlnaHRTZXBhcmF0b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0
MCk7CkBAIC0xMzIxLDE0ICsxMzIxLDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAg
aW50IGxlZnRFZGdlT2ZTZXBhcmF0b3IgPSBzdGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJy
b3dQYWRkaW5nTGVmdCAqIHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsgLy8gRklY
TUU6IFJvdW5kPwogCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRo
ZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAv
LyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0
YXlzIHRoaW4uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRv
ckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7IC8vIERlbGliZXJhdGVseSBp
Z25vcmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIgaWYgaXQgc3RheXMgdGhpbi4KKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2lu
dChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkp
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9y
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5k
cy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBh
cmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2Us
IGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNDU0LDcgKzE0NTQsNyBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5
KE5TQ2VsbAogICAgIGJvb2wgc2hvdWxkRHJhd0ZvY3VzUmluZyA9IGlzRm9jdXNlZChyZW5kZXJl
cikgJiYgcmVuZGVyZXIuc3R5bGUoKS5vdXRsaW5lU3R5bGVJc0F1dG8oKTsKICAgICBib29sIHNo
b3VsZFVzZUltYWdlQnVmZmVyID0gcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkgIT0g
MSB8fCBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxOwogICAgIGJvb2wgc2hvdWxkRHJhd0Nl
bGwgPSB0cnVlOwotICAgIGlmIChUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRvY3VtZW50Vmlld0Zv
cihyZW5kZXJlciksIHNob3VsZERyYXdDZWxsLCBzaG91bGREcmF3Rm9jdXNSaW5nLCBzaG91bGRV
c2VJbWFnZUJ1ZmZlciwgcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkpCisgICAgaWYgKFRoZW1l
TWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChjZWxsLCBwYWludElu
Zm8uY29udGV4dCgpLCByZWN0LCBkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpLCBzaG91bGREcmF3
Q2VsbCwgc2hvdWxkRHJhd0ZvY3VzUmluZywgc2hvdWxkVXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpKQogICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRG
b2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogfQogCkBAIC0xNDkxLDcgKzE0OTEsNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICBib3VuZHMuc2V0WChyLngoKSArIHIud2lk
dGgoKSAvIDIgLSB6b29tZWRUcmFja1dpZHRoIC8gMik7CiAgICAgfQogCi0gICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4
dCgpKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQo
KTsKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwogCkBAIC0xNDk5LDcgKzE0OTksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRl
clRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIHBh
aW50U2xpZGVyVGlja3MobywgcGFpbnRJbmZvLCByKTsKICNlbmRpZgogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzKTsKIAogICAgIHN0cnVjdCBD
R0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRl
cnBvbGF0ZSwgTlVMTCB9OwpAQCAtMTUxMSw3ICsxNTExLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGEKICAgICAgICAgbWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFs
KGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFr
ZShib3VuZHMueCgpLCBib3VuZHMubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKIAogICAgIEludFNpemUgcmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJhZGl1
cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIGNvbnRleHQgPSBsb2NhbENvbnRleHQu
Y2dDb250ZXh0KCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRp
bmcuZ2V0KCkpOwogCkBAIC0xNTMyLDcgKzE1MzIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBw
YQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwoKQogICAgICAgICA6IHNsaWRlclRodW1i
SG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUg
dmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2xp
ZGVyVGh1bWJDZWxsLCBvKTsKQEAgLTE1NjgsMTYgKzE1NjgsMTYgQEAgYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGEKICAgICBpZiAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZl
cnRpY2FsUGFydCkKICAgICAgICAgYm91bmRzLnNldEhlaWdodChib3VuZHMuaGVpZ2h0KCkgKyB2
ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgKiBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludElu
Zm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVjdCA9IGJvdW5kczsKICAgICBpZiAo
em9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9v
bWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhl
aWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwg
em9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9v
bWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxl
dmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJl
Y3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgW3NsaWRlclRodW1iQ2Vs
bCBkcmF3S25vYjp1bnpvb21lZFJlY3RdOwpAQCAtMTU4OCwxMiArMTU4OCwxMiBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QgUGFpbnRJbmZvJiBwYQogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxk
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBOU1NlYXJjaEZpZWxkQ2Vs
bCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUobywg
cik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpOwogCkBAIC0xNjAyLDkgKzE2MDIsOSBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYQogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Qu
c2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56
b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRy
YW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJl
Y3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9v
bUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xh
dGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICAv
LyBTZXQgdGhlIHNlYXJjaCBidXR0b24gdG8gbmlsIGJlZm9yZSBkcmF3aW5nLiAgVGhlbiByZXNl
dCBpdCBzbyB3ZSBjYW4gZHJhdyBpdCBsYXRlci4KQEAgLTE2ODUsNyArMTY4NSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKCFpbnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFy
Y2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRD
ZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKQEAgLTE2OTUsNyArMTY5NSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgZWxzZSBpZiAoW1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2Vs
bF0gaXNIaWdobGlnaHRlZF0pCiAgICAgICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIHNl
dEhpZ2hsaWdodGVkOk5PXTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIGZsb2F0IHpvb21MZXZlbCA9
IG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CiAKQEAgLTE3MDYsOSArMTcwNiw5IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAg
IHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7
CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8g
em9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21l
ZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54
KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwog
ICAgIH0KIAogICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56
b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOwpAQCAtMTc2Niw3ICsxNzY2LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
UGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5p
c0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
IHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRlcmVyKCksIHIpOwogCiAgICAgTlNTZWFy
Y2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwpAQCAtMTc5OSw3ICsxNzk5LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlz
Qm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
c2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVuZGVyZXIoKSwgcik7CiAKICAgICBOU1NlYXJj
aEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CkBAIC0xODA3LDcgKzE4MDcsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKCFbc2VhcmNoIHNlYXJjaE1lbnVUZW1w
bGF0ZV0pCiAgICAgICAgIFtzZWFyY2ggc2V0U2VhcmNoTWVudVRlbXBsYXRlOnNlYXJjaE1lbnVU
ZW1wbGF0ZSgpXTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJj
aCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChpbnB1dC0+
cmVuZGVyQm94KCktPmNvbnRlbnRCb3hSZWN0KCkpKV07CkBAIC0xODE3LDkgKzE4MTcsOSBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAg
ICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZl
bCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgp
IC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpv
b21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0
LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVj
dC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNj
YWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkp
OwogICAgIH0KIAogICAgIFtbc2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6
dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOwpAQCAtMTg0Myw3ICsxODQz
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXko
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoIWNvbnRlbnRXaWR0aCB8fCAh
Y29udGVudEhlaWdodCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6
ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRM
b2NhdGlvbiA9IHJlbmRlckJsb2NrLmxvY2F0aW9uKCk7CkBAIC0xODk5LDcgKzE4OTksNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgp
IDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVy
LnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0
eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMDYzLDEwICsyMDYzLDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50SW1hZ2VDb250cm9sc0J1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zCiAjaWYgSEFWRShBUFBLSVRfU0VSVklDRV9DT05UUk9MU19TVVBQ
T1JUKQogICAgIE5TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwgKmNlbGwgPSBzZXJ2aWNlc1Jv
bGxvdmVyQnV0dG9uQ2VsbCgpOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxv
Y2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAK
LSAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKIAog
ICAgIEludFJlY3QgaW5uZXJGcmFtZShJbnRQb2ludCgpLCByZWN0LnNpemUoKSk7CiAgICAgW2Nl
bGwgZHJhd1dpdGhGcmFtZTppbm5lckZyYW1lIGluVmlldzpkb2N1bWVudFZpZXdGb3IocmVuZGVy
ZXIpXTsKQEAgLTI0NjIsOCArMjQ2Miw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0
YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAKICAg
ICBBdHRhY2htZW50TGF5b3V0IGxheW91dChhdHRhY2htZW50KTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9ICpwYWludEluZm8uY29udGV4dDsKLSAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzYXZlcihjb250ZXh0KTsKIAogICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXpl
KHBhaW50UmVjdC5sb2NhdGlvbigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCA1NWMwOGQ1NjUyM2U5NWZkZTcyNTYzZWNlMjQ4ODFh
ZjEwMDkwM2NhLi40NzcxOTNjMTNlZTVmYTk2M2E5NmQxNWE4ZmIyMDQ4ODc4ZGQ1MTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTM5
Miw3ICszOTIsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIE5TQ29udHJvbFNpemUg
Y29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoby5zdHlsZSgpKTsKIAogICAgIEludFJl
Y3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QociwgY2hlY2tib3hTaXplcygpW2NvbnRyb2xT
aXplXSwgY2hlY2tib3hNYXJnaW5zKGNvbnRyb2xTaXplKSk7ICAKLSAgICBwYWludFRoZW1lUGFy
dChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsK
KyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC00MzEsNyArNDMx
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xT
aXplID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5bGUoKSk7CiAgCiAgICAgSW50UmVjdCBpbmZs
YXRlZFJlY3QgPSBpbmZsYXRlUmVjdChyLCByYWRpb1NpemVzKClbY29udHJvbFNpemVdLCByYWRp
b01hcmdpbnMoY29udHJvbFNpemUpKTsgICAgCi0gICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0
b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVj
dCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChS
YWRpb0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIGlu
ZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgog
ICAgIH0gZWxzZQogICAgICAgICBwYXJ0ID0gU2FmYXJpVGhlbWU6OlNxdWFyZUJ1dHRvblBhcnQ7
CiAKLSAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsK
KyAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01ODUsNyArNTg1LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHAKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFp
bnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUo
bykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4
dEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5T
Q29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU5OCwxMCArNTk4LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVT
YWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWluCiAjaWYgZGVmaW5lZChTQUZBUklfVEhFTUVfVkVSU0lPTikgJiYgU0FGQVJJX1RIRU1F
X1ZFUlNJT04gPj0gMQogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcGFpbnRUaGVtZVBhcnQoQ2Fwc0xvY2tQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkw
KTsKKyAgICBwYWludFRoZW1lUGFydChDYXBzTG9ja1BhcnQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0
ZSkwKTsKIAogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCkBAIC02MTMsNyArNjEzLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGEKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
OwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRBcmVhUGFydCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRl
cm1pbmVTdGF0ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFy
aVRoZW1lOjpUZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0
ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02NjIsNyArNjYyLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYgaW4KICAgICBpZiAoci53aWR0aCgpID49IG1pbmltdW1NZW51TGlzdFNpemUo
by5zdHlsZSgpKSkKICAgICAgICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QoaW5mbGF0ZWRS
ZWN0LCBzaXplLCBwb3B1cEJ1dHRvbk1hcmdpbnMoY29udHJvbFNpemUpKTsKIAotICAgIHBhaW50
VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAg
IHBhaW50VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8p
KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTcyMyw5ICs3MjMsOSBAQCB2b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29ucwogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmQg
PSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAg
ICBpbnQgcmFkaXVzID0gYm91bmQucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKQEAgLTc0OSwz
NCArNzQ5LDM0IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25H
cmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zCiAgICAgUmV0YWluUHRyPENHU2hh
ZGluZ1JlZj4gbGVmdFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVz
LCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0
ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5tYXhYKCksICByLnkoKSksIENHUG9pbnRNYWtl
KHIubWF4WCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZh
bHNlKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmQpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7
CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFk
aWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVj
dCh0b3BHcmFkaWVudCksIGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLCBib3VuZC5yYWRpaSgpLnRv
cFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAogICAgIGlmICgh
Ym90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWko
KS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xv
c2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQu
cmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAg
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoYm91bmQpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5k
KTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7
CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsK
LSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkucmVzdG9yZSgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CkBAIC03OTgsMTAgKzc5OCwxMCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZQogICAgIGlmIChi
b3VuZHMud2lkdGgoKSA8IGFycm93V2lkdGggKyBhcnJvd1BhZGRpbmdMZWZ0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxD
b2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKE5vU3Ryb2tlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAKICAgICBGbG9hdFBvaW50IGFycm93WzNdOwogICAgIGFycm93WzBdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSwgY2VudGVyWSAtIGFycm93SGVpZ2h0IC8gMi4wZik7CkBAIC04MDksNyArODA5
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICBhcnJvd1syXSA9IEZsb2F0UG9pbnQo
bGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIGFycm93SGVpZ2h0IC8gMi4w
Zik7CiAKICAgICAvLyBEcmF3IHRoZSBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CiAKICAgICBDb2xvciBsZWZ0U2VwYXJh
dG9yQ29sb3IoMCwgMCwgMCwgNDApOwogICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1
LCAyNTUsIDI1NSwgNDApOwpAQCAtODE5LDE3ICs4MTksMTcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGUKICAgICBpbnQgbGVmdEVkZ2VPZlNlcGFyYXRvciA9IHN0YXRpY19jYXN0PGludD4obGVm
dEVkZ2UgLSBhcnJvd1BhZGRpbmdMZWZ0KTsgLy8gRklYTUU6IFJvdW5kPwogCiAgICAgLy8gRHJh
dyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3Is
IGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KDEpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2Up
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3Vu
ZHMubWF4WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iocmln
aHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JT
cGFjZSwgYm91bmRzLnkoKSksCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xv
cihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBh
cmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLm1h
eFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkzNSwx
MCArOTM1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgZWxzZSBpZiAoby5zdHls
ZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCiAgICAgICAgIGJvdW5kcy5z
ZXRSZWN0KEludFJlY3Qoci54KCkgKyByLndpZHRoKCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIsIHIu
eSgpLCB0cmFja1dpZHRoLCByLmhlaWdodCgpKSk7CiAKLSAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
Q0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZl
KCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMucmVjdCgpKTsKIAog
ICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNr
R3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwpAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mCiAgICAgZWxzZQogICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0Q0Yo
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngo
KSwgIGJvdW5kcy5yZWN0KCkueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksIGJv
dW5kcy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsK
IAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmRzKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3VuZHMpOwogICAgIENHQ29udGV4
dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwog
ICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTk2Nyw3ICs5NjcsNyBAQCBjb25zdCBmbG9h
dCB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgPSAwLjFmOwogYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIEFTU0VSVChTYWZhcmlU
aGVtZUxpYnJhcnkoKSk7Ci0gICAgcGFpbnRUaGVtZVBhcnQoU2xpZGVyVGh1bWJQYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIE5TU21hbGxDb250cm9sU2l6ZSwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNsaWRlclRodW1iUGFydCwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNTbWFsbENvbnRyb2xT
aXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05OTAs
NyArOTkwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYKIHsKICAgICBBU1NFUlQoU2FmYXJp
VGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJj
aEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250
cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8p
KTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRQYXJ0LCBwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250cm9sU2l6ZUZyb21SZWN0
KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTEwNTEsNyArMTA1MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
CiAKICAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0
LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVt
ZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0
IFJlbmRlck9iamVjdAogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1l
UGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVG
cm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBzZWFy
Y2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMo
KSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzAs
NyArMTEzMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uCiAKICAgICBJbnRSZWN0IHNlYXJj
aFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9y
bXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJj
aFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygp
KSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNl
YXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IDE2MzVhNzRlNTg4YjU4Y2Q5ZDQ5MTQxNGYxY2ZjODdiM2VlYmJjYTUuLjcxNDc4ODliNWM4ODY1
MDZiMjlmOTA5NmMwZDBkYjljZTIwYzgyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcApAQCAtNjIyLDcgKzYyMiw3IEBAIFRoZW1lRGF0YSBSZW5kZXJU
aGVtZVdpbjo6Z2V0VGhlbWVEYXRhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgQ29udHJvbFN1YlBh
cnQgc3ViCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0NvbnRyb2wo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0
aGVtZSwgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEsIGNvbnN0IEludFJlY3QmIHIpCitzdGF0
aWMgdm9pZCBkcmF3Q29udHJvbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgSEFORExFIHRoZW1lLCBjb25zdCBUaGVtZURhdGEmIHRoZW1lRGF0YSwgY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICBib29sIGFscGhhQmxlbmQgPSBmYWxzZTsKICAgICBpZiAo
dGhlbWUpCkBAIC02NzcsNyArNjc3LDcgQEAgc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCFhbHBoYUJsZW5kICYmICFjb250ZXh0LT5pc0luVHJhbnNw
YXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAoIWFscGhhQmxlbmQgJiYgIWNvbnRleHQuaXNJblRyYW5z
cGFyZW5jeUxheWVyKCkpCiAgICAgICAgIERJQlBpeGVsRGF0YTo6c2V0UkdCQUJpdG1hcEFscGhh
KHdpbmRvd3NDb250ZXh0LmhkYygpLCByLCAyNTUpOwogfQogCkBAIC03NDYsNyArNzQ2LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyLCBjb25zdCBQYWludEluZm8KICAgICAgICAgcGFydCA9IFRGUF9URVhURklFTEQ7CiAg
ICAgfQogCi0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRlcmVyLCB0aGVt
ZSwgVGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVj
dCkpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRlcmVyLCB0aGVt
ZSwgVGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVj
dCkpOwogICAgIAogICAgIHJldHVybiBwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoZG93
bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlciksIHBhaW50SW5mbywgRmxvYXRSZWN0KHJlY3QpKTsK
IH0KQEAgLTgwOCw3ICs4MDgsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgICAgICBi
dXR0b25SZWN0LnNldFdpZHRoKGJ1dHRvblJlY3Qud2lkdGgoKSArIHZpc3RhTWVudUxpc3RCdXR0
b25PdXRzZXQpOwogICAgIH0KIAotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCBy
ZW5kZXJlciwgbWVudUxpc3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25S
ZWN0KTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgpLCByZW5kZXJlciwgbWVu
dUxpc3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0KTsKIAogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIFJlbmRlclRoZW1lV2lu
OjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QgUAogCiAgICAgc3RhdGljIEltYWdlKiBjYW5jZWxJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsIikubGVha1JlZigpOwogICAgIHN0YXRpYyBJbWFnZSog
Y2FuY2VsUHJlc3NlZEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hD
YW5jZWxQcmVzc2VkIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1h
Z2UoaXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5
bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3
SW1hZ2UoaXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8u
c3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC05NDAsNyArOTQwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJl
c3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBib3VuZHMuc2V0
WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQoKSAr
IDEpIC8gMik7CiAgICAgCiAgICAgc3RhdGljIEltYWdlKiBtYWduaWZpZXJJbWFnZSA9IEltYWdl
Ojpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoTWFnbmlmaWVyIikubGVha1JlZigpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5j
b2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
bWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC05NzUsNyArOTc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dAogICAgIGJvdW5kcy5zZXRZKHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0g
Ym91bmRzLmhlaWdodCgpICsgMSkgLyAyKTsKIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVy
SW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllclJlc3Vs
dHMiKS5sZWFrUmVmKCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShtYWduaWZp
ZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzksMTQgKzExMzksMTQg
QEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKICAgICBpbnQgcmVtYWluaW5nID0gc3RhdGljX2Nh
c3Q8aW50PigoMS4wIC0gZWxlbWVudC0+dmFsdWVSYXRpbygpKSAqIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocmVjdC5zaXplKCkud2lkdGgoKSkpOwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZAot
ICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJPYmplY3QsIHByb2dyZXNz
QmFyVGhlbWUoKSwgdGhlbWUsIHJlY3QpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250
ZXh0KCksIHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgcmVjdCk7CiAK
ICAgICAvLyBEcmF3IHRoZSBwcm9ncmVzcyBwb3J0aW9uCiAgICAgSW50UmVjdCBjb21wbGV0ZWRS
ZWN0KHJlY3QpOwogICAgIGNvbXBsZXRlZFJlY3QuY29udHJhY3QocmVtYWluaW5nLCAwKTsKIAog
ICAgIHRoZW1lLm1fcGFydCA9IFBQX0ZJTEw7Ci0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNv
bnRleHQsIHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgY29tcGxldGVk
UmVjdCk7CisgICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVuZGVyT2JqZWN0
LCBwcm9ncmVzc0JhclRoZW1lKCksIHRoZW1lLCBjb21wbGV0ZWRSZWN0KTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXgg
NWY3Y2UxY2U3NjlkYzE3NmU3NGJhNzA2NjQyMzlhNmY4YWI5NGE4Ny4uZTkzNTVhYTljMTVmOTll
MGZjMzE4MWU2ZDFmYjQ1NGI5NmM4NzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCkBAIC0xODAsMTEgKzE4MCwxMSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogCiAgICAgTGF5b3V0UmVjdCBjb250ZW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAg
Y29udGVudFJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGJvb2wgY2xpcCA9ICFjb250ZW50UmVjdC5jb250
YWlucyhyZWN0KTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNv
bnRleHQsIGNsaXApOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0LCBjbGlwKTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgY29udGV4dC0+Y2xpcChjb250
ZW50UmVjdCk7CisgICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50UmVjdCk7CiAKICAgICBpZiAo
ZGlzcGxheWluZ1Bvc3RlcikKICAgICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCByZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA4ZjBiNmU2MTk0ZTA3
NTJkNjY3M2M5MjFlOWRjMmZiNjA3M2RiM2YzLi4wNGEwOGQ1ZGVkMDNiZDNlNWQzN2Q5N2FhYzFl
NjM2MmQ5MDNlNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBA
IC01MTcsNyArNTE3LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgLy8gVGhpcyBhdm9p
ZHMgcGFpbnRpbmcgZ2FyYmFnZSBiZXR3ZWVuIGNvbHVtbnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4g
Z2FwLgogICAgIGlmIChmcmFtZVZpZXcoKS5wYWdpbmF0aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9u
OjpVbnBhZ2luYXRlZCAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFt
ZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZp
ZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAg
cGFpbnRPYmplY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CkBAIC02MTMsMTIgKzYxMywx
MiBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3Jv
dW5kQ29sb3IgPSBmcmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgICAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBh
Z2UgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dy
b3VuZENvbG9yIDogZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBp
ZiAoYmFja2dyb3VuZENvbG9yLmFscGhhKCkpIHsKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yIHByZXZpb3VzT3BlcmF0b3IgPSBwYWludEluZm8uY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0
aW9uKCk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxS
ZWN0KHBhaW50SW5mby5yZWN0LCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
cHJldmlvdXNPcGVyYXRvcik7CisgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91
c09wZXJhdG9yID0gcGFpbnRJbmZvLmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZUNvcHkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWlu
dEluZm8ucmVjdCwgYmFja2dyb3VuZENvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91
c09wZXJhdG9yKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+Y2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggYWM3Yzg4ODJjZmM1ODIzNjEzNTBh
Y2NjOTg3MTNmMTE4YmMxYjI1My4uOTk0Y2IwYzJjZjZmZmU3ODI4NjdmNTJkMWYyY2E5MzQ3MDQy
ZWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIy
OCwxNCArMjI4LDE0IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgLy8gV2hlbiBwYWlu
dGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0
aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIsCiAgICAgLy8gbm90IHRoZSBy
b290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0
IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KICAgICBpZiAoIXdp
ZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50
cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZSh3aWRnZXRQYWludE9mZnNldCk7CiAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13
aWRnZXRQYWludE9mZnNldCk7CiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJl
Y3QgZW5jb2xzaW5nL2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMg
ZGV2aWNlIHBpeGVsIHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250
ZXh0LCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFp
bnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAgICBpZiAo
IXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
dHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkudHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7CiAKICAgICBpZiAoaXM8RnJhbWVWaWV3
PigqbV93aWRnZXQpKSB7CiAgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8
RnJhbWVWaWV3PigqbV93aWRnZXQpOwpAQCAtMjc1LDI2ICsyNzUsMjYgQEAgdm9pZCBSZW5kZXJX
aWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUHVzaCBhIGNsaXAg
aWYgd2UgaGF2ZSBhIGJvcmRlciByYWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhlIGZv
cmVncm91bmQgY29udGVudCB0aGF0IGdldHMgcGFpbnRlZC4KLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNhdmUoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAg
ICAgIEZsb2F0Um91bmRlZFJlY3Qgcm91bmRlZElubmVyUmVjdCA9IEZsb2F0Um91bmRlZFJlY3Qo
c3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAg
IHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0
b20oKSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3Jk
ZXJSaWdodCgpLCB0cnVlLCB0cnVlKSk7Ci0gICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBh
aW50SW5mby5jb250ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKKyAgICAgICAg
Y2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgYm9yZGVyUmVjdCwgcm91
bmRlZElubmVyUmVjdCk7CiAgICAgfQogCiAgICAgaWYgKG1fd2lkZ2V0KQogICAgICAgICBwYWlu
dENvbnRlbnRzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKHN0eWxlKCkuaGFz
Qm9yZGVyUmFkaXVzKCkpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCiAgICAgLy8gUGFpbnQgYSBw
YXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYg
KGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWludGluZyBjb29yZGlu
YXRlcy4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBl
ZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXll
cigpLT5jYW5SZXNpemUoKSkKLSAgICAgICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5m
by5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBhaW50SW5m
by5yZWN0KTsKKyAgICAgICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0
KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgcGFpbnRJbmZvLnJlY3Qp
OwogfQogCiB2b2lkIFJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092
ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5k
ZXggMzlmOTc5ZDYzMzVmMzk4YzlkNzhiNDEzNGY4M2FmZWJlZWIwN2NhMS4uYzlmMGEwODI1ODUy
YTQ1YTQ0OTNhZmU3MzJjYTZhZDM3YzIxZjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIEdhcFJlY3RzIFJvb3RJbmxp
bmVCb3g6OmxpbmVTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5
b3V0UG9pCiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxv
Z2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNh
bFJlY3QpOwogICAgICAgICAgICAgICAgIGlmIChpc1ByZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2Fw
UmVjdC53aWR0aCgpID4gMCAmJiBnYXBSZWN0LmhlaWdodCgpID4gMCkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAocGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50
SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIo
KS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaWJsZVNlbGVjdGlv
biBtYXkgYmUgbm9uLWNvbnRpZ3VvdXMsIHNlZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQudW5pdGVDZW50ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5j
dGlvbnMuY3BwCmluZGV4IDU5ZDFhN2RlNTY3NDcxMjdiMzAzNDU3NThhYzI2YTZmMWNjMTYxYTIu
LmYxYzZiMTBlN2JkZGMyMzAxNmFjMDY1MjVhZmEyNGY5MzkxM2EzZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBm
bG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIGJvb2wgZGVi
dWdCb3JkZXJzRW5hYmxlZCA9IGZsb3cuZnJhbWUoKS5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlv
dXREZWJ1Z0JvcmRlcnNFbmFibGVkKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQg
PSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZv
bnRDYXNjYWRlKCk7CiAgICAgVGV4dFBhaW50U3R5bGUgdGV4dFBhaW50U3R5bGUgPSBjb21wdXRl
VGV4dFBhaW50U3R5bGUoZmxvdy5mcmFtZSgpLCBzdHlsZSwgcGFpbnRJbmZvKTsKICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgdGV4dFBhaW50U3R5bGUu
c3Ryb2tlV2lkdGggPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggN2FhNTRmYjhjMjEzZDAzOGUxOTgzMWJk
OTI1MTEwYTE4N2NlNGU0Zi4uYjZkZTc5ZThiMjQ2NTk5ZmQyYTQ1OTI0Yzc2OTRhMjE3YTg4YjE5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAKQEAgLTk1LDMzICs5NSwzMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2Nr
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IHsKICAgICBSZW5kZXJGbGV4aWJsZUJveDo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAg
IAotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJ
bnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAgICAgCi0gICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xv
cihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0
eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xv
cigwLCAwLCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5k
cmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0
LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
KSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRIZWlnaHQoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFw
cGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRIZWlnaHQoKSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWlu
dE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFw
cGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRIZWlnaHQoKSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25h
cHBlZE9mZnNldEhlaWdodCgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBw
aXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVs
U25hcHBlZE9mZnNldEhlaWdodCgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRq
dXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVz
dGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKICAgICAK
ICAgICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAg
aW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFj
ZVNSR0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0
ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRo
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkgKyB0b3BTdGFydCksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkg
KyB0b3BTdGFydCkpOwogICAgIAogICAgIGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxp
bmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAg
ICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBD
b2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MjU1LCAwLCAwKSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJh
d0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxp
bmUpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSksIEludFBvaW50
KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRq
dXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShE
RUJVR19NQVRIX0xBWU9VVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1MWYxNjhlYWViZjZhMmQ4
YjNkZGZiN2EwNDE1YTc3NDI0ODJkMzA1Li41MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3
ZjA2NWQyZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MRnJhY3Rpb246OmxheW91dCgpCiB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpw
YWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsK
ICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwotICAgIGlm
IChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAg
aWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBSZW5kZXJCb3gqIGRlbm9taW5hdG9yV3JhcHBlciA9
IGxhc3RDaGlsZEJveCgpOwpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxG
cmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQKIAogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9p
bnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgZGVub21pbmF0b3JXcmFwcGVyLT5sb2NhdGlv
bigpICsgTGF5b3V0UG9pbnQoMCwgbV9saW5lVGhpY2tuZXNzIC8gMikpOwogICAgIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAg
IAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7
Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZVNSR0IpOwotICAgIGluZm8uY29udGV4dC0+ZHJh
d0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgZGVub21pbmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgp
LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VUaGlja25lc3MobV9saW5lVGhpY2tuZXNzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Io
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3Bh
Y2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0
LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBk
ZW5vbWluYXRvcldyYXBwZXItPm9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgp
KSkpOwogfQogCiBPcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IDE3NDY4YzExOTkzMDRhNzBkNjdi
NzUwMGJlMmRiNzQwNzVkNDJlNzUuLmI4NmUzNjI5YTZiNzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1
NDc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0CiB7CiAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zm
c2V0KTsKIAotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBp
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBNYXRoTUxNZW5jbG9zZUVs
ZW1lbnQqIG1lbmNsb3NlID0gZG93bmNhc3Q8TWF0aE1MTWVuY2xvc2VFbGVtZW50PihlbGVtZW50
KCkpOwpAQCAtMTE0LDIzICsxMTQsMjMgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAg
ICAgaW50IGhhbGZib3hXaWR0aCA9IHJlY3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIGludCBoYWxm
Ym94SGVpZ2h0ID0gcmVjdC5oZWlnaHQoKSAvIDI7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgICAgICBpbmZvLmNvbnRl
eHQtPnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJv
a2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VU
aGlja25lc3MoMSk7CisgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgICAgICAvLyBUT0RPIGFkZCBzdXBwb3J0IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRp
YWdvbmFsYXJyb3cgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2
NgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkr
KykgewogICAgICAgICAgICAgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJ1cGRpYWdvbmFsc3Ry
aWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCArIGJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wKSk7Cisg
ICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9w
ICsgYm94SGVpZ2h0KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3ApKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJkb3duZGlhZ29uYWxzdHJpa2UiKQot
ICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9w
KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKKyAgICAgICAg
ICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQ
b2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxz
ZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gInZlcnRpY2Fsc3RyaWtlIikKLSAgICAgICAgICAg
ICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgs
IHRvcCksIEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwor
ICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBo
YWxmYm94V2lkdGgsIHRvcCksIEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJv
eEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImhv
cml6b250YWxzdHJpa2UiKQotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUo
SW50UG9pbnQobGVmdCwgdG9wICsgaGFsZmJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hX
aWR0aCwgdG9wICsgaGFsZmJveEhlaWdodCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4
dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2lu
dChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJjaXJjbGUiKSB7Ci0gICAgICAgICAgICAgICAg
aW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNlKHJl
Y3QpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGluZm8u
Y29udGV4dCgpLmRyYXdFbGxpcHNlKHJlY3QpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub3Rh
dGlvblZhbHVlc1tpXSA9PSAibG9uZ2RpdiIpCiAgICAgICAgICAgICAgICAgaXNEZWZhdWx0TG9u
Z0RpdiA9IHRydWU7CiAgICAgICAgIH0KQEAgLTE0NCw5ICsxNDQsOSBAQCB2b2lkIFJlbmRlck1h
dGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1pZHhQb2ludCA9
IHN0eWxlKCkucGFkZGluZ0xlZnQoKS52YWx1ZSgpOwogICAgICAgICAgICAgcm9vdC5hZGRCZXpp
ZXJDdXJ2ZVRvKEZsb2F0UG9pbnQobGVmdCwgdG9wKSwgRmxvYXRQb2ludChsZWZ0ICsgbWlkeFBv
aW50LCB0b3AgKyBoYWxmYm94SGVpZ2h0KSwgRmxvYXRQb2ludChsZWZ0LCB0b3AgKyBib3hIZWln
aHQpKTsKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChyb290KTsKKyAgICAg
ICAgICAgIGluZm8uY29udGV4dCgpLnN0cm9rZVBhdGgocm9vdCk7CiAgICAgICAgICAgICBpZiAo
aXNEZWZhdWx0TG9uZ0RpdikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5l
KEludFBvaW50KGxlZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCArIG1pZHhQb2lu
dCwgdG9wKSk7CisgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9p
bnQobGVmdCwgdG9wKSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoICsgbWlkeFBvaW50LCB0b3Ap
KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggOTM4ZjZiYzhlMGQw
ZjU5YzQ3MzJjOTkzMWM4NTgyMzIxY2VjZTdkYS4uM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTlj
ZGMxN2U0OTIyYzFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE3OTcsMTIgKzE3OTcsMTIgQEAg
TGF5b3V0UmVjdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnRHbHlwaChQYWludEluZm8mIGlu
Zm8sIGNvbnN0IEdseXBoRGF0YSYgZGEKICAgICB9CiAKICAgICAvLyBDbGlwcGluZyB0aGUgZW5j
bG9zaW5nIEludFJlY3QgYXZvaWRzIGFueSBwb3RlbnRpYWwgaXNzdWVzIGF0IGpvaW5lZCBlZGdl
cy4KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4
dCk7Ci0gICAgaW5mby5jb250ZXh0LT5jbGlwKGNsaXBCb3VuZHMpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CisgICAgaW5mby5jb250
ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKICAgICBi
dWZmZXIuYWRkKGRhdGEuZ2x5cGgsIGRhdGEuZm9udCwgYWR2YW5jZUZvckdseXBoKGRhdGEpKTsK
LSAgICBpbmZvLmNvbnRleHQtPmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0
YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdpbik7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0ds
eXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3Jp
Z2luKTsKIAogICAgIHJldHVybiBnbHlwaFBhaW50UmVjdDsKIH0KQEAgLTE4MTgsNyArMTgxOCw3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25H
bHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0CiAgICAgaWYgKGZyb20ueSgpID09IHRvLnkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihpbmZvLmNvbnRleHQoKSk7CiAKICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3Vu
ZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS5leHRlbnNpb24oKSk7CiAKQEAgLTE4MjcsNyArMTgy
Nyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNp
b25HbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0CiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRz
ID0gaW5mby5yZWN0OwogICAgIGNsaXBCb3VuZHMuc2hpZnRZRWRnZVRvKGZyb20ueSgpKTsKICAg
ICBjbGlwQm91bmRzLnNoaWZ0TWF4WUVkZ2VUbyh0by55KCkpOwotICAgIGluZm8uY29udGV4dC0+
Y2xpcChjbGlwQm91bmRzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwog
CiAgICAgLy8gVHJpbW1pbmcgbWF5IHJlbW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIHRv
cCBvZiB0aGUgZXh0ZW5kZXIgZ2x5cGgsIHNvIHdlIG1vdmUgaXQgdXAgYnkgdHdvIHBpeGVscy4K
ICAgICBmbG9hdCBvZmZzZXRUb0dseXBoVG9wID0gZ2x5cGhCb3VuZHMueSgpICsgMjsKQEAgLTE4
NTYsMTQgKzE4NTYsMTQgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jp
em9udGFsRXh0ZW5zaW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb24KICAgICBpZiAoZnJvbS54
KCkgPT0gdG8ueCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIENsaXBwaW5nIHRo
ZSBleHRlbmRlciByZWdpb24gaGVyZSBhbGxvd3MgdXMgdG8gZHJhdyB0aGUgYm90dG9tIGV4dGVu
ZGVyIGdseXBoIGludG8gdGhlCiAgICAgLy8gcmVnaW9ucyBvZiB0aGUgYm90dG9tIGdseXBoIHdp
dGhvdXQgd29ycnlpbmcgYWJvdXQgb3ZlcmRyYXcgKGhhaXJ5IHBpeGVscykgYW5kIHNpbXBsaWZp
ZXMgbGF0ZXIgY2xpcHBpbmcuCiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0
OwogICAgIGNsaXBCb3VuZHMuc2hpZnRYRWRnZVRvKGZyb20ueCgpKTsKICAgICBjbGlwQm91bmRz
LnNoaWZ0TWF4WEVkZ2VUbyh0by54KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91
bmRzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJp
bW1pbmcgbWF5IHJlbW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIGxlZnQgb2YgdGhlIGV4
dGVuZGVyIGdseXBoLCBzbyB3ZSBtb3ZlIGl0IGxlZnQgYnkgdHdvIHBpeGVscy4KICAgICBmbG9h
dCBvZmZzZXRUb0dseXBoTGVmdCA9IC0yOwpAQCAtMTg4NSwxMSArMTg4NSwxMSBAQCB2b2lkIFJl
bmRlck1hdGhNTE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldAogewogICAgIFJlbmRlck1hdGhNTFRva2VuOjpwYWludChpbmZvLCBw
YWludE9mZnNldCk7CiAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkg
fHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFIHx8IG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQor
ICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAh
PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
IHx8IG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQogICAgICAgICByZXR1cm47
CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4
dCk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAg
IGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgaWYgKG1f
c3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJU
KG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKS5nbHlwaCk7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCB2
b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExl
ZnQgPSBjZWlsZWRJbnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkpOwogICAgICAgICBG
bG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJp
YW50KCkpOwogICAgICAgICBMYXlvdXRQb2ludCBvcGVyYXRvck9yaWdpbihvcGVyYXRvclRvcExl
ZnQueCgpLCBvcGVyYXRvclRvcExlZnQueSgpIC0gZ2x5cGhCb3VuZHMueSgpKTsKLSAgICAgICAg
aW5mby5jb250ZXh0LT5kcmF3R2x5cGhzKHN0eWxlKCkuZm9udENhc2NhZGUoKSwgKm1fc3RyZXRj
aHlEYXRhLnZhcmlhbnQoKS5mb250LCBidWZmZXIsIDAsIDEsIG9wZXJhdG9yT3JpZ2luKTsKKyAg
ICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICpt
X3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdp
bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNw
cAppbmRleCBkZjE0YTg5OGQ2NWNjODlkY2NjMmQ2MWZhNWEwYmQ5MDdmZWQyMTJhLi5iNjkyZjc0
NjllZjY2MzkzOWFhMzYyODk0Yzg2NTYzZWEwMGI0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3I6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwKIAog
dm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChpbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
IHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChzdHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgp
KSB7CkBAIC0xMjksMTMgKzEyOSwxMyBAQCB2b2lkIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
cjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIEZs
b2F0UG9pbnQgZGlwTGVmdFBvaW50KHN0YXJ0WCAtIGdSYWRpY2FsRGlwTGVmdFBvaW50WEZyb250
ICogZnJvbnRXaWR0aCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyByYWRpY2FsRGlwTGVmdFBv
aW50WVBvcyk7CiAgICAgRmxvYXRQb2ludCBsZWZ0RW5kKHN0YXJ0WCAtIGZyb250V2lkdGgsIGRp
cExlZnRQb2ludC55KCkgKyBnUmFkaWNhbExlZnRFbmRZU2hpZnRFbXMgKiBzdHlsZSgpLmZvbnRT
aXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZv
LmNvbnRleHQoKSk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhnUmFk
aWNhbExpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwotICAgIGluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGluZm8uY29udGV4dC0+c2V0TGluZUpvaW4o
TWl0ZXJKb2luKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUoKS5mb250
U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxM
aW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldExpbmVKb2luKE1p
dGVySm9pbik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0TWl0ZXJMaW1pdChzdHlsZSgpLmZvbnRT
aXplKCkpOwogCiAgICAgUGF0aCByb290OwogCkBAIC0xNDcsOSArMTQ3LDkgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW4KICAgICAvLyBkcmF3IHRvIGVuZAogICAgIHJvb3QuYWRkTGluZVRvKGxl
ZnRFbmQpOwogCi0gICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRoKHJvb3QpOworICAgIGluZm8u
Y29udGV4dCgpLnN0cm9rZVBhdGgocm9vdCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIG1hc2tTdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgbWFza1N0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCiAgICAgLy8gQnVpbGQg
YSBtYXNrIHRvIGRyYXcgdGhlIHRoaWNrIHBhcnQgb2YgdGhlIHJvb3QuCiAgICAgUGF0aCBtYXNr
OwpAQCAtMTU5LDE3ICsxNTksMTcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6
OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBtYXNr
LmFkZExpbmVUbyhkaXBMZWZ0UG9pbnQpOwogICAgIG1hc2suYWRkTGluZVRvKEZsb2F0UG9pbnQo
MiAqIGRpcExlZnRQb2ludC54KCkgLSBsZWZ0RW5kLngoKSwgMiAqIGRpcExlZnRQb2ludC55KCkg
LSBsZWZ0RW5kLnkoKSkpOwogCi0gICAgaW5mby5jb250ZXh0LT5jbGlwKG1hc2spOworICAgIGlu
Zm8uY29udGV4dCgpLmNsaXAobWFzayk7CiAKICAgICAvLyBEcmF3IHRoZSB0aGljayBwYXJ0IG9m
IHRoZSByb290LgotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2Fs
VGhpY2tMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKLSAgICBpbmZvLmNv
bnRleHQtPnNldExpbmVDYXAoU3F1YXJlQ2FwKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VUaGlja25lc3MoZ1JhZGljYWxUaGlja0xpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZvbnRT
aXplKCkpOworICAgIGluZm8uY29udGV4dCgpLnNldExpbmVDYXAoU3F1YXJlQ2FwKTsKIAogICAg
IFBhdGggbGluZTsKICAgICBsaW5lLm1vdmVUbyhib3R0b21Qb2ludCk7CiAgICAgbGluZS5hZGRM
aW5lVG8oZGlwTGVmdFBvaW50KTsKIAotICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChsaW5l
KTsKKyAgICBpbmZvLmNvbnRleHQoKS5zdHJva2VQYXRoKGxpbmUpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcApp
bmRleCBlYmUyZDM3MzU3Y2QxZTg2OWIxYzllYzNiZWMxMDFkYzExYjliMmFlLi5hYzRhMTVkZDg0
YTQ5MzQ0MmYzNDU5YzVhNDUwMjEzMTRhMDE3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTMxOSw3ICszMTks
NyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWlu
dChpbmZvLCBwYWludE9mZnNldCk7CiAgICAgCi0gICAgaWYgKGlzRW1wdHkoKSB8fCBpbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQorICAgIGlmIChpc0VtcHR5KCkgfHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGF1dG8gYmFzZSA9IGJhc2VXcmFwcGVyKCk7CkBAIC0zMjgsMTYgKzMyOCwxNiBAQCB2
b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkcmF3IHRo
ZSByYWRpY2FsIGxpbmUuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihpbmZvLmNvbnRleHQoKSk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cyhtX3J1bGVUaGlja25lc3MpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3Mp
OworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBUaGUg
cHJlZmVycmVkIHdpZHRoIG9mIHRoZSByYWRpY2FsIGlzIHNvbWV0aW1lcyBpbmNvcnJlY3QsIHNv
IHdlIGRyYXcgYSBzbGlnaHRseSBsb25nZXIgbGluZSB0byBlbnN1cmUgaXQgdG91Y2hlcyB0aGUg
cmFkaWNhbCBzeW1ib2wgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzAzMjYpLgogICAgIExheW91dFVuaXQgc2l6ZUVycm9yID0gcmFkaWNhbC0+dHJhaWxpbmdTcGFj
ZUVycm9yKCk7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQ
b2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBiYXNlLT5sb2NhdGlvbigpICsgTGF5b3V0
UG9pbnQoLXNpemVFcnJvciwgLShtX3ZlcnRpY2FsR2FwICsgbV9ydWxlVGhpY2tuZXNzIC8gMikp
KTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5k
ZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9m
ZnNldFdpZHRoKCkgKyBzaXplRXJyb3IsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOworICAg
IGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQ
b2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdp
ZHRoKCkgKyBzaXplRXJyb3IsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBSZW5k
ZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyOjpj
cmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNThlYjllMjQwNjc2
YTExNGRjMWI5NzY4Nzc1NjM0MmIzOTJmYjk2OS4uNjkyMjI4MTkxOGM0ODMxZTcyOTk1M2I2MjAy
OTEyODgyOGQ1MThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAKQEAgLTE4Miw4ICsxODIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVh
dGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlUmVjdC5zaXplKCkpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsK
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRV
bm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgp
KSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5n
dGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuY3BwCmluZGV4IGExZjEwMzAwNGFiNzhiYzMyNzE1NzdjMGYxMGVkNDYzYjg4NTNkYTUuLmIx
Mzc0ZTA4YjEwODQzNGRhZGU1MzJkNGRmMTIwZGY3NzM0MWQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA4LDcgKzIw
OCw3IEBAIFZlY3RvcjxGbG9hdFNpemU+IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlTm9uSW50cmlu
c2ljVGlsZVNjYWxlcygpCiAgICAgcmV0dXJuIFZlY3RvcjxGbG9hdFNpemU+KE1heFBpZWNlLCBG
bG9hdFNpemUoMSwgMSkpOwogfQogCi12b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IExheW91dFNpemUmIHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0Cit2b2lkIE5pbmVQaWVjZUlt
YWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291
cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0
CiB7CiAgICAgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9IGltYWdlKCk7CiAgICAgQVNTRVJUKHN0
eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNMb2FkZWQoKSk7CkBAIC0yMzgsMTMgKzIzOCwxMyBA
QCB2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKGlzQ29ybmVyUGllY2UocGllY2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1tw
aWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1tw
aWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQ
aWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxl
KCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUg
PSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2
ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9u
UmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIHRpbGVTY2FsZXNbcGllY2VdLCBoUnVs
ZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKGlt
YWdlLmdldCgpLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVj
dHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5o
CmluZGV4IDRiZWYxYWY4N2NlNGQ1MzMyOTNkMDBlMzE4NTQ1MzQ5ZGFkMWQwN2YuLjljMzJlNWNh
YTQyMWVjN2ZiMmE0OTljMzZhNzk4NTI0NmRjZWI1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBWZWN0b3I8RmxvYXRTaXplPiBjb21wdXRlSW50cmluc2ljVGlsZVNj
YWxlcyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgZGVzdGluYXRpb25SZWN0cywgY29uc3QgVmVj
dG9yPEZsb2F0UmVjdD4mIHNvdXJjZVJlY3RzLCBFTmluZVBpZWNlSW1hZ2VSdWxlIGhSdWxlLCBF
TmluZVBpZWNlSW1hZ2VSdWxlIHZSdWxlKTsKICAgICBzdGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4g
Y29tcHV0ZU5vbkludHJpbnNpY1RpbGVTY2FsZXMoKTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5
b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRy
aW5zaWNTb3VyY2UsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBDb21wb3NpdGVPcGVyYXRvcikg
Y29uc3Q7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBMYXlvdXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
TGF5b3V0U2l6ZSYgc291cmNlLCBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJhdG9yKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRh
UmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IDgyMDdkZjQxOWJmMmFj
MWIxODBmZDk4ZmNiMWI4MGM1MmU5Zjc1MTQuLjM4ZWZiMmM5OTRjNmNlMzlkMmJiMGUyOTkwODY2
N2Q1NGY5ZTBjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIFJlbmRlclNWR0Nv
bnRhaW5lcjo6c2VsZldpbGxQYWludCgpCiAKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChw
YWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8u
Y29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
U3BlYzogZ3JvdXBzIHcvbyBjaGlsZHJlbiBzdGlsbCBtYXkgcmVuZGVyIGZpbHRlciBjb250ZW50
LgpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogCiAgICAgUGFpbnRJbmZvIGNo
aWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY2hpbGRQYWludEluZm8uY29udGV4
dCgpKTsKIAogICAgICAgICAvLyBMZXQgdGhlIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIHN1
YmNsYXNzIGNsaXAgaWYgbmVjZXNzYXJ5CiAgICAgICAgIGFwcGx5Vmlld3BvcnRDbGlwKGNoaWxk
UGFpbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0VsbGlwc2UuY3BwCmluZGV4IGNiNmQ5YzM3Yzg2M2I3M2VkZjNmOTUwZmUwOGJlYjgxM2MwNjFj
MzUuLmZhZTM3MWFlY2ZkZTgxZWFiNzdiZTQ5NGYxMzk5ODY1NGViYTcwNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcApAQCAtOTMs
MTYgKzkzLDE2IEBAIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50
ZXIoKQogICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5
bGUoKS5yeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBz
ZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVy
U1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsK
ICAgICBpZiAobV91c2VQYXRoRmFsbGJhY2spIHsKICAgICAgICAgUmVuZGVyU1ZHU2hhcGU6OmZp
bGxTaGFwZShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5m
aWxsRWxsaXBzZShtX2ZpbGxCb3VuZGluZ0JveCk7CisgICAgY29udGV4dC5maWxsRWxsaXBzZSht
X2ZpbGxCb3VuZGluZ0JveCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdFbGxpcHNl
OjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYg
KCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZShH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpz
dHJva2VTaGFwZShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0
LT5zdHJva2VFbGxpcHNlKG1fZmlsbEJvdW5kaW5nQm94KTsKKyAgICBjb250ZXh0LnN0cm9rZUVs
bGlwc2UobV9maWxsQm91bmRpbmdCb3gpOwogfQogCiBib29sIFJlbmRlclNWR0VsbGlwc2U6OnNo
YXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IGI1
ODdkMWFiMzMxNDcwMzIzMmY1ZDBlMDljMTc4Y2I1NWE5Y2I1MjYuLjlhNmZjMTJjZGVkYWJhMTU1
MjVjNDRkYmE4OTNlOGNmNTllNmI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC00Miw4ICs0Miw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxi
YWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1w
dHkoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0
KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVw
ZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgV2luZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY2FsY3VsYXRlUmFkaWlB
bmRDZW50ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IDQ2OTg5MDdkZjk4ZTY5MjMxNTY0MjZkMTYy
NTI0ZDAwYTdiNDBmZjUuLmI4NzkxYWU0MDIzNDA0ZTJjYmMxMzJmNWRkYTE0MjY5ZTBkMmE3OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdG
b3JlaWduT2JqZWN0LmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50JiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0
CiAKIHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxl
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhw
YWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hp
bGRQYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBw
bHlUcmFuc2Zvcm0obG9jYWxUcmFuc2Zvcm0oKSk7CiAKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9y
dDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKG1fdmlld3BvcnQpOwogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250
ZXh0OwogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5k
ZXggNTAyMTY3OTgxMTMzZGNmY2E2ZTFlNmUyNTQ4N2EzOTVlM2FhZDVjZi4uYjhhMTk2ZTk1MTM3
MDFkNTZhYmVhNmI5MmNmYWQ0ZWQzMDNhYzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJl
bmRlclNWR0ltYWdlOjpsYXlvdXQoKQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlRm9yZWdyb3VuZAorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlz
YWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKICAgICAg
ICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFpbWFnZVJlc291cmNlKCku
aGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDAsMTQgKzE0MCwxNCBAQCB2b2lk
IFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8o
cGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNo
aWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFw
cGx5VHJhbnNmb3JtKG1fbG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQgcmVuZGVyaW5nQ29udGV4dCgqdGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAg
IGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAg
ICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NUQVRJ
QyAgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3Jv
dW5kKSkKKyAgICAgICAgICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJp
bmcoKSA9PSBCUl9TVEFUSUMgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1f
YnVmZmVyZWRGb3JlZ3JvdW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIHBhaW50Rm9yZWdyb3VuZChjaGlsZFBhaW50SW5mbyk7CkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogCiAgICAgaW1hZ2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJl
Y3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OmludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXggOGU0MGQ4YmU5NTI3OGYyOWU2NmU3NmI2
MTY3ZTY0YzBkYzQ5MjVkNi4uMWQwMTNhZDdjMWUwZThjNDAxNDAwODY4YTI3MjU5M2FiYWNhMmQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3Bw
CkBAIC02NCwxNyArNjQsMTcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVw
ZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0cm9rZUJvdW5kaW5n
Qm94OwogfQogCi1zdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCitzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKEdyYWRpZW50KiBncmFkaWVudCA9IGNvbnRleHQt
PnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3Jh
ZGllbnQpOwotICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LT5zdHJva2VQ
YXR0ZXJuKCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKKyAg
ICBpZiAoR3JhZGllbnQqIGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQorICAg
ICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOworICAgIGVsc2UgaWYgKFBh
dHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsQ29sb3IoY29udGV4dC0+c3Ryb2tlQ29sb3IoKSwgY29udGV4dC0+c3Ryb2tlQ29sb3JT
cGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29udGV4dC5zdHJva2VDb2xv
cigpLCBjb250ZXh0LnN0cm9rZUNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUGF0
aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5k
ZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAg
ICByZXR1cm47CkBAIC05MCwxMyArOTAsMTMgQEAgdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgaWYgKGhhc05vblNjYWxp
bmdTdHJva2UoKSkKICAgICAgICAgbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJv
a2VUcmFuc2Zvcm0oKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCwgdHJ1ZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQsIHRydWUpOwogICAgIHVzZVN0cm9rZVN0eWxlVG9GaWxsKGNvbnRleHQpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV96ZXJvTGVuZ3RoTGluZWNhcExvY2F0aW9ucy5z
aXplKCk7ICsraSkgewogICAgICAgICB1c2VQYXRoID0gemVyb0xlbmd0aExpbmVjYXBQYXRoKG1f
emVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnNbaV0pOwogICAgICAgICBpZiAoaGFzTm9uU2NhbGlu
Z1N0cm9rZSgpKQogICAgICAgICAgICAgdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKHVz
ZVBhdGgsIG5vblNjYWxpbmdUcmFuc2Zvcm0pOwotICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgq
dXNlUGF0aCk7CisgICAgICAgIGNvbnRleHQuZmlsbFBhdGgoKnVzZVBhdGgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRo
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCAw
OGQ4OTExOWViYmFjMTliMTVlMDZhZmVjYzdjNWVlMzQyYzA0OTI5Li5iYmQyMmRjNWIwY2I5Yjg1
YzEyZTgxMGJlYjA0NDQxYzI5ZDg3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1BhdGguaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0
IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBG
bG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZFN0cm9rZVplcm9MZW5ndGhT
dWJwYXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1JlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZWN0LmNwcAppbmRleCAwM2ZiYmI5ZDUwODkzYzI1Njc4NTVjYmUxYTIzYjI2YTYyMWEyODg3
Li5jYmM4OGY3ZjY2OTBhOTVjZWU5YjM2MzE3MWQyOTU2ZTc4ZjA2NjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKICNlbmRpZgog
fQogCi12b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKG1fdXNlUGF0aEZhbGxiYWNrKSB7CiAgICAgICAg
IFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29udGV4dCk7CkBAIC0xMDksMTggKzEwOSwxOCBA
QCB2b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
IGNvbnN0CiAgICAgLy8gc2hhZG93IGRyYXdpbmcgbWV0aG9kLCB3aGljaCBkcmF3cyBhbiBleHRy
YSBzaGFkb3cuCiAgICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHN3aXRjaGluZyBvZmYg
dGhlIGV4dHJhIHNoYWRvdy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg4OTkKLSAgICBpZiAoY29udGV4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAg
Y29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QobV9maWxs
Qm91bmRpbmdCb3gpOworICAgIGlmIChjb250ZXh0Lmhhc1NoYWRvdygpKSB7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29u
dGV4dC5jbGVhclNoYWRvdygpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5k
aW5nQm94KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgY29udGV4dC0+
ZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gpOworICAgIGNvbnRleHQuZmlsbFJlY3QobV9maWxs
Qm91bmRpbmdCb3gpOwogfQogCi12b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5z
dmdTdHlsZSgpLmhhc1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcg
KzEzMCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC0+
c3Ryb2tlUmVjdChtX2ZpbGxCb3VuZGluZ0JveCwgc3Ryb2tlV2lkdGgoKSk7CisgICAgY29udGV4
dC5zdHJva2VSZWN0KG1fZmlsbEJvdW5kaW5nQm94LCBzdHJva2VXaWR0aCgpKTsKIH0KIAogYm9v
bCBSZW5kZXJTVkdSZWN0OjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
Y3QuaAppbmRleCA5NzAzMDFhYTc5ZjVjM2RlMmViMzI4NmQzMGQxM2Y1ZGViNDE0ODlmLi4wMjZl
ZTYzMDliNTkxZWMxZjBjMzVjZDYzMjE1Nzk1Mjc5MmU0ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDgsOCArNDgsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBh
dGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0Jv
eC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNo
YXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBz
aGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CmluZGV4IDhiOWE2Mjg5ZTI4MjA1YzkwYjFlMDRlM2M3ZDQ4YmQ1YTE4NWZhNTguLjVlNDc3NWJl
MGI2YTAwNGM2ZjVjNjI2YWMzNDFhMzJiOTFlNTdlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAg
LTY5LDEwICs2OSwxMCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgIEFTU0VSVChjb250
ZXh0KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFw
cGx5VG9EZWZhdWx0TW9kZSk7CiAKLSAgICByZXR1cm4gYXBwbHlDbGlwcGluZ1RvQ29udGV4dChy
ZW5kZXJlciwgcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKSwgcmVuZGVyZXIucmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSwgY29udGV4dCk7CisgICAgcmV0dXJuIGFwcGx5Q2xpcHBp
bmdUb0NvbnRleHQocmVuZGVyZXIsIHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCksIHJlbmRl
cmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCksICpjb250ZXh0KTsKIH0KIAotYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gpCitib29sIFJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCkKIHsKICAgICAvLyBJZiB0aGUgY3VycmVudCBjbGlw
LXBhdGggZ2V0cyBjbGlwcGVkIGl0c2VsZiwgd2UgaGF2ZSB0byBmYWxsYmFjayB0byBtYXNraW5n
LgogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmNsaXBwZXJSZXNvdXJjZSgpLmlzRW1wdHko
KSkKQEAgLTEyMywxMiArMTIzLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpw
YXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAvLyBU
aGUgU1ZHIHNwZWNpZmljYXRpb24gd2FudHMgdXMgdG8gY2xpcCBldmVyeXRoaW5nLCBpZiBjbGlw
LXBhdGggZG9lc24ndCBoYXZlIGEgY2hpbGQuCiAgICAgaWYgKGNsaXBQYXRoLmlzRW1wdHkoKSkK
ICAgICAgICAgY2xpcFBhdGguYWRkUmVjdChGbG9hdFJlY3QoKSk7Ci0gICAgY29udGV4dC0+Y2xp
cFBhdGgoY2xpcFBhdGgsIGNsaXBSdWxlKTsKKyAgICBjb250ZXh0LmNsaXBQYXRoKGNsaXBQYXRo
LCBjbGlwUnVsZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiByZXBh
aW50UmVjdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVw
YWludFJlY3QsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDbGlwcGVyTWFza0lt
YWdlJiBjbGlwcGVyTWFza0ltYWdlID0gYWRkUmVuZGVyZXJUb0NsaXBwZXIocmVuZGVyZXIpOwog
ICAgIGJvb2wgc2hvdWxkQ3JlYXRlQ2xpcHBlck1hc2tJbWFnZSA9ICFjbGlwcGVyTWFza0ltYWdl
OwpAQCAtMTQ1LDE3ICsxNDQsMTUgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKICAgICAgICAg
aWYgKCFjbGlwcGVyTWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250
ZXh0KCk7Ci0gICAgICAgIEFTU0VSVChtYXNrQ29udGV4dCk7Ci0KLSAgICAgICAgbWFza0NvbnRl
eHQtPmNvbmNhdENUTShhbmltYXRlZExvY2FsVHJhbnNmb3JtKTsKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKKyAgICAg
ICAgbWFza0NvbnRleHQuY29uY2F0Q1RNKGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0pOwogCiAgICAg
ICAgIC8vIGNsaXBQYXRoIGNhbiBhbHNvIGJlIGNsaXBwZWQgYnkgYW5vdGhlciBjbGlwUGF0aC4K
ICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291
cmNlc0ZvclJlbmRlcmVyKCp0aGlzKTsKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
KiBjbGlwcGVyOwogICAgICAgICBib29sIHN1Y2NlZWRlZDsKICAgICAgICAgaWYgKHJlc291cmNl
cyAmJiAoY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptYXNrQ29udGV4dCk7CisgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobWFza0NvbnRleHQpOwog
CiAgICAgICAgICAgICBpZiAoIWNsaXBwZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoKnRoaXMs
IG9iamVjdEJvdW5kaW5nQm94LCByZXBhaW50UmVjdCwgbWFza0NvbnRleHQpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MCwxNCArMTc3LDEzIEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1h
c2tJbWFnZSYKIHsKICAgICBBU1NFUlQoY2xpcHBlck1hc2tJbWFnZSk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlck1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAg
IEFTU0VSVChtYXNrQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9
IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNr
Q29udGVudFRyYW5zZm9ybWF0aW9uOwogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0
aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9Y
KSB7CiAgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJv
dW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFza0NvbnRl
bnRUcmFuc2Zvcm1hdGlvbi5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgo
KSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBtYXNrQ29udGV4dC0+Y29u
Y2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOworICAgICAgICBtYXNrQ29udGV4dC5j
b25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gU3dp
dGNoIHRvIGEgcGFpbnQgYmVoYXZpb3Igd2hlcmUgYWxsIGNoaWxkcmVuIG9mIHRoaXMgPGNsaXBQ
YXRoPiB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nIHNwZWNpYWwgY29uc3RyYWludHM6CkBAIC0yMjYs
NyArMjIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZShjb25zdCBDbGlwcGVyTWFza0ltYWdlJgogICAgICAgICBpZiAoIXJlbmRlcmVy
LT5pc1NWR1NoYXBlKCkgJiYgIXJlbmRlcmVyLT5pc1NWR1RleHQoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIG1hc2tDb250ZXh0LT5zZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7
CisgICAgICAgIG1hc2tDb250ZXh0LnNldEZpbGxSdWxlKG5ld0NsaXBSdWxlKTsKIAogICAgICAg
ICAvLyBJbiB0aGUgY2FzZSBvZiBhIDx1c2U+IGVsZW1lbnQsIHdlIG9idGFpbmVkIGl0cyByZW5k
ZXJlcmUgYWJvdmUsIHRvIHJldHJpZXZlIGl0cyBjbGlwUnVsZS4KICAgICAgICAgLy8gV2UgaGF2
ZSB0byBwYXNzIHRoZSA8dXNlPiByZW5kZXJlciBpdHNlbGYgdG8gcmVuZGVyU3VidHJlZVRvSW1h
Z2VCdWZmZXIoKSB0byBhcHBseSBpdCdzIHgveS90cmFuc2Zvcm0vZXRjLiB2YWx1ZXMgd2hlbiBy
ZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAppbmRleCA0NDE1Yjk0YjEzYTYyZGI2ZmJhNjNjZDA2MmZk
ZDRjODY2OTZiNDVjLi5iNzcwNDk2NTNkYWNmNDVmYzAxZTUzNmQ5NjBkNTRhMTk2ZjRlZjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIC8vIGNsaXBQYXRo
IGNhbiBiZSBjbGlwcGVkIHRvbywgYnV0IGRvbid0IGhhdmUgYSBib3VuZGluZ0JveCBvciByZXBh
aW50UmVjdC4gU28gd2UgY2FuJ3QgY2FsbAogICAgIC8vIGFwcGx5UmVzb3VyY2UgZGlyZWN0bHkg
YW5kIHVzZSB0aGUgcmVjdHMgZnJvbSB0aGUgb2JqZWN0LCBzaW5jZSB0aGV5IGFyZSBlbXB0eSBm
b3IgUmVuZGVyU1ZHUmVzb3VyY2VzCiAgICAgLy8gRklYTUU6IFdlIG1hZGUgYXBwbHlDbGlwcGlu
Z1RvQ29udGV4dCBwdWJsaWMgYmVjYXVzZSB3ZSBjYW5ub3QgY2FsbCBhcHBseVJlc291cmNlIG9u
IEhUTUwgZWxlbWVudHMgKGl0IGFzc2VydHMgb24gUmVuZGVyT2JqZWN0OjpvYmplY3RCb3VuZGlu
Z0JveCkKLSAgICBib29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dCopOworICAg
IGJvb2wgYXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdmlydHVhbCBG
bG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0KQEAgLTY0LDcgKzY0
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIiOyB9CiAKLSAg
ICBib29sIHBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYp
OwogICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KTsKICAgICB2b2lkIGNhbGN1
bGF0ZUNsaXBDb250ZW50UmVwYWludFJlY3QoKTsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBhZGRS
ZW5kZXJlclRvQ2xpcHBlcihjb25zdCBSZW5kZXJPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5k
ZXggZTMxODY1ZDgwM2MxM2QxNTBiNTcxYjYxZGUwNzg2MWIwMjE3MTFmYy4uMDRlYWQxYThiZWE2
NGE0YWYzNjMwNmFmZTc1OTE2YjlkMDdjODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE5OCwx
MyArMTk4LDEyIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2Uo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgLy8gU2V0IHRoZSByZW5k
ZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCiAgICAgZmlsdGVyRGF0YS0+Zmls
dGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAg
ICBBU1NFUlQoc291cmNlR3JhcGhpY0NvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc291
cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7CiAgIAogICAgIGZp
bHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBXVEY6Om1vdmUoc291cmNlR3JhcGhpYyk7
CiAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAotICAgIGNvbnRleHQg
PSBzb3VyY2VHcmFwaGljQ29udGV4dDsKKyAgICBjb250ZXh0ID0gJnNvdXJjZUdyYXBoaWNDb250
ZXh0OwogCiAgICAgQVNTRVJUKCFtX2ZpbHRlci5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICBt
X2ZpbHRlci5zZXQoJnJlbmRlcmVyLCBXVEY6Om1vdmUoZmlsdGVyRGF0YSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAKaW5kZXggY2JjYTEwM2VmMzA1Njk3OWVmNDY1YzJiNTdiNTMzN2E5OGI1ZDc0ZS4u
YWNlYTIzMGM5ZDkyNWMzNDZlODBkNDI4ZDk5ODJjNTg3OTVjZDhmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQuY3BwCkBAIC02NSwxNiArNjUsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tB
bmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAgICBp
ZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJU
KG1hc2tJbWFnZUNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4
dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogICAgIEFTU0VSVChtYXNrSW1hZ2UpOwogICAgIHNh
dmVkQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7Cisg
ICAgY29udGV4dCA9ICZtYXNrSW1hZ2VDb250ZXh0OwogICAgIGltYWdlQnVmZmVyID0gV1RGOjpt
b3ZlKG1hc2tJbWFnZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQWZm
aW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJvb2wgYm91bmRpbmdCb3hNb2RlLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBBZmZpbmVU
cmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2soR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBSZW5kZXJPYmplY3QqIG9iamVjdCwgYm9vbCBib3VuZGluZ0JveE1vZGUsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byogdGV4dFJvb3RCbG9j
ayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigqb2JqZWN0KTsK
ICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CkBAIC0yMDcsNyArMjA2LDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKGdy
YWRpZW50VHJhbnNmb3JtKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Q7Ci0g
ICAgICAgICAgICBncmFkaWVudERhdGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNm
b3JtKGNsaXBUb1RleHRNYXNrKGNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZy
ZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9P
QkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIGdyYWRp
ZW50RGF0YS0+Z3JhZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1h
c2soKmNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGll
bnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JP
WCwgZ3JhZGllbnRUcmFuc2Zvcm0pKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFk
aWVudCgqZ3JhZGllbnREYXRhLT5ncmFkaWVudCk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHRhcmdldFJlY3QpOwpAQCAtMjIxLDEzICsyMjAsMTMgQEAgdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgR3JhcGgKICAgICAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxQYXRoKCpwYXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAg
ICAgICAgIHNoYXBlLT5maWxsU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgc2hhcGUt
PmZpbGxTaGFwZSgqY29udGV4dCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTW9k
ZSAmIEFwcGx5VG9TdHJva2VNb2RlKSB7CiAgICAgICAgICAgICBpZiAocGF0aCkKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KHNoYXBlKQotICAgICAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZShjb250ZXh0KTsKKyAg
ICAgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXIuY3BwCmluZGV4IDhjM2JkYjM0NzUxMDQwNjk2N2JlNjgzNTYxNzMw
YzAyZjllMGZhYTYuLjY5ZTVkYjE2ZmYxMWQ2MWMwMDRjNWNiNWIwMTBlNTAyOTE2YjYwMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wK
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5m
byYgcGFpbnRJbmZvKQogewogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlk
ZGVuKCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogRmxv
YXRSZWN0IFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjptYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgbWFya2VyVHJhbnNmb3JtYXRpb24pIGNvbnN0CkBAIC0xMTgsNyArMTE4
LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6ZHJhdyhQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJgogICAgICAgICByZXR1cm47CiAKICAgICBQYWlu
dEluZm8gaW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIGluZm8uYXBwbHlUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKICAgICBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KGluZm8sIEludFBvaW50KCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmNwcAppbmRleCA1MzBkYTNkNmZhZWQ0Yzc1YzdhZWZhYWZiMGM0MGVkMTU4
N2M4YzU1Li5hZDM3ZDQ3Yzk4NDZhYzAwNTNkYTUyYzU0ZGQ5YWY0YzMxZDVjZjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmNwcApAQCAtODAsMTQgKzgwLDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAg
ICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29s
dXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5n
TWFza2VyRGF0YSk7CisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIo
KmNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFz
a0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJE
YXRhKiBtYXNrZXJEYXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2Jq
ZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRh
dGEtPm1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrSW1hZ2VDb250ZXh0KTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNr
SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIC8vIEV2ZW50dWFsbHkgYWRqdXN0IHRoZSBtYXNrIGlt
YWdlIGNvbnRleHQgYWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgb2JqZWN0Qm91bmRpbmdCb3guCiAg
ICAgQWZmaW5lVHJhbnNmb3JtIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb247CkBAIC05NSw3ICs5
NCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJ
bWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDCiAgICAgICAgIEZsb2F0UmVjdCBvYmplY3RC
b3VuZGluZ0JveCA9IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKICAgICAgICAgbWFza0Nv
bnRlbnRUcmFuc2Zvcm1hdGlvbi50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmpl
Y3RCb3VuZGluZ0JveC55KCkpOwogICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnNj
YWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0Jv
eC5oZWlnaHQoKSk7Ci0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmNvbmNhdENUTShtYXNrQ29u
dGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgbWFza0ltYWdlQ29udGV4dC5jb25jYXRDVE0o
bWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgY29u
dGVudCBpbnRvIHRoZSBJbWFnZUJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA0YmMwZDk1
MTJiMjkwYzcyN2Q3YTc3YzhiMjQ1ODQ5OTljMWY2OWJlLi45Zjk1ZGQyNmIzMWIwZGU5NDg4NWUz
OTU0MzY3YWJmYTQyNGQ4MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xODksMTMgKzE4OSwx
MyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4dAogICAgICAgICBpZiAocGF0aCkKICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0g
ICAgICAgICAgICBzaGFwZS0+ZmlsbFNoYXBlKGNvbnRleHQpOworICAgICAgICAgICAgc2hhcGUt
PmZpbGxTaGFwZSgqY29udGV4dCk7CiAgICAgfQogICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBs
eVRvU3Ryb2tlTW9kZSkgewogICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQt
PnN0cm9rZVBhdGgoKnBhdGgpOwogICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAg
IHNoYXBlLT5zdHJva2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5zdHJva2VT
aGFwZSgqY29udGV4dCk7CiAgICAgfQogCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMjM3
LDE2ICsyMzcsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXQKICAgICBpZiAoIXRpbGVJbWFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIHRpbGVJ
bWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQodGlsZUltYWdl
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUlt
YWdlLT5jb250ZXh0KCk7CiAKICAgICAvLyBUaGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhl
IGZpbmFsIHJlbmRlcmVkIHNpemUsIHNvIHRoZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRv
IGF2b2lkIHBpeGVsYXRpb24pLgotICAgIHRpbGVJbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMu
d2lkdGgoKSwKKyAgICB0aWxlSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJv
dW5kYXJpZXMuaGVpZ2h0KCkgLyB0aWxlQm91bmRhcmllcy5oZWlnaHQoKSkpOwogCiAgICAgLy8g
QXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuCiAgICAgaWYgKCF0aWxlSW1hZ2VUcmFu
c2Zvcm0uaXNJZGVudGl0eSgpKQotICAgICAgICB0aWxlSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0o
dGlsZUltYWdlVHJhbnNmb3JtKTsKKyAgICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0o
dGlsZUltYWdlVHJhbnNmb3JtKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZW50VHJhbnNm
b3JtYXRpb247CiAgICAgaWYgKGF0dHJpYnV0ZXMucGF0dGVybkNvbnRlbnRVbml0cygpID09IFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xp
ZENvbG9yLmNwcAppbmRleCBmNTAxYWJmNDRiMjE0MTY3OWE2YjdhNjk4ZWZiMTcxODViZTU3MDI5
Li5mYjg4ZmM4YjRiMjhiNzg1OWRkOGYyMTViOTAyNTFkN2UwZDI4M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3IuY3BwCkBAIC04MSwxMyArODEsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnQK
ICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7
CiAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZShj
b250ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgIH0K
ICAgICBpZiAocmVzb3VyY2VNb2RlICYgQXBwbHlUb1N0cm9rZU1vZGUpIHsKICAgICAgICAgaWYg
KHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAg
ZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7
CisgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXgg
MzRjN2Y2ODg2ZjUxYjIxMzI1OWU4ZGRjY2JmZWJkMGFkMjBkM2RlMC4uYzJmYWFhMjVlMTQzMmY2
MGY3ODkxOGIwZjg1NzVlNDUyN2E4YTQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJT
VkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgcGFpbnQsIGlmIHRo
ZSBjb250ZXh0IGV4cGxpY2l0bHkgZGlzYWJsZWQgaXQuCi0gICAgaWYgKHBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTVkcgb3V0bGluZXMg
YXJlIHBhaW50ZWQgZHVyaW5nIFBhaW50UGhhc2VGb3JlZ3JvdW5kLgpAQCAtMjU3LDE4ICsyNTcs
MTggQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRo
ZSBQYWludEluZm8gYmVjYXVzZSBhcHBseVRyYW5zZm9ybSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdl
IHJlY3QuCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7Ci0gICAgY2hp
bGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQo
KS5zYXZlKCk7CiAKICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNsaXAKICAgICBpZiAo
c2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkKLSAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4
dC0+Y2xpcChzbmFwcGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJy
ZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8u
Y29udGV4dCgpLmNsaXAoc25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNl
dCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKSk7CiAKICAgICAvLyBDb252ZXJ0
IGZyb20gY29udGFpbmVyIG9mZnNldHMgKGh0bWwgcmVuZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRy
YW5zZm9ybSAoc3ZnIHJlbmRlcmVycykuCiAgICAgLy8gVHJhbnNmb3JtIGZyb20gb3VyIHBhaW50
IGNvbnRhaW5lcidzIGNvb3JkaW5hdGUgc3lzdGVtIHRvIG91ciBsb2NhbCBjb29yZHMuCiAgICAg
SW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNl
dCk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtOjp0
cmFuc2xhdGlvbihhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkpICogbG9jYWxUb0JvcmRlckJveFRyYW5zZm9ybSgpKTsKIAotICAgIC8vIFNWR1JlbmRlcmlu
Z0NvbnRleHQgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3JlIHdlIHJlc3RvcmUgdGhlIGNoaWxkUGFp
bnRJbmZvLmNvbnRleHQsIGJlY2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKKyAgICAvLyBTVkdSZW5k
ZXJpbmdDb250ZXh0IG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB3ZSByZXN0b3JlIHRoZSBjaGls
ZFBhaW50SW5mby5jb250ZXh0KCksIGJlY2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKICAgICAvLyBj
aGFuZ2VkIHRoZSBjb250ZXh0IGFuZCBpdCBpcyBvbmx5IHJldmVydGVkIHdoZW4gdGhlIFNWR1Jl
bmRlcmluZ0NvbnRleHQgZGVzdHJ1Y3RvciBmaW5pc2hlcyBhcHBseWluZyB0aGUgZmlsdGVyLgog
ICAgIHsKICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwpAQCAt
Mjg1LDcgKzI4NSw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY2hpbGRQYWlu
dEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdSb290Ojp3aWxs
QmVEZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcAppbmRleCBhMTljZGJiNmM1YjE3YzNiN2VlYzg2NmNkNDU1NWFmNjY2NTYwZWIw
Li45Nzc1OThlOGM2ZTY5ZWMzY2MzMWM0NDNiZTg2YzczMjM0MTgyZDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtOTIsMTIgKzky
LDEyIEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBw
YXRoKCkuaXNFbXB0eSgpOwogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNo
YXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LT5maWxs
UGF0aChwYXRoKCkpOworICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCgpKTsKIH0KIAotdm9pZCBS
ZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25z
dAordm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIEFTU0VSVChtX3BhdGgpOwogICAgIFBhdGgqIHVzZVBhdGggPSBt
X3BhdGguZ2V0KCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ry
b2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgIGlmIChoYXNOb25T
Y2FsaW5nU3Ryb2tlKCkpCiAgICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1
c2VQYXRoLCBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCkpOwogCi0gICAgY29udGV4dC0+c3Ry
b2tlUGF0aCgqdXNlUGF0aCk7CisgICAgY29udGV4dC5zdHJva2VQYXRoKCp1c2VQYXRoKTsKIH0K
IAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIyNSw4ICsyMjUsOSBAQCBib29sIFJlbmRlclNWR1No
YXBlOjpzaG91bGRHZW5lcmF0ZU1hcmtlclBvc2l0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHJl
c291cmNlcy0+bWFya2VyU3RhcnQoKSB8fCByZXNvdXJjZXMtPm1hcmtlck1pZCgpIHx8IHJlc291
cmNlcy0+bWFya2VyRW5kKCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQg
UmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBo
aWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAgICBp
ZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIGZpbGxQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVz
b3VyY2U6OmZpbGxQYWludGluZ1Jlc291cmNlKCp0aGlzLCBzdHlsZSwgZmFsbGJhY2tDb2xvcikp
IHsKICAgICAgICAgaWYgKGZpbGxQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlz
LCBzdHlsZSwgY29udGV4dCwgQXBwbHlUb0ZpbGxNb2RlKSkKQEAgLTI0MCw4ICsyNDEsOSBAQCB2
b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6
c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCit2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJh
Y2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3Vy
Y2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5
bGUsIGZhbGxiYWNrQ29sb3IpKSB7CiAgICAgICAgIGlmIChzdHJva2VQYWludGluZ1Jlc291cmNl
LT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29udGV4dCwgQXBwbHlUb1N0cm9rZU1vZGUp
KQpAQCAtMjU1LDEyICsyNTcsMTIgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tl
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2Uo
KSkgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNj
YWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKICAgICAgICAgaWYgKCFzZXR1cE5vblNjYWxpbmdTdHJv
a2VDb250ZXh0KG5vblNjYWxpbmdUcmFuc2Zvcm0sIHN0YXRlU2F2ZXIpKQpAQCAtMjc1LDEwICsy
NzcsMTAgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZv
JiBjaGlsZFBhaW50SW5mbykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRl
ci5zaXplKCk7ICsraSkgewogICAgICAgICBzd2l0Y2ggKHBhaW50T3JkZXIuYXQoaSkpIHsKICAg
ICAgICAgY2FzZSBQYWludFR5cGVGaWxsOgotICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCks
IGNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCks
IGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQYWludFR5cGVTdHJva2U6Ci0gICAgICAgICAgICBzdHJva2VTaGFwZShjaGlsZFBhaW50
SW5mby5jb250ZXh0KTsKKyAgICAgICAgICAgIHN0cm9rZVNoYXBlKGNoaWxkUGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJr
ZXJzOgogICAgICAgICAgICAgaWYgKCFtX21hcmtlclBvc2l0aW9ucy5pc0VtcHR5KCkpCkBAIC0y
OTAsNyArMjkyLDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFp
bnRJbmZvJiBjaGlsZFBhaW50SW5mbykKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZUZvcmVncm91bmQKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rp
c2FibGVkKCkgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCiAgICAg
ICAgIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCBpc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9j
YWxDb29yZGluYXRlcygpOwpAQCAtMjk4LDcgKzMwMCw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8uY29u
dGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obV9s
b2NhbFRyYW5zZm9ybSk7CiAKICAgICBpZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZUZvcmVncm91bmQpIHsKQEAgLTMwNyw3ICszMDksNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBl
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAg
ICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKICAgICAgICAg
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsK
ICAgICAgICAgICAgIGlmIChzdmdTdHlsZS5zaGFwZVJlbmRlcmluZygpID09IFNSX0NSSVNQRURH
RVMpCi0gICAgICAgICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCku
c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAogICAgICAgICAgICAgZmlsbFN0cm9rZU1hcmtl
cnMoY2hpbGRQYWludEluZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggNjExYmZkMTRiOWRkNjQ4YzJmMWQ3MzQyYjhh
YmYyOWEyYmVhZWVhMi4uMTRjMzFjY2ZjNjA0MzY5ZTg2MGVkYTE3ZjE1NjQ5Yjg3YjZlNmZlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAt
NTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQm91bmRhcmll
c1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIG5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyBtX25lZWRzVHJhbnNm
b3JtVXBkYXRlID0gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3ND
b250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29u
dGV4dCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3QgPSAw
OwogCiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoLmdldCgpOyB9CkBA
IC0xMTQsOSArMTE0LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbWFya2VyUmVjdChmbG9h
dCBzdHJva2VXaWR0aCkgY29uc3Q7CiAgICAgdm9pZCBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7
CiAKLSAgICB2b2lkIGZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4
dCopOwotICAgIHZvaWQgc3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0Nv
bnRleHQqKTsKLSAgICB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZv
aWQgZmlsbFNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0Jik7CisgICAg
dm9pZCBzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCYpOwor
ICAgIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdm9pZCBmaWxsU3Ry
b2tlTWFya2VycyhQYWludEluZm8mKTsKICAgICB2b2lkIGRyYXdNYXJrZXJzKFBhaW50SW5mbyYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Rl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApp
bmRleCA0ZTA4ZjNmOWFhMjRmZDE4YmQyMmM4YzU5OGJiOWFkOWVlZmQ0OTY5Li45MmI3MWU5YzY0
ODUxMDhjZTJjN2JmMzQ3NTQwYzg3YTYyZDY1ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJl
bmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29s
KiB3YXNGaXhlZCkgY29ucwogCiB2b2lkIFJlbmRlclNWR1RleHQ6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZW5k
ZXJTVkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
KQogICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGJsb2NrSW5mbyhwYWludEluZm8p
OwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYmxvY2tJbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihibG9ja0lu
Zm8uY29udGV4dCgpKTsKICAgICBibG9ja0luZm8uYXBwbHlUcmFuc2Zvcm0obG9jYWxUb1BhcmVu
dFRyYW5zZm9ybSgpKTsKICAgICBSZW5kZXJCbG9jazo6cGFpbnQoYmxvY2tJbmZvLCBMYXlvdXRQ
b2ludCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCAwMjcwM2QzZGY5NjA2YzhjYmJh
ZmI5YTVlZDUwMDU4NmMyMmZkOGQ1Li43ODM3ZWI1MjRlZTI1YzI0YmE4ZmFmMDNkYjBkZjdlY2Nm
YWI1YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCkK
IHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50
SW5mbyYgcGFpbnRJbmZvKQogewogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93
SGlkZGVuKCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9y
dCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAog
dm9pZCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4IGQx
ZjRjNWMzZWFmOWYzYjkxMjhmM2MzYjk5NzMyMzcyMGYzZTZmYjMuLmQ4OWJjZmU2ZTNmNmMwNWQz
YjBkYzlmNGZkYjQ3MmZiOGU0MTUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB2b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3Vu
ZChQYWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2Vs
ZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkp
OwogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CiAgICAgZm9yIChJ
bmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dE9uTGluZSgpKSB7CkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6cGFp
bnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogdm9pZCBTVkdJbmxp
bmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0LCBMYXlvdXRVbml0KQogewogICAgIEFTU0VSVChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VTZWxlY3Rpb24pOwotICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSk7CisgICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dCgpLnBhaW50
aW5nRGlzYWJsZWQoKSk7CiAKICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRl
eHQocmVuZGVyZXIoKSwgcGFpbnRJbmZvLCBTVkdSZW5kZXJpbmdDb250ZXh0OjpTYXZlR3JhcGhp
Y3NDb250ZXh0KTsKICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVk
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwCmluZGV4IDgzYjE3NWRmYzU0ODRlYTVlYjE1ZGMyOTYxYjgyYzA2Y2FjYzRlYzguLmVm
OGYxOGVlY2VjYWJhOTE2MjU0YmI3M2YyMTY0MDM3MzJmYTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjIwLDEzICsy
MjAsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQo
UGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgICAgIGlmICghbWFwU3RhcnRFbmRQb3NpdGlvbnNJ
bnRvRnJhZ21lbnRDb29yZGluYXRlcyhmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBm
cmFnbWVudEVuZFBvc2l0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAgICAgICAgIGZyYWdtZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21l
bnRUcmFuc2Zvcm0pOwogICAgICAgICBpZiAoIWZyYWdtZW50VHJhbnNmb3JtLmlzSWRlbnRpdHko
KSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oZnJhZ21lbnRUcmFu
c2Zvcm0pOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0oZnJhZ21l
bnRUcmFuc2Zvcm0pOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Io
YmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+ZmlsbFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwg
ZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNr
Z3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4
dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5kUG9z
aXRpb24sICZzdHlsZSksIGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAog
ICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAg
IH0KQEAgLTI4OCwxNyArMjg4LDE3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAg
IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQgPSBtX3RleHRGcmFnbWVudHMuYXQoaSk7CiAgICAg
ICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgICAgICBmcmFnbWVudC5idWlsZEZyYWdtZW50VHJhbnNmb3JtKGZyYWdtZW50VHJhbnNmb3Jt
KTsKICAgICAgICAgaWYgKCFmcmFnbWVudFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3Jt
KTsKIAogICAgICAgICAvLyBTcGVjOiBBbGwgdGV4dCBkZWNvcmF0aW9ucyBleGNlcHQgbGluZS10
aHJvdWdoIHNob3VsZCBiZSBkcmF3biBiZWZvcmUgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJv
a2VkOyB0aHVzLCB0aGUgdGV4dCBpcyByZW5kZXJlZCBvbiB0b3Agb2YgdGhlc2UgZGVjb3JhdGlv
bnMuCiAgICAgICAgIGludCBkZWNvcmF0aW9ucyA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5l
KQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVj
b3JhdGlvblVuZGVybGluZSwgZnJhZ21lbnQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9u
KHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lLCBmcmFnbWVudCk7
CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpCi0gICAg
ICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQsIFRleHREZWNvcmF0aW9u
T3ZlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludElu
Zm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAg
ICAgYXV0byBwYWludE9yZGVyID0gc3R5bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFpbnRP
cmRlcigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXpl
KCk7ICsraSkgewpAQCAtMzA3LDEzICszMDcsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UK
ICAgICAgICAgICAgICAgICBpZiAoIWhhc0ZpbGwpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRmls
bE1vZGUgfCBBcHBseVRvVGV4dE1vZGU7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50
SW5mby5jb250ZXh0LCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0
aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChw
YWludEluZm8uY29udGV4dCgpLCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFz
U2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBQYWludFR5cGVTdHJva2U6CiAgICAgICAgICAgICAgICAgaWYg
KCFoYXNWaXNpYmxlU3Ryb2tlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb1N0cm9rZU1vZGUgfCBB
cHBseVRvVGV4dE1vZGU7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250
ZXh0LCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWlu
dFNlbGVjdGVkVGV4dE9ubHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8u
Y29udGV4dCgpLCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9u
LCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICAgICAgLy8g
U3BlYzogTGluZS10aHJvdWdoIHNob3VsZCBiZSBkcmF3biBhZnRlciB0aGUgdGV4dCBpcyBmaWxs
ZWQgYW5kIHN0cm9rZWQ7IHRodXMsIHRoZSBsaW5lLXRocm91Z2ggaXMgcmVuZGVyZWQgb24gdG9w
IG9mIHRoZSB0ZXh0LgogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxp
bmVUaHJvdWdoKQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0
LCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoLCBmcmFnbWVudCk7CisgICAgICAgICAgICBwYWlu
dERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25MaW5lVGhyb3Vn
aCwgZnJhZ21lbnQpOwogCiAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRv
RGVmYXVsdE1vZGU7CiAgICAgfQpAQCAtMzc5LDE0ICszNzksMTIgQEAgdm9pZCBTVkdJbmxpbmVU
ZXh0Qm94OjpyZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0
LCBjb25zdAogCiBib29sIFNWR0lubGluZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRG
b3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2NhbGluZ0Zh
Y3RvciwgVGV4dFJ1biYgdGV4dFJ1biwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIGJvb2wg
YWNxdWlyZWRSZXNvdXJjZSA9IGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxp
bmdGYWN0b3IsIHBhcmVudCgpLT5yZW5kZXJlcigpLCBzdHlsZSk7Ci0gICAgaWYgKCFhY3F1aXJl
ZFJlc291cmNlKQorICAgIGlmICghYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgc2Nh
bGluZ0ZhY3RvciwgcGFyZW50KCktPnJlbmRlcmVyKCksIHN0eWxlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICAvLyBTVkcgRm9udHMgbmVlZCBh
Y2Nlc3MgdG8gdGhlIHBhaW50aW5nIHJlc291cmNlIHVzZWQgdG8gZHJhdyB0aGUgY3VycmVudCB0
ZXh0IGNodW5rLgotICAgIFRleHRSdW46OlJlbmRlcmluZ0NvbnRleHQqIHJlbmRlcmluZ0NvbnRl
eHQgPSB0ZXh0UnVuLnJlbmRlcmluZ0NvbnRleHQoKTsKLSAgICBpZiAocmVuZGVyaW5nQ29udGV4
dCkKKyAgICBpZiAoYXV0byogcmVuZGVyaW5nQ29udGV4dCA9IHRleHRSdW4ucmVuZGVyaW5nQ29u
dGV4dCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+
KHJlbmRlcmluZ0NvbnRleHQpLT5zZXRBY3RpdmVQYWludGluZ1Jlc291cmNlKG1fcGFpbnRpbmdS
ZXNvdXJjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0ZXh0UnVuKTsKQEAgLTQ5OSw3ICs0
OTcsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJE
ZWZpbmluaW5nVGV4dERlY29yYXRpb24oSW5saW5lRgogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9
CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdt
ZW50JiBmcmFnbWVudCkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3Qg
U1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgp
LnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgPT0gVGV4dERlY29yYXRpb25Ob25lKQogICAgICAg
ICByZXR1cm47CkBAIC01MjcsNyArNTI1LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWlu
dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbgogICAg
IH0KIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3Jh
dGlvblJlbmRlcmVyKQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRo
U3R5bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9u
LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYg
ZGVjb3JhdGlvblJlbmRlcmVyKQogewogICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsK
ICAgICBBU1NFUlQobV9wYWludGluZ1Jlc291cmNlTW9kZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUp
OwpAQCAtNTQ5LDExICs1NDcsMTEgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29y
YXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBmbG9h
dCB3aWR0aCA9IGZyYWdtZW50LndpZHRoOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRG
b250TWV0cmljcyA9IHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9
IDEpIHsKICAgICAgICAgd2lkdGggKj0gc2NhbGluZ0ZhY3RvcjsKICAgICAgICAgZGVjb3JhdGlv
bk9yaWdpbi5zY2FsZShzY2FsaW5nRmFjdG9yLCBzY2FsaW5nRmFjdG9yKTsKLSAgICAgICAgY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3Rv
cikpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGluZ0ZhY3Rvciwg
MSAvIHNjYWxpbmdGYWN0b3IpKTsKICAgICB9CiAKICAgICBkZWNvcmF0aW9uT3JpZ2luLm1vdmUo
MCwgLXNjYWxlZEZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKyBwb3NpdGlvbk9mZnNldEZvckRl
Y29yYXRpb24oZGVjb3JhdGlvbiwgc2NhbGVkRm9udE1ldHJpY3MsIHRoaWNrbmVzcykpOwpAQCAt
NTYxLDExICs1NTksMTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBQYXRoIHBhdGg7
CiAgICAgcGF0aC5hZGRSZWN0KEZsb2F0UmVjdChkZWNvcmF0aW9uT3JpZ2luLCBGbG9hdFNpemUo
d2lkdGgsIHRoaWNrbmVzcykpKTsKIAotICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShj
b250ZXh0LCBzY2FsaW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5
bGUpKQotICAgICAgICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCAmcGF0aCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gJmNvbnRleHQ7CisgICAgaWYgKGFjcXVp
cmVQYWludGluZ1Jlc291cmNlKGNvbnRleHRQdHIsIHNjYWxpbmdGYWN0b3IsIGRlY29yYXRpb25S
ZW5kZXJlciwgJmRlY29yYXRpb25TdHlsZSkpCisgICAgICAgIHJlbGVhc2VQYWludGluZ1Jlc291
cmNlKGNvbnRleHRQdHIsICZwYXRoKTsKIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWlu
dFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBz
dHlsZSwgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwg
aW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJT
dHlsZSogc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJh
Z21lbnQsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pCiB7CiAgICAgZmxvYXQg
c2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChz
Y2FsaW5nRmFjdG9yKTsKQEAgLTU4MywyNCArNTgyLDI1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJT
dHlsCiAKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgp
LCB0ZXh0T3JpZ2luLnkoKSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgp
KSwgdGV4dFNpemUpOwogCisgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250
ZXh0OwogICAgIGRvIHsKLSAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4
dFBhaW50aW5nKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHRleHRSdW4sIHN0eWxlKSkKKyAgICAg
ICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKHVzZWRDb250ZXh0
LCBzY2FsaW5nRmFjdG9yLCB0ZXh0UnVuLCBzdHlsZSkpCiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKmNvbnRl
eHQsIHNoYWRvdywgc2hhZG93UmVjdCk7CisgICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRv
d0FwcGxpZXIoKnVzZWRDb250ZXh0LCBzaGFkb3csIHNoYWRvd1JlY3QpOwogCiAgICAgICAgICAg
ICBpZiAoIXNoYWRvd0FwcGxpZXIuZGlkU2F2ZUNvbnRleHQoKSkKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAv
IHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgdXNl
ZENvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAKLSAgICAgICAgICAg
IHNjYWxlZEZvbnQuZHJhd1RleHQoY29udGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiArIHNoYWRv
d0FwcGxpZXIuZXh0cmFPZmZzZXQoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworICAg
ICAgICAgICAgc2NhbGVkRm9udC5kcmF3VGV4dCgqdXNlZENvbnRleHQsIHRleHRSdW4sIHRleHRP
cmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBv
c2l0aW9uKTsKIAogICAgICAgICAgICAgaWYgKCFzaGFkb3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0
KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICAgICAgICAg
IHVzZWRDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN0b3JlR3Jh
cGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmcoY29udGV4dCwgdGV4dFJ1bik7CisgICAgICAg
IHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyh1c2VkQ29udGV4dCwgdGV4
dFJ1bik7CiAKICAgICAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYw
OSw3ICs2MDksNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bAogICAgIH0gd2hpbGUgKHNoYWRv
dyk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5
bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBi
b29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJT
dHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJv
b2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKIHsKICAgICBBU1NF
UlQoc3R5bGUpOwogICAgIEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IDIzYzA3NjlmZTlmYTc3
NjI4YmVkMDFlYTNjYjBjNzllNWFhY2ZiNjguLjE3ZWNlZjNhY2E5NDVmNzFiMmU1ZmM4NDZhOTMx
NWQyZmZjYTExM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5oCkBAIC03NywxMCArNzcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHByZXBh
cmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0
IHNjYWxpbmdGYWN0b3IsIFRleHRSdW4mLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVzdG9y
ZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBUZXh0
UnVuJik7CiAKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBUZXh0
RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7Ci0gICAgdm9pZCBwYWludERlY29y
YXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIp
OwotICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVy
U3R5bGUqLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50IHN0YXJ0UG9zaXRp
b24sIGludCBlbmRQb3NpdGlvbik7Ci0gICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0
KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25s
eSk7CisgICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgVGV4dERlY29y
YXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9u
V2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0
RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAg
ICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxl
KiwgVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBp
bnQgZW5kUG9zaXRpb24pOworICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJl
bmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJh
Z21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwog
CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDIxMmExNjZlYzBjZjIwNzZmYmM3M2IxMTM0YWU4YmJiZDY2MzczZjAuLmZiOWEwM2M1
OTVlNjM2MDY5NmFlMWIzZmQ1ZmIyMTRjZjM2NGYwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTYsMTkgKzU2
LDIwIEBAIFNWR1JlbmRlcmluZ0NvbnRleHQ6On5TVkdSZW5kZXJpbmdDb250ZXh0KCkKIAogICAg
IGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kRmlsdGVyTGF5ZXIpIHsKICAgICAgICAgQVNTRVJU
KG1fZmlsdGVyKTsKLSAgICAgICAgbV9maWx0ZXItPnBvc3RBcHBseVJlc291cmNlKCptX3JlbmRl
cmVyLCBtX3BhaW50SW5mby0+Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAwKTsKLSAg
ICAgICAgbV9wYWludEluZm8tPmNvbnRleHQgPSBtX3NhdmVkQ29udGV4dDsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAg
ICAgIG1fZmlsdGVyLT5wb3N0QXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgY29udGV4dFB0ciwg
QXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAwKTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRl
eHQoKm1fc2F2ZWRDb250ZXh0KTsKICAgICAgICAgbV9wYWludEluZm8tPnJlY3QgPSBtX3NhdmVk
UGFpbnRSZWN0OwogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kT3BhY2l0
eUxheWVyKQotICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXll
cigpOwogCiAgICAgaWYgKG1fcmVuZGVyaW5nRmxhZ3MgJiBFbmRTaGFkb3dMYXllcikKLSAgICAg
ICAgbV9wYWludEluZm8tPmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAg
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAgIGlm
IChtX3JlbmRlcmluZ0ZsYWdzICYgUmVzdG9yZUdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgbV9w
YWludEluZm8tPmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRl
eHQoKS5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRv
UmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSBuZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUp
CkBAIC04NSw3ICs4Niw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVu
ZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAKICAgICAvLyBXZSBu
ZWVkIHRvIHNhdmUgLyByZXN0b3JlIHRoZSBjb250ZXh0IGV2ZW4gaWYgdGhlIGluaXRpYWxpemF0
aW9uIGZhaWxlZC4KICAgICBpZiAobmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID09IFNhdmVHcmFw
aGljc0NvbnRleHQpIHsKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPnNhdmUoKTsKKyAg
ICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIG1fcmVuZGVyaW5n
RmxhZ3MgfD0gUmVzdG9yZUdyYXBoaWNzQ29udGV4dDsKICAgICB9CiAKQEAgLTExMSwyNCArMTEy
LDI0IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAKICAgICBpZiAob3BhY2l0eSA8IDEgfHwg
c2hhZG93IHx8IGhhc0JsZW5kTW9kZSB8fCBpc29sYXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lz
b2xhdGlvbikgewogICAgICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBtX3JlbmRlcmVyLT5y
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwotICAgICAgICBtX3BhaW50SW5mby0+Y29u
dGV4dC0+Y2xpcChyZXBhaW50UmVjdCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCku
Y2xpcChyZXBhaW50UmVjdCk7CiAKICAgICAgICAgaWYgKG9wYWNpdHkgPCAxIHx8IGhhc0JsZW5k
TW9kZSB8fCBpc29sYXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewogCiAgICAg
ICAgICAgICBpZiAoaGFzQmxlbmRNb2RlKQotICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5j
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQtPmNvbXBv
c2l0ZU9wZXJhdGlvbigpLCBzdHlsZS5ibGVuZE1vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9w
YWludEluZm8tPmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNv
bnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKSwgc3R5bGUuYmxlbmRNb2RlKCkpOwogCi0gICAg
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFj
aXR5KTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihvcGFjaXR5KTsKIAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAg
ICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1f
cGFpbnRJbmZvLT5jb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFs
KTsKKyAgICAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihtX3BhaW50SW5mby0+Y29udGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVu
ZE1vZGVOb3JtYWwpOwogCiAgICAgICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZE9wYWNp
dHlMYXllcjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzaGFkb3cpIHsKLSAgICAgICAgICAg
IG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShyb3VuZFRvSW50KHNoYWRv
dy0+eCgpKSwgcm91bmRUb0ludChzaGFkb3ctPnkoKSkpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFk
b3ctPmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBtX3BhaW50SW5m
by0+Y29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngo
KSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5j
b2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQoKS5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgICAgICAgICAgbV9yZW5kZXJp
bmdGbGFncyB8PSBFbmRTaGFkb3dMYXllcjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0Nyw3ICsx
NDgsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRl
bnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogICAgICAgICAgICAgcmVmZXJlbmNlQm94
LnNldEhlaWdodCh2aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHJlZmVyZW5jZUJveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7Ci0gICAg
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJl
bmNlUmVjdChyZWZlcmVuY2VCb3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpKTsKKyAgICAgICAgbV9w
YWludEluZm8tPmNvbnRleHQoKS5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVj
dChyZWZlcmVuY2VCb3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpKTsKICAgICB9CiAKICAgICBhdXRv
KiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVy
ZXIoKm1fcmVuZGVyZXIpOwpAQCAtMTYxLDI2ICsxNjIsMzUgQEAgdm9pZCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBQYWkKIAogICAgIGlmICghaXNSZW5kZXJpbmdNYXNrKSB7CiAgICAgICAgIGlmIChSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gcmVzb3VyY2VzLT5tYXNrZXIoKSkgewotICAgICAg
ICAgICAgaWYgKCFtYXNrZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBtX3Bh
aW50SW5mby0+Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlKSkKKyAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dFB0ciA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOworICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSBtYXNrZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0
eWxlLCBjb250ZXh0UHRyLCBBcHBseVRvRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWlu
dEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gcmVzb3VyY2VzLT5jbGlwcGVyKCk7CiAgICAg
aWYgKCFjbGlwUGF0aE9wZXJhdGlvbiAmJiBjbGlwcGVyKSB7Ci0gICAgICAgIGlmICghY2xpcHBl
ci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0
LCBBcHBseVRvRGVmYXVsdE1vZGUpKQorICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQ
dHIgPSAmbV9wYWludEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBjbGlw
cGVyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlU
b0RlZmF1bHRNb2RlKTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQ
dHIpOworICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoIWlzUmVuZGVyaW5nTWFzaykgewogICAgICAgICBtX2ZpbHRlciA9IHJlc291cmNl
cy0+ZmlsdGVyKCk7CiAgICAgICAgIGlmIChtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9zYXZl
ZENvbnRleHQgPSBtX3BhaW50SW5mby0+Y29udGV4dDsKKyAgICAgICAgICAgIG1fc2F2ZWRDb250
ZXh0ID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CiAgICAgICAgICAgICBtX3NhdmVkUGFpbnRS
ZWN0ID0gbV9wYWludEluZm8tPnJlY3Q7CiAgICAgICAgICAgICAvLyBSZXR1cm4gd2l0aCBmYWxz
ZSBoZXJlIG1heSBtZWFuIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkcmF3IHRoZSBjb250ZW50CiAg
ICAgICAgICAgICAvLyAoYmVjYXVzZSBpdCB3YXMgZWl0aGVyIGRyYXduIGJlZm9yZSBvciBlbXB0
eSkgYnV0IHdlIHN0aWxsIG5lZWQgdG8gYXBwbHkgdGhlIGZpbHRlci4KICAgICAgICAgICAgIG1f
cmVuZGVyaW5nRmxhZ3MgfD0gRW5kRmlsdGVyTGF5ZXI7Ci0gICAgICAgICAgICBpZiAoIW1fZmls
dGVyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgbV9wYWludEluZm8tPmNvbnRl
eHQsIEFwcGx5VG9EZWZhdWx0TW9kZSkpCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHRQdHIgPSAmbV9wYWludEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gbV9maWx0ZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0
UHRyLCBBcHBseVRvRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENv
bnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBjYWNoaW5nIHRoZSBy
ZXN1bHRpbmcgYml0bWFwIGFuZCBkbyBub3QgaW52YWxpZGF0ZSBpdCBvbiByZXBhaW50IHJlY3QK
QEAgLTI1NCw5ICsyNjQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UgogICAgIEFmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKS50cmFuc2xhdGUo
LXBhaW50UmVjdC5sb2NhdGlvbigpKS5tdWx0aXBseShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7
Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4dCk7Ci0gICAgaW1hZ2VDb250ZXh0LT5jb25jYXRDVE0o
dHJhbnNmb3JtKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7CisgICAgaW1hZ2VDb250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwog
CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQpAQCAtMjc0LDExICsyODMsMTAgQEAgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFIKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoaW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAvLyBD
b21wZW5zYXRlIHJvdW5kaW5nIGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBp
cyB1c2luZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUg
aXMgaW50ZWdlci4KLSAgICBpbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRT
aXplLndpZHRoKCkgLyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkg
LyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7CisgICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6
ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkgLyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNp
emUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CiB9CkBAIC0yODYsNyArMjk0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKIHZv
aWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXIqIGltYWdlLCBSZW5kZXJFbGVtZW50JiBpdGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHN1YnRyZWVDb250ZW50VHJhbnNmb3JtYXRpb24pCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKLSAg
ICBBU1NFUlQoaW1hZ2UtPmNvbnRleHQoKSk7CiAKICAgICBQYWludEluZm8gaW5mbyhpbWFnZS0+
Y29udGV4dCgpLCBMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSwgUGFpbnRQaGFzZUZvcmVncm91
bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwpOwogCkBAIC0zMDAsMTggKzMwNywxNyBAQCB2b2lkIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
KiBpbWFnZSwgUmVuZGVyRQogICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVu
dFRyYW5zZm9ybWF0aW9uOwogfQogCi12b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKK3Zv
aWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGlt
YWdlQnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQogewotICAgIEFTU0VSVChjb250ZXh0KTsKICAg
ICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVj
dCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9y
bSk7CiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNv
bHV0ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQu
CiAgICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4g
dGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LT5jb25j
YXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKLSAgICBjb250ZXh0LT5jbGlwVG9J
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKLSAgICBj
b250ZXh0LT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIGNvbnRleHQuY29uY2F0
Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7CisgICAgY29udGV4dC5jbGlwVG9JbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKKyAgICBjb250
ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBXaGVuIG5lc3Rpbmcg
cmVzb3VyY2VzLCB3aXRoIG9iamVjdEJvdW5kaW5nQm94IGFzIGNvbnRlbnQgdW5pdCB0eXBlcywg
dGhlcmUncyBubyB1c2UgaW4gY2FjaGluZyB0aGUKICAgICAvLyByZXN1bHRpbmcgaW1hZ2UgYnVm
ZmVyIGFzIHRoZSBwYXJlbnQgcmVzb3VyY2UgYWxyZWFkeSBjYWNoZXMgdGhlIHJlc3VsdC4KQEAg
LTMzNSw3ICszNDEsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91
bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gSW52YWxp
ZGF0ZSBhbiBleGlzdGluZyBidWZmZXIgaWYgdGhlIHNjYWxlIGlzIG5vdCBjb3JyZWN0LgogICAg
IGlmIChpbWFnZUJ1ZmZlcikgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0g
bV9wYWludEluZm8tPmNvbnRleHQtPmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJ
bmNsdWRlRGV2aWNlU2NhbGUpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0g
bV9wYWludEluZm8tPmNvbnRleHQoKS5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5
SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgSW50U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94
ID0gZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIEludFNpemUg
YnVmZmVyU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0
aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRl
ZEJvdW5kaW5nQm94LmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogICAgICAgICBp
ZiAoYnVmZmVyU2l6ZSAhPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkpCkBAIC0zNDQsMTcg
KzM1MCwxNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3
IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdl
QnVmZmVyKSB7Ci0gICAgICAgIGlmICgoaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6
ZSgpKSwgdHJ1ZSkpKSB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVu
ZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgICAgICBidWZm
ZXJlZFJlbmRlcmluZ0NvbnRleHQtPnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRp
bmdCb3gueSgpKTsKKyAgICAgICAgaWYgKChpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250
ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3gu
c2l6ZSgpKSwgdHJ1ZSkpKSB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlcmVk
UmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICBi
dWZmZXJlZFJlbmRlcmluZ0NvbnRleHQudHJhbnNsYXRlKC1ib3VuZGluZ0JveC54KCksIC1ib3Vu
ZGluZ0JveC55KCkpOwogICAgICAgICAgICAgUGFpbnRJbmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWlu
dEluZm8pOwotICAgICAgICAgICAgYnVmZmVyZWRJbmZvLmNvbnRleHQgPSBidWZmZXJlZFJlbmRl
cmluZ0NvbnRleHQ7CisgICAgICAgICAgICBidWZmZXJlZEluZm8uc2V0Q29udGV4dChidWZmZXJl
ZFJlbmRlcmluZ0NvbnRleHQpOwogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+
KCptX3JlbmRlcmVyKS5wYWludEZvcmVncm91bmQoYnVmZmVyZWRJbmZvKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWludEluZm8t
PmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGlu
Z0JveCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOWEyM2MyNTEyM2I4N2VjMjlj
ZmRhMGNlYzdlYzI0NTY1OTg0M2Q4YS4uNDYzODRjNDhlYTBmOGFlNGE4OGI2NWMxMjdlMThkY2Yx
ZmMzY2ZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSk7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciosIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKLSAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0Ns
ZWFyKTsKKyAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVU
b0NsZWFyKTsKIAogICAgIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxp
bmdGYWN0b3IoY29uc3QgUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9y
bSBjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25z
dCBSZW5kZXJPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGQxYTc4Mzg5YTE1NjRjNDRhZTEyNmQ0ZDFlYWExZTA2
NDk3ZWNiYjMuLjhiODAxNGI2MDEzZmZjYmMwYmQwMDQ2MzFhODNkNTA2ZWYwOGM1ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApA
QCAtNDksNyArNDksNyBAQCBSZW5kZXJTVkdUZXh0JiBTVkdSb290SW5saW5lQm94OjpyZW5kZXJT
VkdUZXh0KCkKIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5p
dCkKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5k
IHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQo
IXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFp
bnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgYm9vbCBpc1ByaW50
aW5nID0gcmVuZGVyU1ZHVGV4dCgpLmRvY3VtZW50KCkucHJpbnRpbmcoKTsKICAgICBib29sIGhh
c1NlbGVjdGlvbiA9ICFpc1ByaW50aW5nICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2Jq
ZWN0OjpTZWxlY3Rpb25Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZDNmMjg1NTdl
MDYyNzM4NmQwNWNiZjNlYzBmNmY5N2Y1NTY3ZTVhLi5mZDY5ZmE0ODkyOTViMDJkYjAwY2JmNWRi
ZTM3MDI1YzYxYzgwNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjYyLDEzICsyNjIs
MTMgQEAgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUdseXBoVG8KICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTVkdHbHlwaFRvUGF0aFRyYW5zbGF0b3I+KHRleHRSdW4sIGdseXBoQnVmZmVyLCBwb2ludCwg
KnN2Z0ZvbnREYXRhLCAqZm9udEVsZW1lbnQsIGZyb20sIG51bUdseXBocywgc2NhbGUsIGlzVmVy
dGljYWxUZXh0KTsKIH0KIAotdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NW
R0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGF1dG8gYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZSA9IHRoaXMtPmFjdGl2ZVBhaW50aW5nUmVzb3VyY2UoKTsKICAgICBpZiAo
IWFjdGl2ZVBhaW50aW5nUmVzb3VyY2UpIHsKICAgICAgICAgLy8gVE9ETzogV2UncmUgb25seSBz
dXBwb3J0aW5nIHNpbXBsZSBmaWxsZWQgSFRNTCB0ZXh0IHNvIGZhci4KICAgICAgICAgUmVuZGVy
U1ZHUmVzb3VyY2VTb2xpZENvbG9yKiBzb2xpZFBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdS
ZXNvdXJjZTo6c2hhcmVkU29saWRQYWludGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIHNvbGlkUGFp
bnRpbmdSZXNvdXJjZS0+c2V0Q29sb3IoY29udGV4dC0+ZmlsbENvbG9yKCkpOworICAgICAgICBz
b2xpZFBhaW50aW5nUmVzb3VyY2UtPnNldENvbG9yKGNvbnRleHQuZmlsbENvbG9yKCkpOwogICAg
ICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlID0gc29saWRQYWludGluZ1Jlc291cmNlOwogICAg
IH0KIApAQCAtMjc3LDE1ICsyNzcsMTYgQEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKIAogICAg
IEFTU0VSVChhY3RpdmVQYWludGluZ1Jlc291cmNlKTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNl
TW9kZSByZXNvdXJjZU1vZGUgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9k
ZVN0cm9rZSA/IEFwcGx5VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOwotICAgIGZvciAo
YXV0byB0cmFuc2xhdG9yID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKCpmb250LCBudWxs
cHRyLCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7IHRyYW5zbGF0b3ItPmNv
bnRhaW5zTW9yZVBhdGhzKCk7IHRyYW5zbGF0b3ItPmFkdmFuY2UoKSkgeworICAgIEdyYXBoaWNz
Q29udGV4dCogdXNlZENvbnRleHQgPSAmY29udGV4dDsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1v
ZGUgcmVzb3VyY2VNb2RlID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0
cm9rZSA/IEFwcGx5VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOworICAgIGZvciAoYXV0
byB0cmFuc2xhdG9yID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGZvbnQsIG51bGxwdHIs
IGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsgdHJhbnNsYXRvci0+Y29udGFp
bnNNb3JlUGF0aHMoKTsgdHJhbnNsYXRvci0+YWR2YW5jZSgpKSB7CiAgICAgICAgIFBhdGggZ2x5
cGhQYXRoID0gdHJhbnNsYXRvci0+cGF0aCgpOwotICAgICAgICBpZiAoYWN0aXZlUGFpbnRpbmdS
ZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0LCBy
ZXNvdXJjZU1vZGUpKSB7Ci0gICAgICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250
ZXh0LT5zdHJva2VUaGlja25lc3MoKTsKKyAgICAgICAgaWYgKGFjdGl2ZVBhaW50aW5nUmVzb3Vy
Y2UtPmFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBzdHlsZSwgdXNlZENvbnRleHQsIHJl
c291cmNlTW9kZSkpIHsKKyAgICAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRl
eHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5l
VGV4dD4ocmVuZGVyZXIoKSkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KHJl
bmRlcmVyKCkpLnNjYWxpbmdGYWN0b3IoKSk7Ci0gICAgICAgICAgICBhY3RpdmVQYWludGluZ1Jl
c291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIGNvbnRleHQsIHJlc291
cmNlTW9kZSwgJmdseXBoUGF0aCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgICAgICAgICB1c2VkQ29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRl
clNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpLnNjYWxpbmdGYWN0b3IoKSk7CisgICAgICAgICAg
ICBhY3RpdmVQYWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVy
ZXIsIHVzZWRDb250ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOworICAg
ICAgICAgICAgdXNlZENvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3Mp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDUwMWI5YzhmZjEw
NTI0YTQ5OGE2ZmU3NzdjYjY5OTk3NzQxZWRjMDQuLjlkODVmYmU3YmFhOWVkNDk3NTE4MjY4NmJl
M2IxZTkxN2EwNjQ5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0QWN0aXZlUGFpbnRpbmdSZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJj
ZSogb2JqZWN0KSB7IG1fYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IG9iamVjdDsgfQogCiAgICAg
dmlydHVhbCBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnRDYXNjYWRl
JiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFjdGVyLCBib29sIG1pcnJvciwgaW50IGN1
cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoLCBTdHJpbmcmIG5vcm1hbGl6
ZWRTcGFjZXNTdHJpbmdDYWNoZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdTVkdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwg
aW50IGZyb20sIGludCB0bywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQm
LCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGZsb2F0IGZsb2F0V2lkdGhVc2luZ1NWR0Zv
bnQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVk
LCBTdHJpbmcmIGdseXBoTmFtZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFw
cGx5U1ZHS2VybmluZyhjb25zdCBGb250KiwgV2lkdGhJdGVyYXRvciYsIEdseXBoQnVmZmVyKiwg
aW50IGZyb20pIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCA5NjFlMTk4OWU1NzJiYmI3MmE2ZTNlZTliYWEyNDA4YTFl
NjU4NGI4Li4wODE1M2MxYTkzZmEzNmYyNWUzMDY5Njk2MTg3NTMxZmJhMGM1OTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBJ
bnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6
ZSgzMDAsIDE1MCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQg
em9vbSwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAordm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWlu
ZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbV9wYWdl
KQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBTVkdJbWFnZTo6ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LAordm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29udGFpbmVy
UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwogICAgIHpvb21l
ZENvbnRhaW5lclJlY3Quc2NhbGUoem9vbSk7CiAKICAgICAvLyBUaGUgSW1hZ2VCdWZmZXIgc2l6
ZSBuZWVkcyB0byBiZSBzY2FsZWQgdG8gbWF0Y2ggdGhlIGZpbmFsIHJlc29sdXRpb24uCi0gICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIEZsb2F0U2l6ZSBp
bWFnZUJ1ZmZlclNjYWxlID0gRmxvYXRTaXplKHRyYW5zZm9ybS54U2NhbGUoKSwgdHJhbnNmb3Jt
LnlTY2FsZSgpKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpKTsKICAgICBB
U1NFUlQoaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9p
ZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9j
YXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVy
LT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVk
Q29udGFpbmVyUmVjdCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlTm9ybWFsKTsKLSAgICBpZiAoY29udGV4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkK
KyAgICBpZiAoY29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNv
bnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZm
ZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSwgVW5zY2FsZWQpOwpAQCAtMjE3LDEx
ICsyMTcsMTEgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBBZmZpbmVUcmFuc2Zvcm0g
dW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIHVuc2NhbGVk
UGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8g
aW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBjb250ZXh0LT5zZXREcmF3THVtaW5h
bmNlTWFzayhmYWxzZSk7CisgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7
CiAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVk
UGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0
LCBibGVuZE1vZGUpOwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOSwxNSArMjI5
LDE1IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJh
bWVWaWV3KCk7CiAgICAgQVNTRVJUKHZpZXcpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChlbmNsb3Np
bmdJbnRSZWN0KGRzdFJlY3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0
UmVjdCkpOwogCi0gICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LT5hbHBoYSgpOworICAgIGZsb2F0
IGFscGhhID0gY29udGV4dC5hbHBoYSgpOwogICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1Ry
YW5zcGFyZW5jeUxheWVyID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBi
bGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9ybWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9z
aXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGNvbnRleHQtPmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKKyAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFs
KTsKICAgICB9CiAKICAgICBGbG9hdFNpemUgc2NhbGUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CkBAIC0yNDcs
OCArMjQ3LDggQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICBGbG9hdFNpemUgdG9wTGVm
dE9mZnNldChzcmNSZWN0LmxvY2F0aW9uKCkueCgpICogc2NhbGUud2lkdGgoKSwgc3JjUmVjdC5s
b2NhdGlvbigpLnkoKSAqIHNjYWxlLmhlaWdodCgpKTsKICAgICBGbG9hdFBvaW50IGRlc3RPZmZz
ZXQgPSBkc3RSZWN0LmxvY2F0aW9uKCkgLSB0b3BMZWZ0T2Zmc2V0OwogCi0gICAgY29udGV4dC0+
dHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7Ci0gICAgY29udGV4dC0+
c2NhbGUoc2NhbGUpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0
T2Zmc2V0LnkoKSk7CisgICAgY29udGV4dC5zY2FsZShzY2FsZSk7CiAKICAgICB2aWV3LT5yZXNp
emUoY29udGFpbmVyU2l6ZSgpKTsKIApAQCAtMjU4LDEwICsyNTgsMTAgQEAgdm9pZCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmwKICAgICBpZiAodmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+
bGF5b3V0KCk7CiAKLSAgICB2aWV3LT5wYWludChjb250ZXh0LCBpbnRlcnNlY3Rpb24oY29udGV4
dC0+Y2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CisgICAgdmlldy0+
cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3Np
bmdJbnRSZWN0KHNyY1JlY3QpKSk7CiAKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5z
cGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICBzdGF0ZVNhdmVy
LnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA2
ZGY1YTFhNGU4ZTJiNTQ0NDIxNWI3NzVlMTQ1MDBmNWNiZmE0NzA0Li5mYWU4ZDBjODNlOTI0YTY3
NGYwMTEyMTZiODJlNWViM2JmMjA0MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaApAQCAtOTEsOSArOTEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYsIGNvbnN0IFVSTCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiwgQ29sb3JTcGFjZSwKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3Rm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsCiAgICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZH
U1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDEwNTM1NDgxODcy
OWY3ODU4NGZmYTM3ZWViYTViMTMwMTEwZTY1OTguLjE5YzQ3MWIyYzg5MjQwYzM1ZGNmNmVkOWJm
NjE2ZTM4ZjYxNTY3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIEZsb2F0U2l6ZSBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShy
b3VuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXplKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VG
b3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsCit2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogICAgIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWlu
ZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9w
LCBibGVuZE1vZGUpOwogfQogCi12b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAordm9pZCBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
ICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQogewogICAgIG1faW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5oCmluZGV4IGE0ZWVhYTlmNzYzYjZmM2U2MGMwZjNjMWE5NzA2M2UzYmFiMDJiMjAuLjk3
Njk1ZmRhOGY2YjllYzBkYzdiODk5ZjIwOTVkOWZhMDM1MTYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1
Niw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lv
bnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAg
ICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggMTU2NzQ0MzIyYjg0ODhiZjM4ZWE0YzNlZGNlYjA2Mjhi
YmU1MzgwMy4uZjA3MjUxOGY0NDE3NTExYzc5MTM5MGU5OTYyN2Y1YjVkMTdlNDhiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAKICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7Ci0gICAgICAg
IHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7Cisg
ICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3Jt
KTsKIAogICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1l
bnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4dE5vZGUtPmhhc1Jl
bGF0aXZlTGVuZ3RocygpKSB7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgLy8gSWYgd2UncmUgcmVmZXJlbmNpbmcg
YW4gZWxlbWVudCB3aXRoIHBlcmNlbnRhZ2UgdW5pdHMsIGVnLiA8cmVjdCB3aXRoPSIzMCUiPiB0
aG9zZSB2YWx1ZXMgd2VyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSB2aWV3cG9ydC4KICAgICAgICAg
ICAgIC8vIEJ1aWxkIHVwIGEgdHJhbnNmb3JtYXRpb24gdGhhdCBtYXBzIGZyb20gdGhlIHZpZXdw
b3J0IHNwYWNlIHRvIHRoZSBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4KICAgICAgICAgICAg
IGlmIChsZW5ndGhDb250ZXh0LmRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSkpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+Y29uY2F0Q1RNKG1ha2VNYXBCZXR3
ZWVuUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXplKSwgZGVzdFJlY3Qp
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShtYWtl
TWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIGRl
c3RSZWN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVudFRy
YW5zZm9ybWF0aW9uOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdEltYWdl
LT5jb250ZXh0KCktPmRyYXdJbWFnZShtX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1h
Z2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3Qp
OwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggNTEyYWY0MTk0Y2IyNTEzODE4ZDkxMTIzNDkx
ZjZkMjBlNDhhZjhiNC4uMDAyNWFlMjkzMDIxN2EyYWU2NjJmZjA0ZDZhMGI2NGM5YjRiZGRhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBA
IC0xMDIsNyArMTAyLDcgQEAgLSAodm9pZClfd2ViX2RyYXdBdFBvaW50OihOU1BvaW50KXBvaW50
IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0
Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0
UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICog
MjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCi0g
ICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQ
b2ludChwb2ludC54LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKKyAg
ICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9p
bnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAKICAg
ICAgICAgaWYgKCFmbGlwcGVkKQogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250
ZXh0LCAxLCAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4IDEyNzgwMjBiODVjNThiMmViM2E4Nzhj
M2IwM2IzMWQzZmU5ZmQzZGEuLmNmY2NkM2NkNjQ5MjY1MjE5NzZjNmJmMTg1NmI2ZThmYjQ1M2Rk
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC00ODIsNyArNDgyLDcgQEAgUmV0YWluUHRyPE5TSW1h
Z2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBp
Y2tlckl0ZW0KICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXct
PnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRC
ZWhhdmlvclNlbGVjdGlvbk9ubHkpOwogCi0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0
ZSgtdG9GbG9hdFNpemUocmVjdC5sb2NhdGlvbigpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCku
dHJhbnNsYXRlKC10b0Zsb2F0U2l6ZShyZWN0LmxvY2F0aW9uKCkpKTsKICAgICBmcmFtZVZpZXct
PnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCksIHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsK
IAogICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2Vs
ZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDFlNzM4ZDNk
ZTUzMDg4MmI2ZWZlOTFjOGFhODU5ZDhlNGUxOGJlNTkuLmU2ZjUzNzhhMGEwOTEyNjkxNDRjNzVk
NjIxODI5MWNmMThjOGI1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpA
QCAtNjQ0LDkgKzY0NCw5IEBAIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50
c09ubHk6KEJPT0wpY29udGVudHNPbmx5CiAgICAgfQogICAgIAogICAgIGlmIChjb250ZW50c09u
bHkpCi0gICAgICAgIHZpZXctPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJl
Y3QocmVjdCkpOworICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2lu
Z0ludFJlY3QocmVjdCkpOwogICAgIGVsc2UKLSAgICAgICAgdmlldy0+cGFpbnQoJmNvbnRleHQs
IGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgICAgICB2aWV3LT5wYWludChjb250ZXh0LCBl
bmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKIAogICAgIGlmIChzaG91bGRGbGF0dGVuKQogICAgICAg
ICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBj
NGMzNjE5OWVkOWU5ZmRjNzY2ZWZlMDg0NTczNzljNzI4NWViMzJlLi4xNmMzYTQ3OWE1MjNlMWJi
YzRmYTc3NWVhOTA5ZGIwOGQxMGMyYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBhaW50KCkKICAgICBpZiAobV9wbHVnaW4t
PmlzVHJhbnNwYXJlbnQoKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QoZGly
dHlSZWN0KTsKIAotICAgIG1fcGx1Z2luLT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0KCksIGRp
cnR5UmVjdCk7CisgICAgbV9wbHVnaW4tPnBhaW50KCpncmFwaGljc0NvbnRleHQsIGRpcnR5UmVj
dCk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1
Z2luUHJveHk6OlVwZGF0ZShkaXJ0eVJlY3QpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggZjc0MjU1
OWUzZWQwYjVmMjZmYjMwMTk2YTI1MWRkZTVlY2YyNDY3MC4uMzkxZWFjMWI0MjdhMGI1ZGMzZjk1
NDRjOWMwOWMzYmJlYzg2MmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
SW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYg
cmUKIAogICAgIFBhaW50QmVoYXZpb3Igb2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFp
bnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2
aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0Nv
bnRleHQuZ2V0KCksIHJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3Vt
ZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90
KCpncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFt
ZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhh
dmlvcihvbGRQYWludEJlaGF2aW9yKTsKIAogICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4
IDUwMTk3NzBhOWU0NmQwZWJmNjVjODZlYjRiNzZlNGY2YzMyZGRkMmUuLjY1ZmJlNzNiNWZmN2Jm
YmE3ZTIwMjQ0ZjhiMjNjMmE4MWJlMmM3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hv
dE9wdGlvbnMgb3AKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlv
cik7CiAgICAgb3duZXJEb2N1bWVudC51cGRhdGVMYXlvdXQoKTsKIAotICAgIGZyYW1lVmlldy0+
cGFpbnQoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWludFJlY3QpOworICAgIGZyYW1lVmlldy0+
cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgcGFpbnRSZWN0KTsKICAgICBmcmFtZVZpZXctPnNldFBh
aW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRl
eCA5OWY5MTI3MjdkMzU3NjgzMTY3NTJjYTU0Nzc2ZWRiOGY0NTNlM2E1Li4zM2I5MTNhOWZiZDk2
NzM4ZmE1OGNmNzVkNTBhMTUxMjc0ZDBhNTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luOjpkZXN0cm95KCkKICAgICBt
X3RpbWVycy5jbGVhcigpOwogfQogICAgIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIE5l
dHNjYXBlUGx1Z2luOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKIHsKICAgICBBU1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIApAQCAtNzY4
LDcgKzc2OCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFw
c2hvdCgpCiAgICAgLy8gd2hpY2ggd2UgY3VycmVudGx5IGRvbid0IGhhdmUgaW5pdGlhdGVkIGlu
IHRoZSBwbHVnLWluIHByb2Nlc3MuCiAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRl
bnRzU2NhbGVGYWN0b3IoKSwgY29udGVudHNTY2FsZUZhY3RvcigpKSk7CiAKLSAgICBwbGF0Zm9y
bVBhaW50KGNvbnRleHQuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgbV9wbHVnaW5TaXplKSwg
dHJ1ZSk7CisgICAgcGxhdGZvcm1QYWludCgqY29udGV4dCwgSW50UmVjdChJbnRQb2ludCgpLCBt
X3BsdWdpblNpemUpLCB0cnVlKTsKIAogICAgIHJldHVybiBiaXRtYXA7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCmluZGV4IGU0NjgxNGE0YTg1ZTFjYTU0NDRlOTFjMTI2NjYyNDE4MWE2NTcyYjku
LjI5ZTIyYzljZWQ2NmUwN2VmZTk1NWE1ZjFmZjM4NjBiOTc3YjU5ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oCkBAIC0xNzcsNyArMTc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBsYXRmb3Jt
SW52YWxpZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUdl
b21ldHJ5RGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFuZ2Uo
KTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzU25hcHNob3QgPSBmYWxzZSk7
CisgICAgdm9pZCBwbGF0Zm9ybVBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90ID0gZmFsc2UpOwog
CiAgICAgYm9vbCBwbGF0Zm9ybUhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYp
OwogICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIC8vIFBsdWdpbgogICAgIHZpcnR1
YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3Qp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCA4NDhi
MzM4MmUwMjBlMmMyMmE0MGFiNWNjOTI2YTcwYjJhMzA5YmRiLi42Zjc1MzE5MWFmOThlZGFlMmJm
MWI1MjYyZmViODI3NGE4MjRlMTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5N
YWMubW0KQEAgLTQ0NCw5ICs0NDQsOSBAQCBzdGF0aWMgRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJz
Rm9yRXZlbnQoY29uc3QgV2ViRXZlbnQmIGV2ZW50KQogCiAjZW5kaWYKIAotdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90KQordm9pZCBOZXRzY2FwZVBsdWdpbjo6
cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90KQogewotICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNv
bnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgcGxh
dGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIHN3aXRjaCAo
bV9ldmVudE1vZGVsKSB7CiAgICAgICAgIGNhc2UgTlBFdmVudE1vZGVsQ29jb2E6IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4
IGFkZWY2Y2IzNjk2NWY4MDQyZDBjYzAyYWMxZmNkYTQ3ZmM5MWYwNjguLjRjNTI1NmQ1YTFjYWNl
ZjIyOTg1ZTU0NmI4MTkxYTA0MWZhNjk4YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMTE1LDggKzExNSw4IEBAIHByaXZh
dGU6CiAgICAgLy8gUGx1Z2luIGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6
ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRl
cykgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlS
ZWN0SW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hv
dCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KaW5kZXggNjFjZjRmZWE4MWExYzg2MTVjZmJmZDgyM2YwZmIwMDA4NjQ4NmE1
ZS4uMTExYTIyNWM3MTk3MmNlYzA1ZTZiYmNiZmRmNTEyOGUxYzA0YzI5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTEx
MTEsOSArMTExMSw5IEBAIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95KCkKICAgICBbbV9jb250ZW50
TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogfQogCi12b2lkIFBERlBsdWdpbjo6dXBkYXRl
Q29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQordm9pZCBQREZQ
bHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCkKIHsKLSAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygp
KTsKKyAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpOwog
CiAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikKICAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBAIC0xMTMyLDcgKzExMzIsNyBAQCB2b2lkIFBERlBsdWdp
bjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4
dFJlZiBjb250ZQogICAgIGlmIChsYXllciA9PSBtX3Njcm9sbENvcm5lckxheWVyKSB7CiAgICAg
ICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCA9IHRoaXMtPnNjcm9sbENvcm5lclJlY3QoKTsK
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyUmVjdC54KCks
IC1zY3JvbGxDb3JuZXJSZWN0LnkoKSk7Ci0gICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LT5wYWludFNjcm9sbENvcm5lcigwLCAmZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxDb3JuZXJSZWN0
KTsKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50U2Nyb2xsQ29ybmVyKG51
bGxwdHIsIGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsQ29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgCkBAIC0xMTQ3LDcgKzExNDcsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGFp
bnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBj
b250ZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0
ZSgtc2Nyb2xsYmFyLT54KCksIC1zY3JvbGxiYXItPnkoKSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWlu
dCgmZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKKyAgICBzY3JvbGxi
YXItPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAK
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdpbjo6c25hcHNob3QoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAppbmRleCBmNmQxYzA1NDc0NDJm
OTNjYmE3N2QwYzExNTA4MjRhZmU1YjYxMmU0Li4xNTQ5M2Y4NmExNzMwYjA3MTM4ZDZhZjQyNDdj
NjRiNGQyMDljMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUGx1Z2luOjpkZXN0cm95UGx1Z2luKCkK
ICAgICBtX3BsdWdpbkNvbnRyb2xsZXIgPSAwOwogfQogCi12b2lkIFBsdWdpbjo6dXBkYXRlQ29u
dHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCopCit2b2lkIFBsdWdpbjo6dXBkYXRlQ29udHJvbFRp
bnRzKEdyYXBoaWNzQ29udGV4dCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAppbmRleCAxMWNmMTQ5MTM4ZjgwYWY0ODNmYzAwYzE2ZTMyOWJlYmMw
M2UwYWU4Li5mMjc5ZWJiY2Y0NTc5YTk5ZDY4ZjBhMzc3ZTIxOGNhNjNiN2I2OGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0xMjYsMTAgKzEyNiwx
MCBAQCBwdWJsaWM6CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0byBwYWludCBpdHNlbGYg
aW50byB0aGUgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dC4gVGhlIHBhc3NlZC1pbiBjb250ZXh0IGFu
ZAogICAgIC8vIGRpcnR5IHJlY3QgYXJlIGluIHdpbmRvdyBjb29yZGluYXRlcy4gVGhlIGNvbnRl
eHQgaXMgc2F2ZWQvcmVzdG9yZWQgYnkgdGhlIGNhbGxlci4KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAwOwogCiAgICAgLy8g
SW52YWxpZGF0ZSBuYXRpdmUgdGludGFibGUgY29udHJvbHMuIFRoZSBwYXNzZWQtaW4gY29udGV4
dCBpcyBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRy
b2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gUmV0
dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIHN1cHBvcnRzIHNuYXBzaG90dGluZyBvciBub3QuCiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3QgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXgg
ZTdjNTNkNzhhNjljNjBkYjgwYTg2NjY0ZTc3Zjc2NzQzMGQ5NzMyOS4uNmQ3YjQ2ZDJjNjhmYmJj
YzRiNTliYTY0MmNjNzFkMDNjODBlY2M3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBQ
bHVnaW5Qcm94eTo6ZGVzdHJveSgpCiAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVQbHVnaW5Qcm94
eSh0aGlzKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgUGx1Z2luUHJv
eHk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpCiB7CiAgICAgaWYgKCFuZWVkc0JhY2tpbmdTdG9yZSgpIHx8ICFtX2JhY2tp
bmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUGx1Z2lu
UHJveHk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlCiAgICAgICAgIG1fcGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERh
dGEgPSB0cnVlOwogICAgIH0KIAotICAgIG1fYmFja2luZ1N0b3JlLT5wYWludCgqZ3JhcGhpY3ND
b250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGRpcnR5UmVjdC5sb2NhdGlvbigpLCBkaXJ0
eVJlY3QpOworICAgIG1fYmFja2luZ1N0b3JlLT5wYWludChncmFwaGljc0NvbnRleHQsIGNvbnRl
bnRzU2NhbGVGYWN0b3IoKSwgZGlydHlSZWN0LmxvY2F0aW9uKCksIGRpcnR5UmVjdCk7CiAKICAg
ICBpZiAobV93YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNlVG9VcGRhdGUpIHsKICAgICAgICAgbV93
YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNlVG9VcGRhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKaW5kZXggOWNkZmMxOTUyNWFh
YjliNmEzMWQ0NTI2ZmQ0MzY2Y2UyZjc1NzljMi4uNzdhZDRlNjkwN2VlNGUxZjU5Mjk3OWIwZjQ2
ZDc4Y2M3MjEzMGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGluaXRp
YWxpemVTeW5jaHJvbm91c2x5KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBz
aG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiYWY1
NjcxZWNhNjZkNTFlZGM2NzE4MjI0NGQwMDljNTJjN2I1ZDUwLi5jMzk2ZTg0ODZlOWI1ZTFmNWYy
MDg2OTkwY2NhYzkzYzFlMzMyYTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03OTIsMTMgKzc5MiwxMyBAQCB2b2lkIFBsdWdp
blZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogICAgIHZp
ZXdHZW9tZXRyeURpZENoYW5nZSgpOwogfQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLykKK3ZvaWQg
UGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiAvKmRpcnR5UmVjdCovKQogewogICAgIGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXpl
ZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6
OlJlc3RhcnRpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpIHsKLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKSB7CisgICAgICAgIGlmIChj
b250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCiAgICAgICAgICAgICBtX3BsdWdpbi0+dXBk
YXRlQ29udHJvbFRpbnRzKGNvbnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODEw
LDE0ICs4MTAsMTQgQEAgdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8pCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QpIHsKLSAgICAgICAgbV90cmFuc2ll
bnRQYWludGluZ1NuYXBzaG90LT5wYWludCgqY29udGV4dCwgY29udGVudHNTY2FsZUZhY3Rvcigp
LCBmcmFtZVJlY3QoKS5sb2NhdGlvbigpLCBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QtPmJv
dW5kcygpKTsKKyAgICAgICAgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90LT5wYWludChjb250
ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCksIG1fdHJh
bnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+Ym91bmRzKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4
dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBjb29yZGluYXRlIHN5c3RlbSBzbyB0aGF0IHRoZSBvcmln
aW4gaXMgaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgcGx1Zy1pbi4KLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoZnJhbWVSZWN0KCkubG9jYXRpb24oKS54KCksIGZyYW1lUmVjdCgpLmxvY2F0
aW9uKCkueSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShmcmFtZVJlY3QoKS5sb2NhdGlvbigp
LngoKSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKS55KCkpOwogCiAgICAgbV9wbHVnaW4tPnBhaW50
KGNvbnRleHQsIHBhaW50UmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA1NTEwNjAyM2RlNmQ5OGM5MTA2Y2FlNGMyYmNiYTky
NGFhMzIwZTM3Li43OGE4ZGNiODgzZjBkMWJhMjI3ZWI4ZjhlY2M5ZGVjZGEzODE0ZjZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE3
MSw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAgICAgdmly
dHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDQwNDJjYzkxZTFm
OTIxMDY3YzU1MDA2OTVmMTc2ZjY4OWZmZjJjNDMuLmZiMTY5NzM3YmVlYWI1NjYwYzFjMGY2MDJj
ZTQ3ODYxODA2MDc0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3Qo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7
CiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAocmVjdCk7CiAKLSAgICBtX21haW5GcmFtZS0+Y29y
ZUZyYW1lKCktPnZpZXcoKS0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CisgICAgbV9t
YWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgcmVj
dCk7CiB9CiAKIGRvdWJsZSBXZWJQYWdlOjp0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0CkBAIC0xNzYz
LDcgKzE3NjMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6
ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgogICAgIGlmIChvcHRpb25zICYg
U25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMpCiAgICAgICAgIGNvb3JkaW5hdGVTcGFj
ZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOwogCi0gICAgZnJhbWVWaWV3LT5wYWludENv
bnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBzbmFwc2hvdFJlY3QsIHNo
b3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOworICAgIGZyYW1lVmlldy0+cGFp
bnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgc2hv
dWxkUGFpbnRTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAKICAgICBpZiAob3B0aW9ucyAm
IFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xlKSB7CiAgICAgICAgIEZsb2F0
UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNlbGVj
dGlvbigpLnNlbGVjdGlvbkJvdW5kcygpOwpAQCAtMTgxOSw3ICsxODE5LDcgQEAgUGFzc1JlZlB0
cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNu
YXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xv
cjo6dHJhbnNwYXJlbnQpOwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAK
LSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQu
Z2V0KCksIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZp
ZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KCpncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNs
dWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAgICAgZnJh
bWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsKICAg
ICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobnVsbHB0cik7Cg==
</data>
<flag name="review"
          id="285405"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260208</attachid>
            <date>2015-08-28 20:58:20 -0700</date>
            <delta_ts>2015-08-28 21:20:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828205809.patch</filename>
            <type>text/plain</type>
            <size>714759</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5k
ZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4Nzlm
ZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzExNDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRh
dGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkK
K3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0
aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0K
IAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7
CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJlY3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6Omlu
dmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEy
ICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmlldzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpbnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9p
ZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICht
X2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQot
ICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0
KCksIHJlY3QpOworICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAh
bGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3Jv
bGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAg
aWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMg
KzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVy
KGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3QoKSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFp
bnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmll
dzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBz
dGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24gPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
InBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAgSW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNj
cm9sbEljb25Qb2ludDsKICAgICBpZiAocGFyZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0g
cGFyZW50KCktPndpbmRvd1RvQ29udGVudHMoaWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRy
YXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFuU2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJH
QiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwg
cmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xU
aW50cygpKQogICAgICAgICByZXR1cm47CiAKICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVh
V2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsxMjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0K
IAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCks
IHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAK
ICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVDb250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwgLXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAtc2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3Vt
ZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQb3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29u
dGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVj
dCkpOworICAgICAgICAgICAgY29udGV4dC5jbGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRl
bnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlSZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAg
dm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cgcGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYg
KCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYmIChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92
ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3Qg
PSByZWN0OwogICAgICAgICBJbnRSZWN0IHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRp
b24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7
CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KElu
dFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNv
bnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMu
c2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRTY3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdE
aXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTksMTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3
Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAgICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVu
dHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJoYW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmll
dzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVy
aGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFp
bnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYg
aG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1Jl
Y3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhl
bWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFu
Z1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5nQXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12
b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmll
dzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92
ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZlcnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4
MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFhOGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9m
IHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwog
CiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2
aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5k
IGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRl
OwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9Q
YW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50
UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBhblNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50
UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xs
SWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3Jv
bGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFy
Q29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJS
ZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5p
bmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFy
KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25z
dCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNj
cm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNh
bGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQgY2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFz
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVjdGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVudFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZp
cnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVy
aGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9u
dGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250
ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggYzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFi
NGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJjN2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2
b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQcm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigp
OwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAo
Y29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRy
b2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0
aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFn
ZVJlY3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlz
LCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisgICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywg
Y29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFt
YWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdl
YjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNlMGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5
NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAg
LTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9y
dGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3Nl
ZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5
ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4xNmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2
NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAg
LTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBh
cnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4
dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7
IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkg
eyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBz
dGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVy
UmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0
IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9s
bFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFz
KFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVyaGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGlj
c0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1
OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYyYTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAw
YjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSArMjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNj
cm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWlu
ZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xs
VmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1
ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJldHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdS
ZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0Fy
ZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYg
KCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+Zmls
bFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOwor
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGludGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdS
ZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5n
UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2
ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIxMzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0
ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxP
dmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4
IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3
NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAK
QEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhCb3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRy
b2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAot
dm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5k
bGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4KICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxh
eWJhY2siKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2ly
ZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0
LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAg
IGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShy
ZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwor
ICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEpOwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91
dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTksIDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2
b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRgogICAgIG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQo
ODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUuY2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0
LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaAppbmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2Ni
ZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFiNGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEg
Y29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9vbWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwg
dm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRSZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBT
Y3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VTY2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2Fs
ZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRy
b2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVj
dCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywgU2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2Nh
bGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2NhbGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21l
IGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2YgdGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNo
ZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAgV2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAog
ICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBjb21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3Qg
dG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNhbiBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9s
LgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2Fs
ZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFp
bnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpv
b21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFjdG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsK
IAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjph
ZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAg
ICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMgaW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dp
ZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3
ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNkYjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQg
eCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkp
KTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJbnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50
UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBh
aW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5
MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIyOTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMx
ZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRvQm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkK
K3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0JveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXplLCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7
CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJbWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBm
bG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNwZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBA
QCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9Cb3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwogICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0
KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RT
aXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0ltYWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQot
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAg
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJh
bnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0KIAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJ
bWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KSBjb25zdAogewogICAgIC8vIFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRo
ZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0gIndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcs
OCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYg
bmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsK
LSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJlbGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2
KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29udGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUs
IHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFt
ZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28K
ICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9hdFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAg
b3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAgICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRs
aW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1
MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJhMDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3
MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVD
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApA
QCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1
YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRn
ZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQyNTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcu
LmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMxYWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lk
Z2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIy
Zjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwx
MyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29k
ZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYg
KHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5k
cmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAgaWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkp
IHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0s
IHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAg
ICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQu
c2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1
NzNmNGJlM2MwNmJhNC4uOWZhMjQ5ZTRkNjQ5MWJlZTc2YTQwNmE4MTA4ZGRmNWVmNjhmMGQzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBA
IC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9u
KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3Jz
IGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KQEAgLTIwMyw3ICsyMDMsNyBAQCBwcm90ZWN0ZWQ6
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBv
dmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkpCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4
IGQ3NzQ2YTlmODEyNDhhMzJkMWY0NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFm
MTg5OTQ2MzY2OWY0YTEwNGM5NWM5MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAg
LTQxLDY4ICs0MSw2OCBAQCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UoSW1hZ2UqIGZyb21JbWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5l
clNpemUoc2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Bl
cmF0aW9uLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0
aWMgdm9pZCBkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSogaW1hZ2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwg
Y29uc3QgRmxvYXRTaXplJiB0YXJnZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUg
PSBpbWFnZS0+c2l6ZSgpOwogCiAgICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdo
ZW4gcGFpbnRpbmcsIHNvIHdlIGhhdmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNj
dXJhdGVseSBwYWludCBvbmUgYXQgYSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNw
YXJlbmN5TGF5ZXIgPSBpbWFnZS0+aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cGVyYXRpb24pOwogCiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250
ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0
LT5zZXRBbHBoYShvcGFjaXR5KTsKKyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsK
IAogICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKHRhcmdldFNpemUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJn
ZXRTaXplLmhlaWdodCgpIC8gaW1hZ2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJh
d0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAg
Y29udGV4dC5zY2FsZShGbG9hdFNpemUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndp
ZHRoKCksIHRhcmdldFNpemUuaGVpZ2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7
CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRy
YW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhp
bmcgaWYgZWl0aGVyIG9mIHRoZSBpbWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1f
ZnJvbUltYWdlID09IEltYWdlOjpudWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51
bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKIAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVu
Y3lMYXllcigxKTsKKyAgICBjb250ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9j
cm9zc2ZhZGVTaXplKSk7CisgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwog
CiAgICAgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCAxIC0gbV9wZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRy
YXdDcm9zc2ZhZGVTdWJpbWFnZShjb250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdo
dGVyLCBtX3BlcmNlbnRhZ2UsIG1fY3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOworICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
IH0KIAotdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAg
Y29udGV4dC0+dHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQu
Y2xpcChkc3RSZWN0KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVj
dC55KCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAg
ICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lk
dGgoKSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0
LnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJl
Y3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUo
LXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29u
dGV4dCk7CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBB
Y2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JT
cGFjZURldmljZVJHQiwgY29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0
ZWQgOiBVbmFjY2VsZXJhdGVkKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBGaWxsIHdpdGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAg
ICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCk7CiAgICAgZHJhd0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0
aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRl
eCA1NmE5ODc1MTRjYjcxYTE3YjRjNzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNi
ZDRiMzI5ZDYyOGRhZTM3YjZhNWY3MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5
LDEzICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9h
dCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIGRyYXdDcm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJ
bWFnZSogbV9mcm9tSW1hZ2U7CiAgICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4
ZjNkYzkyZDExM2ZjMjBhNGY5MTA1YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZj
Y2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuY3BwCkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6
dXBkYXRlKFJlZlB0cjxGb250U2VsZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1f
dHlwZXNldHRpbmdGZWF0dXJlcyA9IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAK
LWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQg
dG8sIEN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNv
bnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwg
aW50IHRvLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
KSBjb25zdAogewogICAgIC8vIERvbid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5n
IGN1c3RvbSBmb250cyB0aGF0IGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8v
IGV4Y2VwdCBpZiB0aGUgJ2ZvcmNlJyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2gg
Y2FzZSBpdCB3aWxsIHVzZSBhIGZhbGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9u
dENhc2NhZGU6OmRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdAogICAgIHJldHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBw
b2ludCwgZnJvbSwgdG8pOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRv
bWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1h
cmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewog
ICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4
LDcgKzEyOTgsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JT
aW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFs
QWR2YW5jZTsKIH0KIAotZmxvYXQgRm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2lt
cGxlVGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8g
VGhpcyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9y
IGVhY2ggZ2x5cGguCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEz
MTQsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNp
bXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNp
bXBsZVRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxv
YXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVu
LCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEz
MjUsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNv
bnRleHQsIHJ1biwgZ2x5cGhCdWZmZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5p
dGlhbEFkdmFuY2UsIHBvaW50LnkoKSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNv
bnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxv
YXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5V
U0VEX1BBUkFNKHJ1bik7CkBAIC0xMzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwKICAgICAgICAgaWYgKG5leHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0
ICE9IG9mZnNldCkgewogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVu
ZGVyaW5nQ29udGV4dCAmJiBmb250RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAg
cmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhC
dWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAg
ICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9u
dERhdGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0
UG9pbnQpOwogICAgICAgICAgICAgZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0ds
eXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250
ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZy
b20sIHN0YXJ0UG9pbnQpOwogCiAgICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAg
ICAgICAgICAgIGZvbnREYXRhID0gbmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBA
QCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlm
IChyZW5kZXJpbmdDb250ZXh0ICYmIGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVu
ZGVyaW5nQ29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZm
ZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAg
IHJlbmRlcmluZ0NvbnRleHQtPmRyYXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlw
aEJ1ZmZlciwgbGFzdEZyb20sIG5leHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAg
ICBlbHNlCiAjZW5kaWYKICAgICB7Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERh
dGEsIGdseXBoQnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9p
bnQpOworICAgICAgICBkcmF3R2x5cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIs
IGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBv
aW50LnNldFgobmV4dFgpOwogICAgIH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBz
dGF0aWMgZmxvYXQgb2Zmc2V0VG9NaWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsCiAgICAgcmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1
ZmZlci5mb250QXQoaSksIGdseXBoQnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRD
YXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRv
bWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBH
bHlwaERhdGEgbWFya0dseXBoRGF0YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0
YShtYXJrLCBtYXJrR2x5cGhEYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNi
NzM3NGE4NjIuLjE2NmI5MGU4NzVhY2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMz
LDkgKzEzMyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9y
PiYmKSBjb25zdDsKIAogICAgIGVudW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQ
YWludElmRm9udE5vdFJlYWR5LCBVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VC
Q09SRV9FWFBPUlQgZmxvYXQgZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1
biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21G
b250Tm90UmVhZHlBY3Rpb24gPSBEb05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAg
IHZvaWQgZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5
cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNv
bnN0OwotICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGlu
dCBmcm9tID0gMCwgaW50IHRvID0gLTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0
IGRyYXdUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9u
ID0gRG9Ob3RQYWludElmRm9udE5vdFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZy
b20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0
byA9IC0xKSBjb25zdDsKIAogICAgIERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0
aFJlY3QoY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0
IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBw
cml2YXRlOgogCiAgICAgLy8gUmV0dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4K
ICAgICBmbG9hdCBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1
biYsIGludCBmcm9tLCBpbnQgdG8sIEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3Qg
PSBOb3RGb3JUZXh0RW1waGFzaXMpIGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZy
b20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRl
eHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZv
aWQgZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25z
dCBHbHlwaEJ1ZmZlciYsIEZsb2F0UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNp
c01hcmtzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBm
bG9hdCBkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4m
LCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwg
aW50IHRvKSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7
CisgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0
UnVuJiwgY29uc3QgR2x5cGhCdWZmZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9h
dFBvaW50JikgY29uc3Q7CiAgICAgZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3Qg
VGV4dFJ1biYsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhP
dmVyZmxvdyogPSAwKSBjb25zdDsKICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVU
ZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEds
eXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChj
b25zdCBUZXh0UnVuJiwgTGF5b3V0UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0
bykgY29uc3Q7CkBAIC0yMzgsOCArMjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMg
dGhlIGluaXRpYWwgaW4tc3RyZWFtIGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2
YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5
cGhCdWZmZXImLCBGb3JUZXh0RW1waGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29u
c3Q7Ci0gICAgZmxvYXQgZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRl
eHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAg
dm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRl
eHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZs
b2F0IGZsb2F0V2lkdGhGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25z
dCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0Owog
ICAgIGludCBvZmZzZXRGb3JQb3NpdGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91
dFJlY3QmIHNlbGVjdGlvblJlY3QsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIx
NzllZWZiMmFjOWY3YWU1NTZlMzc1YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4
NzdlNmRlODllYzQzYTBlNWI4ZTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0
cnVlKSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEy
MDBlYTNiOGI0MmVlNmQ5ODQxZTUyOTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBi
YmE5YzU5YTU4YTRmYjIxOGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudElt
YWdlOjp+R3JhZGllbnRJbWFnZSgpCiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24pCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENv
bnRleHQtPmNsaXAoZGVzdFJlY3QpOwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJl
Y3QueCgpLCBkZXN0UmVjdC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihkZXN0Q29udGV4dCk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJl
Y3QpOworICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0Lnko
KSk7CiAgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAg
ZGVzdENvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53
aWR0aCgpLCBkZXN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0
Q29udGV4dC0+dHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0
Q29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3Jh
ZGllbnQuZ2V0KCkpOworICAgICAgICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJl
Y3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNy
Y1JlY3QueSgpKTsKKyAgICBkZXN0Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBzaXplKCkpLCAqbV9ncmFkaWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2
b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhl
IGdlbmVyYXRvciB0byBwcm92aWRlIHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRl
cnMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVu
dEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHMKICAgICBtX2dyYWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3
aW5nKGFkanVzdGVkU2l6ZSwgYWRqdXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0
aGUgZGVzdGluYXRpb24gY29udGV4dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJl
c29sdXRpb24KLSAgICBBZmZpbmVUcmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4
dC0+Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7
CisgICAgQWZmaW5lVHJhbnNmb3JtIGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RN
KEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91
YmxlIHhTY2FsZSA9IGZhYnMoZGVzdENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5
U2NhbGUgPSBmYWJzKGRlc3RDb250ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zv
cm0gYWRqdXN0ZWRQYXR0ZXJuQ1RNID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3Mywy
MyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFz
aCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8
fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVz
dGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRo
QnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBkZXN0Q29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNp
emUsIG1fZ3JhZGllbnQtPmhhc0FscGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZl
ciB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFk
anVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdp
dGhCdWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJ
bWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRT
aXplLCBtX2dyYWRpZW50LT5oYXNBbHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdl
QnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUg
Z2VuZXJhdGVkIGltYWdlLgotICAgICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRp
ZW50KTsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAg
ICAgICBtX2NhY2hlZEdlbmVyYXRvckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2Nh
Y2hlZEFkanVzdGVkU2l6ZSA9IGFkanVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRl
eHQtPmRyYXdMdW1pbmFuY2VNYXNrKCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVt
aW5hbmNlTWFzaygpKQogICAgICAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRv
THVtaW5hbmNlTWFzaygpOwogICAgIH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNw
YWNlU2l6ZShzcGFjZVNpemUoKSk7Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VN
YXNrKGZhbHNlKTsKKyAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7
CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBt
X2NhY2hlZEltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNS
ZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0
ZU9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5
NjNhMGRmNGM0ZWFiMzdhLi42ZWM1NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdl
KCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
CiAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSkgb3ZlcnJpZGU7CiAKICAgICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+
LCBjb25zdCBGbG9hdFNpemUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4
YTYxZjQwZjQ3YTc3ZjI3MzEuLjMwMzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gZm9udC5kcmF3VGV4dCh0aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0
dXJuIGZvbnQuZHJhd1RleHQoKnRoaXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNj
YWRlLCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJv
bSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUm
IGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZm
b250LCBidWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRy
YXdHbHlwaHMoKnRoaXMsIGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1
biwgbWFyaywgcG9pbnQsIGZyb20sIHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0
aGlzLCBydW4sIG1hcmssIHBvaW50LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JU
TCA/IFJUTCA6IExUUik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJp
ZGlSdW4tPmRpck92ZXJyaWRlKGZhbHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250
LmRyYXdUZXh0KHRoaXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJl
YWR5QWN0aW9uKTsKKyAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBz
dWJydW4sIGN1cnJQb2ludCwgMCwgLTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAg
ICAgIGN1cnJQb2ludC5tb3ZlKHdpZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1
bi0+bmV4dCgpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAK
ICAgICAvLyBGSVhNRSAoNDkwMDIpOiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJ
bnRlcnBvbGF0aW9uTm9uZSA6IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1h
Z2UtPmRyYXcodGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9i
bGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7
CisgICAgaW1hZ2UtPmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2Us
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVz
Y3JpcHRpb24pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9u
UXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTaXplLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJh
dG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdU
aWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fYmxlbmRNb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZElt
YWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25z
dAogICAgIH0KIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VM
b3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29s
b3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdl
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYs
NyArNDQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciogaW1hZ2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAw
Mik6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDog
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xv
clNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBv
c2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlz
LCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6Y2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVm
ZmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZm
ZXItPmNsaXAoKnRoaXMsIHJlY3QpOwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykK
QEAgLTY0MCwyMCArNjQwLDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxl
KTsKICAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53
aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXpl
LmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAq
dGhpcywgaGFzQWxwaGEpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53
aWR0aCgpIC8gc2l6ZS53aWR0aCgpLCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQo
KSkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndp
ZHRoKCkgLyBzaXplLndpZHRoKCksIHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgp
KSk7CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXND
b21wYXRpYmxlV2l0aEJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdy
YXBoaWNzQ29udGV4dCogYnVmZmVyQ29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdy
YXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAg
cmV0dXJuIHNjYWxlc01hdGNoKGdldENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYg
aXNBY2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpOworICAgIHJldHVybiBzY2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5n
ZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCk7CiB9CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2
MDczMGRiYjY5NTgwOGU5YTZmN2ZlYmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3Zjdl
NTk1Y2IyODVhMWFlMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAg
ICAgdm9pZCByZXNldEFmZmluZVRyYW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQo
Y29uc3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQ
b2ludCYpOwogICAgICAgICB2b2lkIGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVj
dCwgdW5zaWduZWQgdHlwZSwgdW5zaWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1
c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQo
Y29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3
Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJj
NDBiMzc4MWVjMGE4ZjQzNWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4
ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENh
aXJvKiBjb250ZXh0KTsKICNlbGlmIFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VI
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZh
c0hlaWdodCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVp
Z2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYp
OwogI2VuZGlmCiAKICAgICB2b2lkIG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRl
MDg3NGQ1YzgwZWUwM2FhZmU0ZWMuLmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMw
MTQ5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAg
LTc4LDIzICs3OCwyMyBAQCBib29sIEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQo
YWxsRGF0YVJlY2VpdmVkKTsKIH0KIAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdy
YXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3ZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xv
ci5hbHBoYSgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3Ig
cHJldmlvdXNPcGVyYXRvciA9IGN0eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQt
PnNldENvbXBvc2l0ZU9wZXJhdGlvbighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3Np
dGVTb3VyY2VPdmVyID8gQ29tcG9zaXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChk
c3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlv
dXNPcGVyYXRvciA9IGN0eHQuY29tcG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oIWNvbG9yLmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNl
T3ZlciA/IENvbXBvc2l0ZUNvcHkgOiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBj
b2xvciwgc3R5bGVDb2xvclNwYWNlKTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihw
cmV2aW91c09wZXJhdG9yKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQor
dm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0
LCBzcmNSZWN0LCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsK
IH0KIAotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXpl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkg
ewogICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3Io
KSwgc3R5bGVDb2xvclNwYWNlLCBvcCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmwKICAgICBvbmVUaWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAg
ICAKICAgICAvLyBDaGVjayBhbmQgc2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNh
biBjb3ZlciB0aGUgZW50aXJlIGFyZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYg
KG9uZVRpbGVSZWN0LmNvbnRhaW5zKGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1h
c2soKSkgeworICAgIGlmIChvbmVUaWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQu
ZHJhd0x1bWluYW5jZU1hc2soKSkgewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7
CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0
LngoKSkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVz
dFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3
ICsxMzUsNyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIC8vIFdoZW4gdXNpbmcgYWNjZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVy
IHRvIHN0cmV0Y2ggYW4gaW1hZ2UgdGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQo
KSkgewogICAgICAgICBpZiAoc2l6ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25l
VGlsZVJlY3QsIGRlc3RSZWN0KS5oZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAg
ICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WCgwKTsKQEAgLTE2NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxl
ZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsCiAjZWxzZQogICAgIGNvbnN0IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAq
IDIwNDg7CiAjZW5kaWYKLSAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQt
PmdldENUTSgpLm1hcFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUp
KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFw
UmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0
IHRyYW5zZm9ybWVkVGlsZVNpemVQaXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkg
KiB0cmFuc2Zvcm1lZFRpbGVTaXplLmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGls
ZVJlY3QgPSBvbmVUaWxlUmVjdDsKICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+
IG1heFBhdHRlcm5UaWxlUGl4ZWxzKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY3R4dCk7Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAg
IGN0eHQuY2xpcChkZXN0UmVjdCk7CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVk
Z2VUbyhkZXN0UmVjdC55KCkpOwogICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3Qu
eSgpOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8v
IEZJWE1FOiBNZXJnZSB3aXRoIHRoZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ug
d2UgbmVlZCBhIGNvbWJpbmF0aW9uIG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFn
ZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwKICAgICBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGls
ZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApCiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29s
b3IoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThj
MGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uODc2NDFkMmIxNjNlNGJkMzg3
YWVhZDA1ZWY5Mjk0OTlkMmVjZTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19P
YmplY3QqIGdldEV2YXNPYmplY3QoRXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAg
dmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNl
LCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlTm9ybWFsKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FN
UExJTkcpCkBAIC0xODUsMTYgKzE4NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1h
Z2UoSW1hZ2VPYnNlcnZlciogPSBudWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRo
U29saWRDb2xvcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IENvbG9yJiwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICBzdGF0aWMgdm9pZCBmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBw
YXJhbWV0ZXIgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUm
IHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikg
eyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisg
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1
bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7
CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRp
bGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJvb2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4
MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNjODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgs
OSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZlcjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9iamVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBi
b29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVu
YWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBjcmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBj
b2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6
IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1
MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdmYTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0
LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqLCBib29sIGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZm
ZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9u
U2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tp
bmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNjYWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50
cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBNb2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3Rv
cmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRDb3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0x
NDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5
TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0Owog
ICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2
b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAt
MSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
OwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4
ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0g
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYp
IG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBjYW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxv
YWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJlbG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxv
YWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQordm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWlu
dChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxh
eWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0
IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3ByaXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNkOWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4u
ODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIyNDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDgg
QEAgcHVibGljOgogICAgIGJvb2wgYXV0b3BsYXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9w
bGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRl
b1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgpIGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4
dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJhY2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBU
aGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRlbm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGlj
c0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVk
IHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRlcm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4
dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0
NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUyNDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRl
LmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6
ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3Qg
RmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiBy
KSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1Bs
YXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0Rp
bnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkg
eyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5
YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVkZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIy
ZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5
LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3QgRmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNp
emUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lk
IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBj
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0g
ICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVj
dC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Qu
c2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8g
c3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCks
IC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qu
d2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVp
Z2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4
dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAsMTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5F
V19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29u
dGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRl
ZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRl
eHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1h
Z2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBwbGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdl
KG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCks
IHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIy
ZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMy
N2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24p
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBu
YW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2Ni
ZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIwYWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApA
QCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNp
Z25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAK
LXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewogICAgIGlmICghbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENU
TSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwog
ICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54
U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxmbG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9
CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRTaXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VTaXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6
OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50
UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0
JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXplIGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7
CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVy
Qm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0
UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hh
ZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAg
ICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0
UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9v
ZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxh
dGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAg
ICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChsYXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0Js
dXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2
b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250
ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxT
aXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUgIT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8g
VGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0ltYWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXpl
IG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAgICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNs
ZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRoZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6
ZSkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdp
biwgbV9sYXllclNpemUpKTsKICAgICB9Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFn
ZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXpl
KSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdl
LCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgYnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZs
b2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3NvdXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LmNsZWFyU2hhZG93KCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZs
b2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3NvdXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRp
YyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJvbVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFk
aXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNl
LCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9wU2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01
MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFkb3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50
U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3QgRmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAg
ICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BTbGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dC
bHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJS
ZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dl
ZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQs
IHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAg
IGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1
MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dX
aXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0Nv
bnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1
clNoYWRvdykgeworICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVy
UmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3ND
b250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBsYXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xl
UmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5
ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNs
aXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5k
aW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJlY3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRz
KCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0lu
c2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5vdCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICgh
Z3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90
eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAg
ICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhv
bGVSZWN0LCBsYXllclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2
MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VT
aXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmco
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmds
ZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3MiwxOSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwog
ICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNv
bnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2Ny
YXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1
cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRv
d2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlpKCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVk
cmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNo
YWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8v
IEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVyIGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgot
ICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJT
aXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAg
ICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7
CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0
KCkpOworICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVj
dCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAg
ICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRvd2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dD
b250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBh
dGgocGF0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVk
SW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAtNTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRo
b3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0
JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2UgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5n
ZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdl
KQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9u
bHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRv
bid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5zZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBD
b2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVm
ZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05l
ZWRlZCkgewotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVy
SW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dD
b250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFkb3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQg
YSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdlIGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAg
ICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53
aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hh
ZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkg
KyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50
cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRo
OwogICAgICAgICBwYXRoLmFkZFJlY3QocmVjdCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShS
VUxFX0VWRU5PREQpOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6
OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+Zmls
bFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVO
T0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRo
KTsKIAogICAgICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6
ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2NjgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAg
ICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXpl
JiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVS
ZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXpl
KQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNj
cmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4
MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGlu
ZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdO
ZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1Zh
bHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3IsIG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMs
IHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkg
ewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAg
ICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQo
KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpz
aGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRl
Qm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0RE
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4
dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hhZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0Nv
bnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5z
ZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOworICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGgg
cGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyAr
Njk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhv
bGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRo
KTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVy
QW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxhdGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXpl
IG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7
Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdl
dENUTSgpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250
ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZzZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUo
KSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgogICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RI
b2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBm
aWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNl
dEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0
ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVT
YXZlcihncmFwaGljc0NvbnRleHQpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1
bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
X2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFk
b3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAg
ICAgfQogICAgIAogICAgIGRyYXdMYXllclBpZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xl
Qm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBlZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNo
YWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBT
Y3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5zY2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwog
fQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRS
ZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXpl
KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVj
dCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkK
IHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVyID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7
CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBs
YXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0NiwyNSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwog
ICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1
ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBtX2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBz
aGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXllclNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQp
IHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAg
IEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNo
YWRvd0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBt
X2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRl
eHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwgMCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBs
YXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0
ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29s
b3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChz
aGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQt
PmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsKKyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmls
bFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGgg
cGF0aDsKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0
ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRv
d0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOworICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxs
UGF0aChwYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZl
cih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAgICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7
CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNzQ29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAg
ICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNmb3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlT
Y2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZl
clB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZm
ZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBk
aXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFk
ZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewogICAgIGNvbnN0IEludFNpemUgdHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBh
ZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBhZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1
LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9u
ID09IE91dGVyU2hhZG93KSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFk
b3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNl
bnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwogICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpncmFwaGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRG
aWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJl
Y3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1fY29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5m
aWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5j
bGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVy
IGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEgSW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAv
LyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUg
dG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAgICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dC
b3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRl
cldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAgIGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQt
PnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVyUmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBo
aWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8v
IFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2Us
IDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9wU2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVj
dCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0LngoKSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwg
Y2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
dGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllcklt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8g
RHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAgdGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVp
Z2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAgdGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNl
KTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRlclJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5z
ZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0
KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lk
ZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVjdCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1w
bGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgp
IC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0LnkoKSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdo
dCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0
LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5z
ZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgp
KTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
bGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVj
dC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwg
dG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFw
aGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKIAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVtcGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNl
LCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2Vu
dGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3QueSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRv
cFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgog
ICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRlbXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGlj
ZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRv
bVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2Vu
dGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZl
cihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7
CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3Qo
MCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9t
U2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNs
aWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVmdFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGls
ZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCArODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1
ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBi
bHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3
aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0
ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21w
b3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNl
dEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZp
bGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1wbGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXpl
LmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXll
ckltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNoYWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvciht
X2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRS
ZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsK
IH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFkb3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBo
aWNzQ29udGV4dCAqY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGlj
c0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFk
aXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJv
dW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7Cisg
ICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0
LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJvdW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBA
IEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0Nv
bnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAgICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFk
b3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwg
SW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAg
bV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllcklt
YWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNo
YWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIg
ZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQuCi0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAot
ICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
LSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsKKyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZSht
X2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKKyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9
CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdlLT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBt
X2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFk
b3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1fbGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQpOwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3co
KTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xh
eWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+
Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBj
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9sYXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9w
ZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJbWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6
c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThi
Yzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4yMDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJi
MGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1zOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAot
ICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFw
aGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5k
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRy
YXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5z
ZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAgICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGludCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsK
IAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZlcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lk
IGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3NDb250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJs
dXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdy
YXBoaWNzQ29udGV4dCYpOwogICAgIAogICAgIGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAg
ICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElubmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJ
bnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50
UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNp
emUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25zdDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBj
b25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRT
aXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAg
dm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKIAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0
aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2
b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUm
IHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAg
ICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAgCi0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3QgSW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3Qg
SW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFkb3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xh
eWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRz
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRS
YWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBsYXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAg
ICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZmZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXpl
KTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1w
bGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmlu
ZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBmNTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRi
NDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhkZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JD
aGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFy
YWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFu
Y2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXplZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZv
bnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9p
bnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBp
bnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxv
YXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRS
dW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNWR0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRl
cmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBmcm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBjb25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMyNzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0
MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRkNDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1
LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlk
TG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVk
aWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCA5ZjU4MWVkZmFkNjhmODdjMmQ0NTM1MjJkZjIyZThl
NDYzNTNiNzllLi5mOGJhZGRkZjQyOGM4YzY0MGE1ODQ5Njc3NDNlZGIzZGQzZDg1ZDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0xNTIsOCArMTUyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGU7CkBAIC0y
MjQsNyArMjI0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUltYWdlR2VuZXJhdG9yKCk7
CiAgICAgdm9pZCBkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmKTsK
LSAgICB2b2lkIHBhaW50V2l0aEltYWdlR2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9WSURF
T19PVVRQVVQpCiAgICAgdm9pZCBjcmVhdGVWaWRlb091dHB1dCgpOwpAQCAtMjMyLDcgKzIzMiw3
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IGNyZWF0ZVBpeGVs
QnVmZmVyKCk7CiAgICAgdm9pZCB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICBib29sIHZpZGVvT3V0
cHV0SGFzQXZhaWxhYmxlRnJhbWUoKTsKLSAgICB2b2lkIHBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRXaXRoVmlk
ZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVh
bCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA2NWZiNGQyOTYzMjQwZmViYzg1ZjE3OTkx
ZTQ3N2Q1MmZhNGUzZWY5Li41MDNjNGZiMDJiOWM0ZWFkYzAwZjM3NTRmNTM1MDQzZmU0NjllN2Zh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE0OTQsOSArMTQ5NCw5IEBAIGxvbmcgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXNzZXRFcnJvckNvZGUoKSBjb25zdAog
ICAgIHJldHVybiBbZXJyb3IgY29kZV07CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURh
dGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFt
ZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBzZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKQEAgLTE1MTUsOSArMTUx
NSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRDdXJy
ZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250CiAgICAgbV92aWRlb0ZyYW1lSGFzRHJhd24g
PSB0cnVlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoIW1ldGFEYXRh
QXZhaWxhYmxlKCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbWV0
YURhdGFBdmFpbGFibGUoKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gV2UgY2FuIGlnbm9yZSB0aGUgcmVxdWVzdCBpZiB3ZSBhcmUgYWxy
ZWFkeSByZW5kZXJpbmcgdG8gYSBsYXllci4KQEAgLTE1MzEsMTggKzE1MzEsMTggQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEYKICAgICBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChjb250ZXh0
LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpw
YWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoSW1hZ2VHZW5lcmF0b3IoJXApIiwgdGhpcyk7CiAKICAg
ICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBjcmVhdGVJbWFnZUZvclRpbWVJblJlY3Qo
Y3VycmVudFRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQt
PnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKLSAgICAgICAg
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEuMGYsIC0xLjBmKSk7Ci0gICAgICAgIGNvbnRleHQt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEuMGYsIC0xLjBmKSk7CisgICAgICAgIGNv
bnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKICAg
ICAgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUocmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwg
cGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHREcmF3
SW1hZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwYWludFJl
Y3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwogICAgICAgICBp
bWFnZSA9IDA7CiAgICAgfQogfQpAQCAtMjMyMyw3ICsyMzIzLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoKQogICAgICAgICBtX2xh
c3RJbWFnZSA9IGNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0
cHV0UmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRX
aXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IG91dHB1dFJlY3QpCiB7CiAjaWYgKCFkZWZpbmVkKF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwKQogICAg
IGlmIChtX3ZpZGVvT3V0cHV0ICYmICFtX2xhc3RJbWFnZSAmJiAhdmlkZW9PdXRwdXRIYXNBdmFp
bGFibGVGcmFtZSgpKQpAQCAtMjM0MSwxMyArMjM0MSwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4
dCogYwogCiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoJXApIiwgdGhpcyk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KDAs
IDAsIENHSW1hZ2VHZXRXaWR0aChtX2xhc3RJbWFnZS5nZXQoKSksIENHSW1hZ2VHZXRIZWlnaHQo
bV9sYXN0SW1hZ2UuZ2V0KCkpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9UcmFuc2Zvcm0g
PSBbZmlyc3RFbmFibGVkVmlkZW9UcmFjayBwcmVmZXJyZWRUcmFuc2Zvcm1dOwogICAgIEZsb2F0
UmVjdCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkubWFw
UmVjdChvdXRwdXRSZWN0KTsKIAotICAgIGNvbnRleHQtPmNvbmNhdENUTSh2aWRlb1RyYW5zZm9y
bSk7Ci0gICAgY29udGV4dC0+ZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFn
ZVJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3Qs
IGltYWdlUmVjdCk7CisgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOworICAg
IGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1fbGFzdEltYWdlLmdldCgpLCBpbWFnZVJlY3Quc2l6
ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCB0cmFuc2Zvcm1lZE91dHB1dFJlY3QsIGltYWdlUmVj
dCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGNyZWF0ZWQgYW4gQVZBc3NldEltYWdlR2VuZXJhdG9y
IGluIHRoZSBwYXN0IGR1ZSB0byBtX3ZpZGVvT3V0cHV0IG5vdCBoYXZpbmcgYW4gYXZhaWxhYmxl
CiAgICAgLy8gdmlkZW8gZnJhbWUsIGRlc3Ryb3kgaXQgbm93IHRoYXQgaXQgaXMgbm8gbG9uZ2Vy
IG5lZWRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggYTU3NTM0ZjI1ODk3OTYzMzY2
YTUwNDdmNjU4MGYyNzk2YWM2MDU2Mi4uNTM3MWQ2NjI3ZWNlMTQzZDU5OGU1NDhhNWZlOTBiMzNi
NzNjYTAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTE0Nyw4ICsxNDcsOCBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGM4MDViM2IyNDVlMzc0Zjc5MTA1ZGFkODc1NTVjZmFk
YWZjNGYwM2UuLmQ3Nzc4MjgyOTVjNjMwYTE5ODRmZmRmOTlhNDIyYzQxYzUwYTE3ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTUyNCwxMiArNTI0LDEyIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZXRTaXplKGNvbnN0IEludFNpemUmKQog
ICAgIC8vIE5vLW9wLgogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJWE1FKDEyNTE1Nyk6IEltcGxlbWVudCBw
YWludGluZy4KIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikK
IHsKICAgICAvLyBGSVhNRSgxMjUxNTcpOiBJbXBsZW1lbnQgcGFpbnRpbmcuCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5oCmluZGV4IDVhZTViNTUwOWVkMWZjMDk5NThkNTBmMjZmNTdiMDRhNTM5
ZmVlMDYuLjVhMDAxMmVjOWRhMjk4OTNiZjU4MmI3OGM5NTExNTlhMDI2YzQ5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU3RyZWFtQVZGT2JqQy5oCkBAIC0xMjgsOCArMTI4LDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBz
dXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbQppbmRleCBjMjZiMzM1OTczNGQyMzRhZmQ3OTIyOTJhZmQ5MzU3MDQ2
ZTBlNjg5Li4wMWZmMjJjMDk5ZmRiOWExZDlkZDc5MjU4NWFiYzVkOGY0OTdiYjY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0zNjIsMTIgKzM2MiwxMiBAQCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpjcmVhdGVJbWFn
ZUZyb21TYW1wbAogICAgIHJldHVybiBxdWFydHpJbWFnZTsKIH0KIAotdm9pZCBNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0
cmVhbUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJl
Y3QpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewog
ICAgIC8vIEZJWE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKaW5kZXggZjBkM2E3YTcyZGI5MmZkZTFkMWI1Zjk5MzhiM2MwYzFlN2FkNjFmMS4u
ZjVlM2RlMGU1MzRiMDE2ZWRmNjFiNDBjZTRmYTFhNTI5NWQ0YTc3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VD
YWlyby5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKFBhc3NS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBuYXRpdmVJbWFnZSwgSW1hZ2VPYnNlcnZlcioKICAgICBj
aGVja0ZvclNvbGlkQ29sb3IoKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAor
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLAogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIWRzdC53
aWR0aCgpIHx8ICFkc3QuaGVpZ2h0KCkgfHwgIXNyYy53aWR0aCgpIHx8ICFzcmMuaGVpZ2h0KCkp
CkBAIC04MSwxMyArODEsMTMgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQtPnNhdmUoKTsKKyAgICBjb250ZXh0LnNhdmUoKTsK
IAogICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgogICAgIGlmIChvcCA9PSBD
b21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVuZE1vZGVOb3JtYWwgJiYgIWZy
YW1lSGFzQWxwaGFBdEluZGV4KG1fY3VycmVudEZyYW1lKSkKLSAgICAgICAgY29udGV4dC0+c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOworICAgICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRl
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CiAKICNpZiBFTkFCTEUoSU1B
R0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQogICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IGNhaXJv
U3VyZmFjZVNpemUoc3VyZmFjZS5nZXQoKSk7CkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0LCBjb25zdCBGbG8KIAogICAgIGlmIChmcmFtZU9yaWVudGF0aW9uICE9IERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uKSB7CiAgICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUg
b3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGRzdFJl
Y3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3Qu
eCgpLCBkc3RSZWN0LnkoKSk7CiAgICAgICAgIGRzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2lu
dCgpKTsKLSAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZyYW1lT3JpZW50YXRpb24udHJhbnNm
b3JtRnJvbURlZmF1bHQoZHN0UmVjdC5zaXplKCkpKTsKKyAgICAgICAgY29udGV4dC5jb25jYXRD
VE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3RSZWN0LnNpemUoKSkp
OwogICAgICAgICBpZiAoZnJhbWVPcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdCdzIHdp
ZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAg
ICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0
LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgpAQCAtMTE0LDkgKzExNCw5IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZS5nZXQoKSwg
ZHN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBjb250ZXh0KTsKKyAgICBjb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIGNvbnRleHQpOwogCi0gICAgY29udGV4dC0+cmVzdG9yZSgpOworICAg
IGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggYWExMGM2NWM1Njg0
M2U1MDI4MDY4YTM5YTg3MDIwMmM3YjE0Y2NjZS4uZmM1MDMyYjU0NWFiNDZiNmM3ZjIzNGZmYzE3
ODQ1M2VlNDg0MjhkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC00NywxNCArNDcsMTQgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBkcmF3R2x5cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNv
bnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgaW50IG51
bUdseXBocykKK3N0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5
cGhzKQogewogICAgIGNhaXJvX21hdHJpeF90IG9yaWdpbmFsVHJhbnNmb3JtOwotICAgIGZsb2F0
IHN5bnRoZXRpY0JvbGRPZmZzZXQgPSBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CisgICAg
ZmxvYXQgc3ludGhldGljQm9sZE9mZnNldCA9IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpOwog
ICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICBjYWlyb19nZXRfbWF0cml4KGNv
bnRleHQsICZvcmlnaW5hbFRyYW5zZm9ybSk7CiAKLSAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQo
Y29udGV4dCwgZm9udC0+cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKTsKKyAgICBjYWlyb19z
ZXRfc2NhbGVkX2ZvbnQoY29udGV4dCwgZm9udC5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkp
OwogICAgIGNhaXJvX3Nob3dfZ2x5cGhzKGNvbnRleHQsIGdseXBocywgbnVtR2x5cGhzKTsKIAog
ICAgIGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KSB7CkBAIC02NiwyMSArNjYsMjEgQEAgc3RhdGlj
IHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250KiBm
b250LCBHbHlwaEJ1ZmZlckcKICAgICAgICAgY2Fpcm9fc2V0X21hdHJpeChjb250ZXh0LCAmb3Jp
Z2luYWxUcmFuc2Zvcm0pOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQor
c3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQmIGZvbnQsIEdseXBoQnVm
ZmVyR2x5cGgqIGdseXBocywgaW50IG51bUdseXBocykKIHsKLSAgICBTaGFkb3dCbHVyJiBzaGFk
b3cgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7Cisg
ICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAKLSAgICBpZiAoIShncmFwaGljc0NvbnRleHQtPnRleHREcmF3aW5n
TW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5v
U2hhZG93KQorICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSAmIFRl
eHRNb2RlRmlsbCkgfHwgc2hhZG93LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPm11c3RVc2VTaGFkb3dC
bHVyKCkpIHsKKyAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC5tdXN0VXNlU2hhZG93Qmx1cigpKSB7
CiAgICAgICAgIC8vIE9wdGltaXplIG5vbi1ibHVycnkgc2hhZG93cywgYnkganVzdCBkcmF3aW5n
IHRleHQgd2l0aG91dCB0aGUgU2hhZG93Qmx1ci4KLSAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgICAgIGNhaXJv
X3QqIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgICAgIGNhaXJvX3NhdmUoY29udGV4dCk7CiAKLSAgICAgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldChncmFwaGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93T2Zmc2V0KTsKKyAgICAgICAgRmxv
YXRTaXplIHNoYWRvd09mZnNldChncmFwaGljc0NvbnRleHQuc3RhdGUoKS5zaGFkb3dPZmZzZXQp
OwogICAgICAgICBjYWlyb190cmFuc2xhdGUoY29udGV4dCwgc2hhZG93T2Zmc2V0LndpZHRoKCks
IHNoYWRvd09mZnNldC5oZWlnaHQoKSk7Ci0gICAgICAgIHNldFNvdXJjZVJHQkFGcm9tQ29sb3Io
Y29udGV4dCwgZ3JhcGhpY3NDb250ZXh0LT5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsKKyAgICAgICAg
c2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFwaGljc0NvbnRleHQuc3RhdGUoKS5z
aGFkb3dDb2xvcik7CiAgICAgICAgIGRyYXdHbHlwaHNUb0NvbnRleHQoY29udGV4dCwgZm9udCwg
Z2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgICAgIGNhaXJvX3Jlc3RvcmUoY29udGV4dCk7CkBA
IC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmCiAgICAgfQogCiAgICAgY2Fp
cm9fdGV4dF9leHRlbnRzX3QgZXh0ZW50czsKLSAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9l
eHRlbnRzKGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSwgZ2x5cGhzLCBudW1HbHlw
aHMsICZleHRlbnRzKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF9nbHlwaF9leHRlbnRzKGZvbnQu
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OwogICAgIEZsb2F0UmVjdCBmb250RXh0ZW50c1JlY3QocG9pbnQueCgpICsgZXh0ZW50cy54X2Jl
YXJpbmcsIHBvaW50LnkoKSArIGV4dGVudHMueV9iZWFyaW5nLCBleHRlbnRzLndpZHRoLCBleHRl
bnRzLmhlaWdodCk7CiAKICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0g
c2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoZ3JhcGhpY3NDb250ZXh0LCBmb250RXh0ZW50c1JlY3Qp
KSB7CkBAIC05NywxMCArOTcsMTAgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiB9
CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAogICAgIGludCBmcm9t
LCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBp
ZiAoIWZvbnQtPnBsYXRmb3JtRGF0YSgpLnNpemUoKSkKKyAgICBpZiAoIWZvbnQucGxhdGZvcm1E
YXRhKCkuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBHbHlwaEJ1ZmZlckdseXBoKiBn
bHlwaHMgPSBjb25zdF9jYXN0PEdseXBoQnVmZmVyR2x5cGgqPihnbHlwaEJ1ZmZlci5nbHlwaHMo
ZnJvbSkpOwpAQCAtMTEyLDE0ICsxMTIsMTQgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBo
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAg
ICAgICAgb2Zmc2V0ICs9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChmcm9tICsgaSkud2lkdGgoKTsK
ICAgICB9CiAKLSAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgUGxhdGZvcm1Db250ZXh0Q2Fpcm8qIHBsYXRm
b3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgZHJhd0dseXBoc1No
YWRvdyhjb250ZXh0LCBwb2ludCwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgY2Fp
cm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQtPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAK
LSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0TW9kZUZpbGwpIHsKLSAg
ICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0ZSgp
LCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKKyAg
ICBpZiAoY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgeworICAgICAg
ICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3RhdGUoKSwgUGxh
dGZvcm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CiAgICAgICAg
IGRyYXdHbHlwaHNUb0NvbnRleHQoY3IsIGZvbnQsIGdseXBocywgbnVtR2x5cGhzKTsKICAgICB9
CiAKQEAgLTEyNywxMiArMTI3LDEyIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgLy8g
dHdpY2UgdGhlIHNpemUgb2YgdGhlIHdpZHRoIG9mIHRoZSB0ZXh0IHdlIHdpbGwgbm90IGFzayBj
YWlybyB0byBzdHJva2UKICAgICAvLyB0aGUgdGV4dCBhcyBldmVuIG9uZSBzaW5nbGUgc3Ryb2tl
IHdvdWxkIGNvdmVyIHRoZSBmdWxsIHdkdGggb2YgdGhlIHRleHQuCiAgICAgLy8gIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM3NTkuCi0gICAgaWYgKGNvbnRl
eHQtPnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UgJiYgY29udGV4dC0+c3Ryb2tl
VGhpY2tuZXNzKCkgPCAyICogb2Zmc2V0KSB7Ci0gICAgICAgIHBsYXRmb3JtQ29udGV4dC0+cHJl
cGFyZUZvclN0cm9raW5nKGNvbnRleHQtPnN0YXRlKCkpOwotICAgICAgICBjYWlyb19zZXRfbGlu
ZV93aWR0aChjciwgY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVTdHJva2UgJiYgY29udGV4dC5zdHJva2VUaGlj
a25lc3MoKSA8IDIgKiBvZmZzZXQpIHsKKyAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJl
Rm9yU3Ryb2tpbmcoY29udGV4dC5zdGF0ZSgpKTsKKyAgICAgICAgY2Fpcm9fc2V0X2xpbmVfd2lk
dGgoY3IsIGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCkpOwogCiAgICAgICAgIC8vIFRoaXMgbWF5
IGRpc3R1cmIgdGhlIENUTSwgYnV0IHdlIGFyZSBnb2luZyB0byBjYWxsIGNhaXJvX3Jlc3RvcmUg
c29vbiBhZnRlci4KLSAgICAgICAgY2Fpcm9fc2V0X3NjYWxlZF9mb250KGNyLCBmb250LT5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQo
Y3IsIGZvbnQucGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKTsKICAgICAgICAgY2Fpcm9fZ2x5
cGhfcGF0aChjciwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgICAgICBjYWlyb19zdHJva2UoY3Ip
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKaW5kZXggNjc4NDBjNWU5NGZmZmZl
M2YyMzZmMGI4MTIyYTIyMDFlYmFlNTNlZC4uNGZlYzFhYWViMmVkOWQ0Yjc2ZTkzNDM5MmY0ZTMy
YTg2MTlhZTljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvSGFyZmJ1enpORy5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
Y29uc3QgVGV4dFJ1biYgcnVuLCBpbnQsIGkKICAgICByZXR1cm4gMDsKIH0KIAotZmxvYXQgRm9u
dENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8p
IGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICAvLyBUaGlzIGdseXBoIGJ1ZmZlciBob2xk
cyBvdXIgZ2x5cGhzICsgYWR2YW5jZXMgKyBmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAg
R2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC03MCw3ICs3MCw3IEBAIGZsb2F0IEZvbnRDYXNj
YWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29u
dGV4dCogLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1biYgLyogcnVuICovLCBjb25zdCBBdG9t
aWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0UG9pbnQmIC8qIHBvaW50ICovLCBpbnQg
LyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0Vt
cGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIC8qIGNvbnRleHQgKi8s
IGNvbnN0IFRleHRSdW4mIC8qIHJ1biAqLywgY29uc3QgQXRvbWljU3RyaW5nJiAvKiBtYXJrICov
LCBjb25zdCBGbG9hdFBvaW50JiAvKiBwb2ludCAqLywgaW50IC8qIGZyb20gKi8sIGludCAvKiB0
byAqLykgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCmluZGV4IGY4YzdjOTYwZmQ5ZjlkZjUxMzVlZWIyNDkyMzZkOWI3NDhjZWZk
ZDYuLmQ0MTc4ZTllZTZhODBjMjlmZTI1NzAxNjVlZDgxNTUxNTE2NTBjODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTg5LDE0ICs4OSwxNCBAQCBlbnVtIFBhdGhEcmF3aW5n
U3R5bGUgewogICAgIEZpbGxBbmRTdHJva2UgPSBGaWxsICsgU3Ryb2tlCiB9OwogCi1zdGF0aWMg
aW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRo
RHJhd2luZ1N0eWxlIGRyYXdpbmdTdHlsZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNo
YWRvdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhd2luZ1N0
eWxlKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5zaGFkb3dCbHVyKCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpID09IFNo
YWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDYWxjdWxhdGUg
dGhlIGV4dGVudHMgb2YgdGhlIHJlbmRlcmVkIHNvbGlkIHBhdGhzLgotICAgIGNhaXJvX3QqIGNh
aXJvQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJv
X3QqIGNhaXJvQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPGNhaXJvX3BhdGhfdCwgdm9pZCgqKShjYWlyb19wYXRoX3QqKT4gcGF0
aChjYWlyb19jb3B5X3BhdGgoY2Fpcm9Db250ZXh0KSwgW10oY2Fpcm9fcGF0aF90KiBwYXRoKSB7
CiAgICAgICAgIGNhaXJvX3BhdGhfZGVzdHJveShwYXRoKTsKICAgICB9KTsKQEAgLTEyOSwxNCAr
MTI5LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUgZHJhCiAgICAgaWYgKGRyYXdpbmdTdHlsZSAm
IEZpbGwpIHsKICAgICAgICAgY2Fpcm9fc2F2ZShjYWlyb1NoYWRvd0NvbnRleHQpOwogICAgICAg
ICBjYWlyb19hcHBlbmRfcGF0aChjYWlyb1NoYWRvd0NvbnRleHQsIHBhdGguZ2V0KCkpOwotICAg
ICAgICBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmco
Y29udGV4dC0+c3RhdGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7Cisg
ICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGlu
Zyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpOb0FkanVzdG1lbnQpOwog
ICAgICAgICBjYWlyb19maWxsKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX3Jl
c3RvcmUoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICB9CiAKICAgICBpZiAoZHJhd2luZ1N0eWxl
ICYgU3Ryb2tlKSB7CiAgICAgICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4
dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fp
cm86OkRvTm90UHJlc2VydmVBbHBoYSk7CisgICAgICAgIHNoYWRvd0NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNv
bnRleHRDYWlybzo6RG9Ob3RQcmVzZXJ2ZUFscGhhKTsKICAgICAgICAgY2Fpcm9fc3Ryb2tlKGNh
aXJvU2hhZG93Q29udGV4dCk7CiAgICAgfQogCkBAIC0xNDksMjggKzE0OSwyOCBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYXRo
RHJhd2luZ1N0eWxlIGRyYQogICAgIGNhaXJvX2FwcGVuZF9wYXRoKGNhaXJvQ29udGV4dCwgcGF0
aC5nZXQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbEN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwogCi0gICAg
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0
YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEp
OworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRl
eHQuc3RhdGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxB
bHBoYSk7CiAgICAgY2Fpcm9fZmlsbChjcik7CiAKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzaGFkb3dBbmRGaWxsQ3Vy
cmVudENhaXJvUGF0aChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgZHJhd1BhdGhT
aGFkb3coY29udGV4dCwgRmlsbCk7CiAgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBzaGFkb3dBbmRTdHJva2VDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBzaGFkb3dBbmRT
dHJva2VDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBk
cmF3UGF0aFNoYWRvdyhjb250ZXh0LCBTdHJva2UpOwotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgY2Fpcm9f
c3Ryb2tlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKKyAgICBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU3Ryb2tpbmcoY29udGV4dC5zdGF0ZSgpKTsKKyAg
ICBjYWlyb19zdHJva2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiB9CiAKIEdy
YXBoaWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNhaXJvX3QqIGNyKQpAQCAtNDMwLDcgKzQz
MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzZXRQYXRo
T25DYWlyb0NvbnRleHQoY3IsIHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAg
c2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1
cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQYXRoJiBwYXRoKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190KiBjciA9
IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4dChjciwg
cGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRTdHJva2VDdXJy
ZW50Q2Fpcm9QYXRoKHRoaXMpOworICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
KnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3Qu
eSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIHNoYWRvd0FuZEZpbGxDdXJy
ZW50Q2Fpcm9QYXRoKHRoaXMpOworICAgIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRoKCp0
aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlKQpAQCAtNDU5LDcgKzQ1OSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICho
YXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3
UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3Vu
ZGVkUmVjdChyZWN0KSk7CiAKICAgICBmaWxsUmVjdFdpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdCwgY29sb3IpOwogfQpAQCAtMTA0Myw3ICsxMDQzLDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHJlY3QsIGNvbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIHJlY3QpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdS
ZWN0U2hhZG93KCp0aGlzLCByZWN0KTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGhpcy0+
bXVzdFVzZVNoYWRvd0JsdXIoKSkKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKS5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKKyAgICAg
ICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5hZGRS
ZWN0KHJlY3QpOwpAQCAtMTA3Myw3ICsxMDczLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQK
ICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGNhaXJvX3Nh
dmUoY3IpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4dChwbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBmaWxsQ3VycmVudENhaXJv
UGF0aCh0aGlzKTsKKyAgICBmaWxsQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9f
cmVzdG9yZShjcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggNDE1ZjlkYzc5ZmRi
Zjk0MDE1MzFhZGJjYWRjZDlhMjZlMTcyNWQ1Ni4uOGI4ZjIyMDJkMGI3OGRmYTQ5OTI2YWYxMTVm
ZWExMjllMjI4ZmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTE3Myw3ICsxNzMsNyBA
QCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250
ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sbwogICAgIGRlc3RpbmF0aW9uQ29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRp
b24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkK
IHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFhNDQ5MTg2N2JjMGQ5MWQ5
YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2YWM2ZjBkMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fp
cm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
K3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKQogewogICAg
IFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28gZWFybHkgd2Ugd29uJ3Qg
aGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAgIGNhaXJvX3QqIGNyID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY3IgPSBjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRl
eHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGlsZVJlY3QsIHBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0UmVjdCk7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCmluZGV4IDU5
OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEwZTdmZjg3M2JjYjM1YzMw
NTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHAK
QEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0
KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNvbgogICAgICAgICBjYWly
b19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VU
b0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQo
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGggc21hbGwgdmFsdWVzLgog
ICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVmIHx8IHN0ZDo6ZmFicyhk
ZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7IHNjYWxlWCwgMCwgMCwg
c2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNhaXJvX3BhdHRlcm5fc2V0
X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNoYWRvd0JsdXImIHNoYWRv
dyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CisgICAgU2hhZG93
Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpOwog
ICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hhZG93KSB7CiAgICAgICAg
IGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5TaGFkb3dM
YXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRyYXdQYXR0ZXJuVG9DYWly
b0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdHRlcm4u
Z2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCmluZGV4IDkzNTVl
MTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEzMDUyY2QyZDhkY2VlNzUx
YWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaApAQCAtNTgs
NyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEoKSBjb25zdDsKIAogICAg
IHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsK
LSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWlyb19zdXJmYWNlX3QqLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIEdyYXBo
aWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KElu
dGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIzZjIxZWY3NzAwZWU2ZDUw
NmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVjNTExY2NjMjIwYzQ3Mjgw
ODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAgIHJldHVybiBhZG9wdENG
KGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikK
IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24oRG9Ob3RDYXRjaFVwKTsK
QEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNlIHN1YnNhbXBsZWQgaW1h
Z2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlmICh3a0NHQ29udGV4dElz
UERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAgaWYgKHdrQ0dDb250ZXh0
SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAgICAgICBpbWFnZSA9IGFk
b3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZyYW1lKSk7CiAgICAgZWxz
ZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9uUmVjdCA9IENHUmVjdEFw
cGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRDVE0oY3R4dC0+cGxhdGZv
cm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVkRGVzdGluYXRpb25SZWN0
ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENHQ29udGV4dEdldENUTShj
dHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1YnNhbXBsaW5nU2NhbGUg
PSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Qu
c2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWREZXN0aW5hdGlvblJlY3Qu
c2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAgICAgaW1hZ2UgPSBmcmFt
ZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUpOwpAQCAtMjQ1LDcgKzI0
NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRlc2NyaXB0aW9uLnJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50YXRpb24pCiAgICAgICAg
IG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpOwog
Ci0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBpbWFnZVNpemUsIHN0eWxl
Q29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
aW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCBjb21w
b3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZl
cigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1ZGM1MzBhMjhiN2JhYjku
Ljk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9pZCByZWxlYXNlSW1hZ2VE
YXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAgZmFzdEZyZWUoY29uc3Rf
Y2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52YXNIZWlnaHQsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52
YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQg
aW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMgfHwgaW1hZ2VXaWR0aCA8
PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0gMCB8fCBjYW52YXNIZWln
aHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxzIHx8IGltYWdlV2lkdGgg
PD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9IDAgfHwgY2FudmFzSGVp
Z2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0ZXMgPSBpbWFnZVdpZHRo
ICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlcjsKIAot
ICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CisgICAgaWYgKGNvbnRl
eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyKiBjb3Bp
ZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGltYWdlSGVpZ2h0LCByb3dC
eXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSArNTMyLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21wbGV0ZWx5IG92ZXJ3cml0
ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyByZXN1bHRzLgogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
LWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFn
ZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0LCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5z
Y2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VI
ZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBv
bGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwg
aW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0Mzg2MzVhYTk2ZGQzYjFj
YTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4ZmE0NjM2NWJlNDljMjY1
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAgICBDR0NvbnRl
eHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDAp
OwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKLSAgICAgICAg
Y29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygqdGhpcywgRmxvYXRSb3Vu
ZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwg
cmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclMKICAgICAg
ICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVa
ZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3cobV9zdGF0ZSk7
Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgRmxvYXRSb3VuZGVk
UmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3coKnRoaXMs
IEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENHQ29udGV4dEZpbGxSZWN0
KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBj
b25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQo
KSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93
KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJl
Y3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KCp0aGlzLCByZWN0KTsK
ICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJlY3QoKTsKQEAgLTgyNCw3
ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAgICBDR0NvbnRleHRTZXRT
aGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVplcm8sIDAsIDApOwogCiAg
ICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsKLSAgICAgICAgY29udGV4
dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKKyAg
ICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMsIHJlY3QsIHJvdW5kZWRI
b2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGJi
OWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEwOTMwMTQ5N2MyNTZiMTA0
Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0xNDMsOSArMTQzLDkgQEAg
SW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNvbnRleHQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgpKTsKICAgICB9CiAKLSAg
ICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIGNvbnRleHQoKS0+dHJh
bnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgY29udGV4
dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKKyAgICBjb250
ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4dCgpLnRyYW5zbGF0ZSgw
LCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAgIGNvbnRleHQoKS5hcHBs
eURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAogICAgIHN1Y2Nlc3MgPSB0
cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcigp
CiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNvbnRleHQoKSBjb25zdAor
R3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CiB7CiAjaWYgVVNF
KElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAobV9kYXRhLnN1cmZhY2Up
Ci0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
OworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
OwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgpOworICAgIHJldHVybiAq
bV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZsdXNoQ29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAog
c3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVkSW1hZ2VJZk5lY2Vzc2Fy
eShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCkBAIC0yMTAsMTMgKzIx
MCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdlTW9kZSgp
CiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9udENvcHlCYWNraW5nU3Rv
cmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShtX2RhdGEuYmFj
a2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQoKSwg
OCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9kYXRhLmNvbG9yU3BhY2Us
IG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdldCgpLCAwLCB0cnVlLCBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2UgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAg
ICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShjb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yMzEsMjkgKzIz
MSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFn
ZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29sIHVzZUxvd1F1YWxpdHlT
Y2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNjYWxlKTsKLSAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNl
ID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBz
dHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAg
aWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC0+aXNBY2NlbGVyYXRl
ZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENv
bnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwg
bmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9IGNvcHlOYXRpdmVJ
bWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNS
ZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2Nh
bGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+ZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJh
d05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29sb3JT
cGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAKLSAgICBpZiAoIWNvbnRl
eHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBpZiAoZGVzdENvbnRleHQg
PT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7Cisg
ICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgeworICAgICAgICBpZiAo
JmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENv
bnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFn
ZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVk
IHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3R5bGVDb2xv
clNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0y
NjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwogICAgIH0KIH0KIAotdm9p
ZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRleHRUb0NsaXAsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAg
ICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9IHNjYWxlU2l6ZVRvVXNl
clNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgaW50ZXJuYWxTaXpl
KCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRvQ2xpcCA9IGNvbnRleHRU
b0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRl
eHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIC8vIEZJWE1F
OiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1c2VkIGFzIGFuIGFscGhh
IG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBjb3B5TmF0aXZl
SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShw
bGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSArIGJhY2tpbmdTdG9yZVNp
emVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4MywzMSBAQCB2b2lkIEltYWdl
QnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xpcCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBJbWFnZUJ1ZmZl
cjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3QmIHJlY3QsIENvb3JkaW5h
dGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBpZiAoY29udGV4dCgpLT5p
c0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENv
bnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJbnRSZWN0IHNyY1JlY3Qg
PSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lz
dGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKIAotICAgIHJl
dHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUoKSwgY29udGV4dCgpLT5p
c0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1cm4gbV9kYXRhLmdldERh
dGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gSW1hZ2VC
dWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCwgQ29v
cmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewotICAgIGlmIChjb250ZXh0
KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJh
dGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIEludFJlY3Qgc3Jj
UmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNhbENvb3JkaW5h
dGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwogCi0g
ICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFsU2l6ZSgpLCBjb250ZXh0
KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAgICByZXR1cm4gbV9kYXRh
LmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dEJ5dGVBcnJh
eShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSogc291cmNlLCBjb25zdCBJ
bnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pCiB7Ci0g
ICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNv
bnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIEludFJlY3Qgc2NhbGVk
U291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUgc2NhbGVkU291cmNlU2l6
ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2ljYWxD
b29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2b2lkIEltYWdlQnVmZmVy
OjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhDbGFtcGVkQXJyYXkqIHNv
dXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc291
cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBJ
bnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSksIHNvdXJjZUNvcHktPmlu
dGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBzb3VyY2VDb3B5LT5tX2Rh
dGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIEludFBvaW50KC1zb3Vy
Y2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+aW50ZXJuYWxTaXplKCks
IHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBtdWx0aXBsaWVk
ID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29udGV4dCBmb3IgdXNpbmcg
ZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250ZXh0UmVmIGRlc3RDb250
ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgZGVz
dENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2
ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0gTG9naWNh
bENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNhdENUTShkZXN0Q29udGV4
dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0Q29udGV4dCkpLmludmVy
c2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAg
ICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5j
b2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250
ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAg
ICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gdXRp
RnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUxMDMxYTIxNTcwZTVhYTMy
MGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBkOTdmYzYzNzkzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKQEAg
LTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBp
bmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKCFuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQgSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY3R4dC0+cGxhdGZvcm1D
b250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjdHh0
KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0eHQpOwogICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0eHQtPnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVz
dFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgQ0dDb250
ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBi
MTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5mNGIwNDg1NzFlYzk4Mzk2
MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtOTgsNyArOTgs
NyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1ZSBpZiBzaXplIGlzIGF2
YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRj
aChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAogewogICAgIGlmIChk
c3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJbWFnZTo6Y2FjaGVQ
YXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUg
ZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5j
bHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7CiAKICAgICBB
ZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07
CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zv
cm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJh
bWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50
aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNjYWxlID0gZHN0UmVjdC53
aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2FsZSA9IGRzdFJlY3QuaGVp
Z2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUsMTIgQEAgc3RhdGljIHZv
aWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnRyYW5zbGF0
ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2NhbGUpOwotICAgIGNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAgICBjb250ZXh0LT50cmFu
c2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHNyY1Jl
Y3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7CisgICAgY29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoMCwg
LXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNh
Y2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3ZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQogewog
I2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xpZW50cyB1c2UgbG93LXF1
YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRocm93cyBvZmYgdGhpcyBv
cHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGltYWdlLCByZXVzZSBpdCBp
ZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlmIGNhY2hlIHBhcmFtZXRl
cnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hlbiB3ZSBkbyB0aGUgc3Vi
c2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCk7
CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJlcGFpbnRJZk5lY2Vzc2Fy
eSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Ob25lICYmIGludGVycG9s
YXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYKIAogICAgIGlmICghbV9j
YWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNoKGNvbnRleHQsIGRzdFJl
Y3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAgICAgICAgbV9jYWNoZWRJ
bWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxvYXRSZWN0KGVu
Y2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAgIG1fY2FjaGVkSW1hZ2VC
dWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxvYXRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZm
ZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICBpZiAo
IWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxs
cHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKIAog
ICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZHN0UmVj
dCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQpOwogCi0gICAg
ICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6
RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1fY2FjaGVkVHJhbnNmb3Jt
ID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmlj
ZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUgPSBkc3RSZWN0LnNpemUo
KTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsKIApAQCAtMTgyLDcgKzE3
OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQogCi12b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9p
ZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIHVw
ZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAKICAg
ICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4
dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAgICAgIGlmIChtX2NhY2hl
ZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fY2Fj
aGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdFJlY3QpOworICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJbWFnZUJ1ZmZlci5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1Jl
Y3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBAIC0yNDQsMjYgKzI0MCwy
NiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAogICAgIHJl
dHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50LmdldCgpKTsKIH0K
IAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3JlZXMpCitzdGF0aWMgdm9p
ZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBGbG9h
dFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBpZiAocm90YXRpb25EZWdy
ZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7
CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2Ug
aWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVl
cyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDApOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDApOwogCi0gICAgY29udGV4
dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7
CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJvdGF0aW9u
RGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdl
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJvdGF0aW9uRm9yUGFpbnRp
bmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAKLSAgICBjb250ZXh0LT50
cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwogCiAgICAgLy8gQ0dQREYg
cGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50Lmdl
dCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSkpOwogfQogCiAj
ZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKaW5k
ZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkwMC4uMjE3YWNkMGVkYjI2
NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApAQCAtNjksNyArNjks
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9u
cyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRT
aXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlk
ZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2
ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50
UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0OwotICAgIHZvaWQgZHJhd1BE
RlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERGUGFnZShHcmFwaGljc0Nv
bnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7Cisg
ICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKyAgICBib29s
IGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsKIAogI2lmIFVTRShQREZL
SVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBtX2Rv
Y3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5YjkxNTkwMjM4MTgzOGU5
Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRiMmU5ZGNhNDFjMDc3NmJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9u
dENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0dGVycHJlc3NlZEdseXBo
c1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwg
Q0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXpl
KiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0xldHRlcnByZXNzZWRH
bHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEZvbnQmIGZv
bnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBnbHlwaHMsIGNvbnN0IENH
U2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFCTEUoTEVUVEVSUFJFU1Mp
CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRhKCk7CisgICAgY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKICAg
ICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwpIHsKICAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0ZXh0LiBTZWUgPHJkYXI6
Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAtMTU4LDE0ICsxNTgsMTQg
QEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwgQ0dDb250ZXh0
UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBhZHZhbmNl
cywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90
IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBvaW50LnkoKSk7CiAKLSAg
ICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LT5wbGF0Zm9ybURh
dGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LnBs
YXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBvc2l0aW9ucyhjb3VudCk7
CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgpKQogICAgICAgICBmaWxs
VmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvbnRleHQsIGFk
dmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCogZm9udCwg
Q0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQpKTsKIAotICAgICAgICBD
R1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQt
PmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNlbGluZSkgLSBmb250LT5m
b250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0g
RmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9udE1ldHJpY3MoKS5mbG9h
dEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFz
Y2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAg
ICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBseUFmZmluZVRyYW5zZm9y
bSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwogICAgICAgICAgICAgcG9z
aXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENHUG9pbnRNYWtlKHBvc2l0
aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRyYW5zbGF0aW9uLmhlaWdo
dCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0aWMgQ0dTaXplIGRpbGF0
aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9CiAjZW5kaWYKIAotdm9p
ZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGlu
dCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBjb25zdAordm9pZCBG
b250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBjb25zdAogewotICAgIGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQtPnBsYXRmb3JtRGF0YSgp
OworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxhdGZv
cm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJvb2wgY2hhbmdlRm9udFNt
b290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9vdGhlZEZvbnRzID0gY29u
dGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CisgICAgYm9vbCBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFsaWFzZWRGb250RGlsYXRp
b25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3JpcHRpb24oKS5mb250U21v
b3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGNvbnRleHQtPnNl
dFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaG91bGRBbnRpYWxp
YXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFsc2U7CiAgICAgICAgIGNo
YW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFudGlhbGlhc2VkQW5kU21v
b3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8gc3RyaWN0bHkgYW50aWFs
aWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN1YnBpeGVsQW50
aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwor
ICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKICAgICAgICAgc2hvdWxk
U21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21vb3RoaW5nID0gdHJ1ZTsK
ICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMgPSB0cnVlOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewotICAgICAgICBjb250ZXh0
LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFu
dGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFsc2U7CiAgICAg
ICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFudGlhbGlhc2Vk
QW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgRm9udENh
c2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBm
b250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChjZ0NvbnRleHQsIHBsYXRm
b3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnByZXNzRWZmZWN0ID0gc2hv
dWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJvb2wgdXNlTGV0dGVycHJl
c3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250ZXh0KTsKICAgICBGbG9h
dFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmluZVRyYW5zZm9ybSBtYXRy
aXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkgKzMzOSw5IEBAIHZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
b250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjZ0NvbnRleHQs
IG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250ZXh0U2V0U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOwogI2Vs
c2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwgW2RyYXdGb250IHJlbmRl
cmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7CisgICAg
c2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9udCByZW5kZXJpbmdNb2Rl
XSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7CiAjZW5kaWYKICAgICBD
R0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwogCkBA
IC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgIGZsb2F0IHNo
YWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBzaGFkb3dD
b2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LT5maWxs
Q29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBDb2xvclNwYWNlIGZp
bGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOworICAgIGNvbnRleHQuZ2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9y
U3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0gPSBjb250ZXh0LT5nZXRD
VE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC0+c3ludGhldGljQm9s
ZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RNID0gY29udGV4dC5nZXRD
VE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xk
T2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYgIWNvbnRleHRDVE0uaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAgICBGbG9hdFNpemUgaG9y
aXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RNLm1hcFNpemUoRmxvYXRT
aXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRMZW5ndGhJbkRldmljZVBp
eGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4ZWxzLndpZHRoKCkgKiBo
b3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsgaG9yaXpvbnRhbFVuaXRT
aXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBp
eGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29u
c3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBob3Jpem9udGFsVW5pdExl
bmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xv
ci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFw
Rm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBjb250ZXh0
Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYmICFjb250ZXh0LT5pc0lu
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9IGNvbnRleHQu
dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQo
KSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCkgJiYg
KCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29udGV4dENUTS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5pc0luVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNp
bXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywg
dG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAgICAgICAgY29udGV4dC0+
Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC0+ZmlsbENv
bG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgQ29sb3IgZmls
bENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENv
bG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5i
bHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0g
ICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9y
U3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNo
YWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50LngoKSAr
IHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmlu
ZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZs
aXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9
IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250ZXh0LT5zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBw
b2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4dC5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhG
bG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQsIGNnQ29udGV4dCwgZ2x5
cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlwaEJ1
ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAgIGlmIChzeW50aGV0aWNC
b2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50
KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93VGV4dFkpLCBmb250LCBj
Z0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dT
aXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CisgICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9yU3BhY2UpOwogICAgIH0K
IAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKEZsb2F0
UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9pbnQueSgpKSwgZm9udCwg
Y2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENH
U2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKIAogICAgIGlm
IChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAg
Y29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwg
c2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyArNjYwLDcgQEAgZmxvYXQg
Rm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFuY2U7CiB9CiAKLWZsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIg
aG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZvciBlYWNoIGdseXBoLgog
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3OCw3IEBAIGZsb2F0IEZv
bnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJp
bmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25z
dAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3Ry
aW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29u
c3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBpbml0aWFsQWR2
YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywg
Z2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBjMTRmNjBmYzY2OWJl
NDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlhZTBiMmJmMjk2YTBmYTc0
ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCB2b2lkIEZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0g
Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAg
ICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW4t
PmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0gaW4yLT5h
c0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKICAgICBBU1NFUlQoaW1h
Z2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4y
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNv
dXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3Np
dGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcApp
bmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMxOWM2Li44NzY2YWVjYjIy
MzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRSZWN0IGlt
YWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAgICAgUmVm
UHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdldFVubXVs
dGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAzNmJlZmU3
YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4NzEzOGZiZGYzZWMxMDc3
MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBA
IHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZm
ZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJl
c3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJD
b250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZp
bHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIq
IGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1h
Z2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEsOCArMjgxLDggQEAgdm9p
ZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAgICBmaWx0
ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRl
UGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdl
KGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFwcGxpZXMg
b25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEgQEAgdm9p
ZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50UmVjdCBh
ZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRlUGFpbnRS
ZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVzdGluYXRp
b25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50
UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVj
dCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0
LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgYWRqdXN0
ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVk
RGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKLSAgICAg
ICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
cjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlcjItPmxv
Z2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CisgICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRS
ZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNpemUoKSks
IENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRUNP
TVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250
ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRy
YXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNl
QXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
MiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBmaWx0ZXJD
b250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwot
ICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFp
bnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgp
KSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApp
bmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2OTZmLi42MzNlYmM2NjBi
MWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCkBAIC04
OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZlcigpOwog
ICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiByZXN1bHRDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQocmVzdWx0Q29udGV4dCk7
Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsKLSAgICByZXN1
bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRDb250ZXh0LT5zZXRBbHBo
YSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJbWFnZS0+
Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsK
KyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENvbnRleHQu
c2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJhZGl1cywg
b2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIApAQCAtMTA1LDEx
ICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAK
ICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1BpeGVsQXJy
YXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgpLCBJbWFn
ZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKLSAgICByZXN1bHRDb250
ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAgIHJlc3Vs
dENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
cmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9u
T3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
U291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+
ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3Vy
Y2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQg
RkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZkOGZkZTU5
MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2NzAyMjZkMDE4YWIyMzcy
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNvbG9yID0gY29sb3JX
aXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgpKTsKLSAg
ICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMjZiOTMyYWNm
Zjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUzODVhZTQyMzBiYTNjOTE4
ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTAgQEAgdm9pZCBGRU1l
cmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHJlc3Vs
dEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250ZXh0ID0g
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChpKTsKLSAg
ICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
aW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNw
cAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFhNGUyZjllLi5mZmVhNjM4
NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0
UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1
dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAg
ICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgpLCBm
aWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4
dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1h
Z2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhkMzE3MmQ5
ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2ZWNmOTMxYWVhNWY4MDlk
YmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBGRVRpbGU6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFn
ZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5NYXhFZmZl
Y3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGlsZUltYWdl
Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAgIEdyYXBo
aWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOworICAg
IHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngoKSwgLWlu
TWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+YWJzb2x1
dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IHRp
bGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGlsZUltYWdl
Q29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0dGVyblRy
YW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZlY3RMb2Nh
dGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRpb24ueSgp
KTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuVHJh
bnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKFdURjo6bW92
ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZpbHRlckNv
bnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCku
c2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRl
eCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNjLi5iYTE0NzEyYTNjZjg0
MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC00NjYs
NyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29udGV4dCgpKTsKICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApp
bmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi43MGIxZDU1NjRm
NmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApAQCAtNTEs
MTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsK
ICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250
ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAg
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VCdWZmZXIo
KTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0ZXJDb250
ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAg
ICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVzdGluYXRp
b25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAK
aW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2UxN2UyMy4uMzE5OGIwMzc4
M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVy
KGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsK
KyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIuc291cmNl
SW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZvaWQgU291
cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQppbmRleCAwMmM0OGQ4ZmIzNjY1
ZjhjYWUyNDhiZDJhYjc2ZjcxODE4NzRiOTEyLi5hY2UxOTA1NGI5ZGE1MTBhNzE5MWQwMGI0ZTVi
ZjZiMmRkY2Q3OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KQEAgLTI1Niw3ICsyNTYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9h
dFBvaW50JiBwb2ludCwgZmxvYXQgdwogCiAgICAgLy8gRHJhdyB1bmRlcmxpbmUuCiAjaWYgIVBM
QVRGT1JNKElPUykKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KHRoaXMpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoKnRo
aXMpOwogICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjdXJyZW50Q29udGV4dCA9IFtOU0dyYXBoaWNz
Q29udGV4dCBjdXJyZW50Q29udGV4dF07CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSAoQ0dD
b250ZXh0UmVmKVtjdXJyZW50Q29udGV4dCBncmFwaGljc1BvcnRdOwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KaW5kZXggZmQxM2Fi
ZmI2ODJlMjFiYjlhMDhhOGY2NGZiZTllMDE0YjJmNTdmMy4uZjQxMDI3ZjUyZWI4ZmI5OWVkZjIy
YzY3ZjAxYjBkOGMzMjUxZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ljb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ljb25NYWMubW0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJY29uOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAo
Y29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQygmY29udGV4dCk7CisgICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudEdDKGNvbnRleHQpOwogCiAgICAg
W21fbnNJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAwLCBbbV9u
c0ltYWdlIHNpemVdLndpZHRoLCBbbV9uc0ltYWdlIHNpemVdLmhlaWdodCkgb3BlcmF0aW9uOk5T
Q29tcG9zaXRlU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0LmgKaW5kZXggMDFlODZmMWNjOTJhNWY5NjcwYzJiYzgwY2M5OWIyMjczYTE1NjFlOC4u
MTk2ZGVjYzY0NDdiYjE0MGRkOGRjYzA5OWFhMzg1MGQ4YzlkZjllZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKQEAgLTEyNyw4ICsxMjcsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBhN2EyMTM3ZGMwMzM4NmM0NThmNTY1ZDlj
MzI1YTEyYzZjNjEwOTk0Li5hNGMwMGI3NzFmNTg3YjIxY2IxMzIxZjJiNWZiNTM1MDdlMDY5NTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xMTg0LDcgKzExODQsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZXBhaW50KCkKICAgICBtX3BsYXllci0+cmVw
YWludCgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludEN1cnJlbnRG
cmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQogewogICAg
IGlkIHF0VmlkZW9SZW5kZXJlciA9IG1fcXRWaWRlb1JlbmRlcmVyLmdldCgpOwogICAgIGlmICgh
cXRWaWRlb1JlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5kZXJp
bmdNb3ZpZUxheWVyKSB7CkBAIC0xMTk3LDkgKzExOTcsOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNv
bnRleAogICAgIHBhaW50KGNvbnRleHQsIHIpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQogewotICAgIGlmIChjb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgbV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKKyAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkgfHwgbV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKICAgICAgICAgcmV0
dXJuOwogICAgIGlkIHF0VmlkZW9SZW5kZXJlciA9IG1fcXRWaWRlb1JlbmRlcmVyLmdldCgpOwog
ICAgIGlmICghcXRWaWRlb1JlbmRlcmVyKQpAQCAtMTIxMSwxMiArMTIxMSwxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcgogICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3RvcigxLjBmLCAtMS4wZik7
CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdChGbG9hdFBvaW50KCksIHIuc2l6ZSgpKTsKIAotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29u
dGV4dC0+dHJhbnNsYXRlKHIueCgpLCByLnkoKSArIHIuaGVpZ2h0KCkpOwotICAgIGNvbnRleHQt
PnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShyLngoKSwgci55KCkg
KyByLmhlaWdodCgpKTsKKyAgICBjb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAgICBjb250
ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAKLSAg
ICBuZXdDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFw
aGljc1BvcnQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpOT107CisgICAgbmV3
Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQ
b3J0OmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpOT107CiAKICAgICBbTlNHcmFw
aGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwogICAgIFtOU0dyYXBoaWNzQ29udGV4dCBz
ZXRDdXJyZW50Q29udGV4dDpuZXdDb250ZXh0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KaW5kZXgg
MGRjZjZjMWNhOWNmZmQyZDIzZDZmNDhjNWM5MTY0M2UxYzEwMDViNy4uYmZhYWZhOTM1NzAwMDdk
NWZkYzIzNTNiMDFiMjRkMTQ0NTMxYWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KQEAgLTY5
LDE5ICs2OSwxOSBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25z
dAogICAgIHJldHVybiBbbV9kb2N1bWVudCBwYWdlQ291bnRdOwogfQogCi12b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewog
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRDb250ZXh0KGNvbnRl
eHQpOwogCiAgICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRhdGVkIGJ5IFBERktpdCBidXQg
YXJlIG5vdCBzYXZlZAogICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mgc3RhdGUgc3RhY2suICg8cmRh
cjovL3Byb2JsZW0vMTQ5NTE3NTk+KQotICAgIGJvb2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250
ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0g
ICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbiA9IENHQ29udGV4dEdldEFsbG93c0Zv
bnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAg
Ym9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6
YXRpb24gPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBbW21fZG9jdW1lbnQgcGFnZUF0SW5kZXg6MF0g
ZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlCb3hDcm9wQm94XTsKIAotICAgIENHQ29udGV4dFNldEFs
bG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1Ntb290
aGluZyk7Ci0gICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbik7Cisg
ICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCBhbGxvd3NTbW9vdGhpbmcpOworICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhl
bFF1YW50aXphdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFF1
YW50aXphdGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRleCA2YzA4MjU4MjkwOTVk
Yjc5ZmE1NDhiNmU3Y2IzNzY2YjQzYzkwM2YzLi42OGNlMzEzZTFmMGY3NDdlYWNmZjZkYWE5NjBi
ZjA0ODBlZDZmMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAgdm9p
ZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBHcmFwaGljc0xheWVyKgogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFw
cGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNldFRleHRE
cmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7CisgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJl
TWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7CiAKICAgICBJbnRSZWN0IHNvdXJjZVJlY3QodGFy
Z2V0UmVjdCk7CiAgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZzZXQpOwotICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZSgtb2Zmc2V0LngoKSwgLW9mZnNldC55KCkpOwotICAgIHNvdXJjZUxheWVy
LT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgc291cmNlUmVjdCk7CisgICAg
Y29udGV4dC50cmFuc2xhdGUoLW9mZnNldC54KCksIC1vZmZzZXQueSgpKTsKKyAgICBzb3VyY2VM
YXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgc291cmNlUmVjdCk7CiAK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShEb250Q29w
eUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFpbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggYzQ5MGIxMTE2MWZkOGUy
NzIzYWE5NjYyZDFiNTAwMzk0NjMxNjY4Yi4uYTI3YTJlZjZmZWNmN2U4OGQyYWEzNWYxZThjYWE2
NTI1NjFhZmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ZvbnRDR1dpbi5jcHAKQEAgLTEyNywyNSArMTI3LDI1IEBAIHN0YXRpYyBDR1BhdGhSZWYg
Y3JlYXRlUGF0aEZvckdseXBoKEhEQyBoZGMsIEdseXBoIGdseXBoKQogICAgIHJldHVybiBwYXRo
OwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsCit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhC
dWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50KSBjb25zdAogewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBncmFwaGljc0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBncmFw
aGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgYm9vbCBzaG91bGRVc2VGb250U21v
b3RoaW5nID0gV2ViQ29yZVNob3VsZFVzZUZvbnRTbW9vdGhpbmcoKTsKIAogICAgIHN3aXRjaChm
b250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2Vk
OiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwogICAgICAg
ICBzaG91bGRVc2VGb250U21vb3RoaW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
aG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSB0
cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewotICAg
ICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogICAgICAgICBzaG91
bGRVc2VGb250U21vb3RoaW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LAogCiAgICAgdWludDMyX3Qgb2xk
Rm9udFNtb290aGluZ1N0eWxlID0gd2tTZXRGb250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBz
aG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBs
YXRmb3JtRGF0YSA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9y
bURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAKICAgICBDR0NvbnRl
eHRTZXRGb250KGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLmNnRm9udCgpKTsKIApAQCAtMTc4LDQz
ICsxNzgsNDMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwKICAgICBGbG9hdFNpemUgdHJhbnNs
YXRpb24gPSBnbHlwaEJ1ZmZlci5vZmZzZXRBdChmcm9tKTsKIAogICAgIENHQ29udGV4dFNldEZv
bnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7Ci0gICAgd2tTZXRDR0NvbnRl
eHRGb250UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LT5pc1N5c3RlbUZvbnQoKSwgZmFs
c2UsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKKyAgICB3a1NldENHQ29udGV4dEZv
bnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQuaXNTeXN0ZW1Gb250KCksIGZhbHNlLCBm
b250LnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZz
ZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBD
b2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFj
ZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAotICAgIGJvb2wgaGFzU2ltcGxl
U2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZp
bGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3ND
b250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC0+Z2V0
Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CisgICAgYm9vbCBoYXNT
aW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1v
ZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdyYXBo
aWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4dC5n
ZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBpZiAoaGFz
U2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZl
cyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBp
eGVsIGFudGlhbGlhc2luZy4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclNoYWRvdygp
OwotICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvcigp
OwotICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3JhcGhpY3NDb250ZXh0LT5m
aWxsQ29sb3JTcGFjZSgpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xvcigpOwor
ICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxD
b2xvclNwYWNlKCk7CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5y
ZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xv
ci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvciwgc2hh
ZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQueCgpICsg
dHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJ
ZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGll
ZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAg
ICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsg
c2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGdyYXBoaWNzQ29udGV4dC0+c2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0gcG9pbnQu
eSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoZ3Jh
cGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwogICAgICAg
ICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBzaGFkb3dUZXh0WCwgc2hhZG93
VGV4dFkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4
dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihn
bHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgICAgIGlmIChmb250
LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFk
b3dPZmZzZXQud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgp
ICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOworICAgICAg
ICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIENHQ29udGV4
dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRo
KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBw
b2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7
CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwg
Z2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUqPihnbHlw
aEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAgIH0KLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29s
b3JTcGFjZSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4
dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRp
b24uaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250
ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+
KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICBpZiAoZm9udC0+
c3ludGhldGljQm9sZE9mZnNldCgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlv
bihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBmb250LT5zeW50
aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKKyAg
ICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKKyAgICAgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSAr
IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWln
aHQoKSk7CiAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0
LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGds
eXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICB9CiAKICAgICBpZiAo
aGFzU2ltcGxlU2hhZG93KQotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAogICAgIHdrUmVzdG9yZUZvbnRTbW9v
dGhpbmdTdHlsZShjZ0NvbnRleHQsIG9sZEZvbnRTbW9vdGhpbmdTdHlsZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKaW5kZXggM2Ew
Y2IzMGJlNzZjMGNlNzQxYzU0ZmVjYWRjN2M0OGVhMzljZGVlMy4uZGI5NjNjMmY2NDBiZGZhNGEz
YTY0ODU0NDhhNDlhMGM5ZjU4YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcApAQCAtOTEsNyArOTEsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIGludCBmcgogICAgIHJldHVybiBiZWZvcmVXaWR0aDsKIH0KIAotZmxvYXQgRm9udENhc2Nh
ZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRS
dW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0
CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICAvLyBUaGlzIGdseXBoIGJ1ZmZlciBob2xkcyBvdXIg
Z2x5cGhzICsgYWR2YW5jZXMgKyBmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5cGhC
dWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMDgsNyArMTA4LDcgQEAgZmxvYXQgRm9udENhc2NhZGU6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9u
dENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lkIEZv
bnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmss
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAg
IEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0
R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZl
ciwgRm9yVGV4dEVtcGhhc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JY29uV2luLmNwcAppbmRleCBlZTg4ZTIwNWJjMTM3ZTU2MjAwNDBjMGMxZmZiZGY5
MDhhNGVmYTJmLi5hNzgwNzBkOWFhYWY3ZjRlMmEzMTg5ZWUxNDhhNmE1Yzc5Mzg4YzA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCkBA
IC03OCw3ICs3OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd0NvbnRl
eHQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocikpOworICAgIExvY2FsV2luZG93c0NvbnRl
eHQgd2luZG93Q29udGV4dChjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHIpKTsKICAgICBEcmF3
SWNvbkV4KHdpbmRvd0NvbnRleHQuaGRjKCksIHIueCgpLCByLnkoKSwgbV9oSWNvbiwgci53aWR0
aCgpLCByLmhlaWdodCgpLCAwLCAwLCBESV9OT1JNQUwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2luZG93c0NvbnRleHQu
aAppbmRleCBjZjUxYjAwODEwODg1OWYwMzE1N2FjYjJlYTY2M2NmZDkwZWYxYmIxLi4zYWRkYzE0
NGZjNzFmNzYyNDBhZjk5Njk0ZmYwNWUwNjlkMjFiNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgK
QEAgLTM0LDI0ICszNCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb2NhbFdpbmRv
d3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbFdpbmRvd3NDb250ZXh0
KTsKIHB1YmxpYzoKLSAgICBMb2NhbFdpbmRvd3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5k
ID0gdHJ1ZSwgYm9vbCBtYXlDcmVhdGVCaXRtYXAgPSB0cnVlKQorICAgIExvY2FsV2luZG93c0Nv
bnRleHQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQgPSB0cnVlLCBib29sIG1heUNyZWF0ZUJpdG1hcCA9
IHRydWUpCiAgICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQogICAg
ICAgICAsIG1fcmVjdChyZWN0KQogICAgICAgICAsIG1fc3VwcG9ydEFscGhhQmxlbmQoc3VwcG9y
dEFscGhhQmxlbmQpCiAgICAgICAgICwgbV9tYXlDcmVhdGVCaXRtYXAobWF5Q3JlYXRlQml0bWFw
KQogICAgIHsKLSAgICAgICAgbV9oZGMgPSBtX2dyYXBoaWNzQ29udGV4dC0+Z2V0V2luZG93c0Nv
bnRleHQobV9yZWN0LCBtX3N1cHBvcnRBbHBoYUJsZW5kLCBtX21heUNyZWF0ZUJpdG1hcCk7Cisg
ICAgICAgIG1faGRjID0gbV9ncmFwaGljc0NvbnRleHQuZ2V0V2luZG93c0NvbnRleHQobV9yZWN0
LCBtX3N1cHBvcnRBbHBoYUJsZW5kLCBtX21heUNyZWF0ZUJpdG1hcCk7CiAgICAgfQogCiAgICAg
fkxvY2FsV2luZG93c0NvbnRleHQoKQogICAgIHsKLSAgICAgICAgbV9ncmFwaGljc0NvbnRleHQt
PnJlbGVhc2VXaW5kb3dzQ29udGV4dChtX2hkYywgbV9yZWN0LCBtX3N1cHBvcnRBbHBoYUJsZW5k
LCBtX21heUNyZWF0ZUJpdG1hcCk7CisgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2VX
aW5kb3dzQ29udGV4dChtX2hkYywgbV9yZWN0LCBtX3N1cHBvcnRBbHBoYUJsZW5kLCBtX21heUNy
ZWF0ZUJpdG1hcCk7CiAgICAgfQogCiAgICAgSERDIGhkYygpIGNvbnN0IHsgcmV0dXJuIG1faGRj
OyB9CiAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtX2dyYXBoaWNzQ29udGV4dDsK
KyAgICBHcmFwaGljc0NvbnRleHQmIG1fZ3JhcGhpY3NDb250ZXh0OwogICAgIEhEQyBtX2hkYzsK
ICAgICBJbnRSZWN0IG1fcmVjdDsKICAgICBib29sIG1fc3VwcG9ydEFscGhhQmxlbmQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCmluZGV4IGE3YmE0MmEyZWIzZTM5
ZTQyNzY1NWE0ODgzMjBjM2RjMGYyZDc3MDIuLjJlZTMxODIwY2VhMGE0ZGQwZjFmZTdjYTk4Zjcy
NDcxZGEwYzY0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICAgICAgZ3RrX3dpZGdl
dF9oaWRlKHBsYXRmb3JtV2lkZ2V0KCkpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2lkZ2V0SU9TLm1tCmluZGV4IGE4ZGZjYzMyMWJhZGZlZDI3MTBmZWVjNTA4ZDI3Y2MxM2E4
MTMxY2EuLjBlMzY1ZWYwODg0YWQyYzhhNmQ2NzI1Zjc0Yzc1ODc4YzU5MDAzNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQpAQCAtMTQxLDE0ICsxNDEsMTQgQEAg
TlNWaWV3KiBXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9
CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3Qm
IHIpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0
JiByKQogewotICAgIGlmIChwLT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHAucGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTlNWaWV3ICp2aWV3ID0g
Z2V0T3V0ZXJWaWV3KCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcC0+cGxhdGZv
cm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHAucGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwogCiAgICAgTlNSZWN0
IHZpZXdGcmFtZSA9IFt2aWV3IGZyYW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
RHJhZ0ltYWdlTWFjLm1tCmluZGV4IGI1MDVmYzEzOGQ1ODFhN2E0MWYxYmVhNjNmY2U1MjZlODU0
NjFmZGIuLjVmYjA1MmQ0NTY3ZGEwMGJkODJkZTIxYzlhZDY5MDEwNTVkNWQ5MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMjM0LDcgKzIzNCw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcsIE5TUG9pbnQgcG9p
bnQsIE5TRm9udCAqZm9udCwgTlNDb2xvciAqCiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNp
bmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVu
OiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07CiAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1
NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgCi0gICAgICAg
IHdlYkNvcmVGb250LmRyYXdUZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChw
b2ludC54LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKKyAgICAgICAg
d2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9p
bnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIWZsaXBwZWQpCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0Nv
bnRleHQsIDEsIC0xKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9M
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaAppbmRleCA1OGI2NDcyY2YyZTA3YzZiOTA4
MDQwMjg3ZWI2MmM1YTkwMjdlZjAxLi40OGZlYjJlYTRkMTlkNDBhMDk1YzlkZmVkNWI5NzYyYmFj
ODY3NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCkBAIC0yOSwxMSArMjksMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQpOwogcHVibGljOgot
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4
dCYpOwogICAgIH5Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0KCk7CiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZEdy
YXBoaWNzQ29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIG1fc2F2ZWRHcmFwaGljc0NvbnRl
eHQ7CiAgICAgTlNHcmFwaGljc0NvbnRleHQqIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dDsKICAg
ICBib29sIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0OwogfTsKQEAgLTQxLDggKzQxLDggQEAgcHJp
dmF0ZToKIGNsYXNzIENvbnRleHRDb250YWluZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENvbnRleHRDb250YWluZXIpOwogcHVibGljOgotICAgIENvbnRleHRDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCi0gICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQo
Z3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkKKyAgICBDb250ZXh0Q29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICA6IG1fZ3JhcGhpY3ND
b250ZXh0KGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkKICAgICB7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5tbQppbmRleCAyNjMyZjY2NDNiZmUwZjY5YTM0MjcxMTZmODc4MTFh
YjVkOWUwY2RlLi4xMzlkZDY2NWJjMWJlYjEwYjc1YTRlNDNlY2ZkN2Y3MjA3MTgxNmRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQubW0KQEAgLTI0LDExICsyNCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQotICAgIDogbV9kaWRTZXRH
cmFwaGljc0NvbnRleHQoZmFsc2UpCitMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkK
KyAgICA6IG1fc2F2ZWRHcmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQorICAgICwgbV9k
aWRTZXRHcmFwaGljc0NvbnRleHQoZmFsc2UpCiB7Ci0gICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4
dCA9IGdyYXBoaWNzQ29udGV4dDsKLSAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKKyAgICBn
cmFwaGljc0NvbnRleHQuc2F2ZSgpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHRo
aXMtPmNnQ29udGV4dCgpOwogICAgIGlmIChjZ0NvbnRleHQgPT0gW1tOU0dyYXBoaWNzQ29udGV4
dCBjdXJyZW50Q29udGV4dF0gZ3JhcGhpY3NQb3J0XSkgewpAQCAtNDksMTIgKzQ5LDEyIEBAIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCgp
CiAgICAgICAgIFttX3NhdmVkTlNHcmFwaGljc0NvbnRleHQgcmVsZWFzZV07CiAgICAgfQogCi0g
ICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOworICAgIG1fc2F2ZWRHcmFwaGlj
c0NvbnRleHQucmVzdG9yZSgpOwogfQogCiBDR0NvbnRleHRSZWYgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0OjpjZ0NvbnRleHQoKQogewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBt
X3NhdmVkR3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICByZXR1cm4gY2dDb250ZXh0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggNzdmMmQ4MDhjYzY0ODU3MTFiMWE5MmVj
OGY4YmNiOTdjMzhjNjg2Ni4uYzMzNzY1ZmMyNWQwZGMzYmE1ZjFmMmU1NTk5OWVhOGM3NTI4YWI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5tbQpAQCAtNTEzLDcgKzUxMyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNj
cm9sbGJhciYgc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAg
Y29udGV4dC5jbGlwKGRhbWFnZVJlY3QpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzY3Jv
bGxiYXIuZnJhbWVSZWN0KCkueCgpLCBzY3JvbGxiYXIuZnJhbWVSZWN0KCkueSgpKTsKLSAgICAg
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmY29udGV4dCk7Cisg
ICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7
CiAgICAgICAgIHNjcm9sbGJhclBhaW50ZXJQYWludChzY3JvbGxiYXJNYXAoKS0+Z2V0KCZzY3Jv
bGxiYXIpLmdldCgpLCBzY3JvbGxiYXIuZW5hYmxlZCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKaW5kZXggZjhlZTE2ZWI5ZWExMjE0M2IyMTI1ZjA4YWZk
NjM2MDZjYzg0MTcxMi4uM2JhZGU3YTY2ZTA5ZDc5NjM2ODExM2U0NDY3OWUwODJmN2Y4NDNmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTUyLDEzICs1MiwxMyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFj
ZShDb250cm9sUGFydCBwYXJ0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJ0ID09IFB1c2hC
dXR0b25QYXJ0OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRy
b2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3Rvcikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0
LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxv
YXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29u
dHJvbFBhaW50UmVjdChDb250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVj
dCYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IE9u
Y2UgUmVuZGVyVGhlbWVNYWMgaXMgY29udmVydGVkIG92ZXIgdG8gdXNlIFRoZW1lIHRoZW4gdGhp
cyBjYW4gYmUgaW50ZXJuYWwgdG8gVGhlbWVNYWMuCiAgICAgc3RhdGljIE5TVmlldyogZW5zdXJl
ZFZpZXcoU2Nyb2xsVmlldyosIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBib29sIHVzZVVucGFyZW50
ZWRWaWV3ID0gZmFsc2UpOwogICAgIHN0YXRpYyB2b2lkIHNldEZvY3VzUmluZ0NsaXBSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpOwotICAgIHN0YXRpYyBib29sIGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRo
Vmlld0ludG9Db250ZXh0KE5TQ2VsbCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVj
dCYsIE5TVmlldyosIGJvb2wgLyogZHJhd0J1dHRvbkNlbGwgKi8sIGJvb2wgLyogZHJhd0ZvY3Vz
UmluZyAqLywgYm9vbCAvKiB1c2VJbWFnZUJ1ZmZlciAqLywgZmxvYXQgLyogZGV2aWNlU2NhbGVG
YWN0b3IgKi8pOworICAgIHN0YXRpYyBib29sIGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0lu
dG9Db250ZXh0KE5TQ2VsbCosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIE5T
VmlldyosIGJvb2wgLyogZHJhd0J1dHRvbkNlbGwgKi8sIGJvb2wgLyogZHJhd0ZvY3VzUmluZyAq
LywgYm9vbCAvKiB1c2VJbWFnZUJ1ZmZlciAqLywgZmxvYXQgLyogZGV2aWNlU2NhbGVGYWN0b3Ig
Ki8pOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IDUxY2ZkMGRlM2EzYjU5ZmU0OTdlOTZhMDA4YmE4Y2U4YmZm
OThmMDguLjFiZDUwOWY1NzBjODQxNjEwMzBjODUzNzg5NWQ3ZTM2ZWExNTZjMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0
aWMgYm9vbCBkcmF3Q2VsbEZvY3VzUmluZyhOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUs
IE5TVmlldyAqY29udHJvbFZpZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQg
cGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYg
Y29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCitzdGF0aWMgdm9p
ZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVz
JiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIApAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyB2
b2lkIHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0
ZXMmIGNvbnRyb2xTdGF0CiAgICAgfQogICAgIGNvbnRyb2xTdGF0ZXMuc2V0RGlydHkoZmFsc2Up
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAg
ICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gW3RvZ2dsZUJ1dHRvbkNlbGwgY29udHJvbFNp
emVdOwogICAgIEludFNpemUgem9vbWVkU2l6ZSA9IGJ1dHRvblR5cGUgPT0gQ2hlY2tib3hQYXJ0
ID8gY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXSA6IHJhZGlvU2l6ZXMoKVtjb250cm9sU2l6
ZV07CkBAIC00MTIsOSArNDEyLDkgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29u
dHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKICAgICBpZiAo
em9vbUZhY3RvciAhPSAxLjBmKSB7CiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZs
YXRlZFJlY3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0
SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAg
ICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0g
ICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVj
dC55KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZs
YXRlZFJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rv
ciwgem9vbUZhY3RvcikpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0
LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOwogICAgIH0KIAogICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CkBAIC00MzEsMTEgKzQzMSwxMSBAQCBz
dGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250
cm9sU3RhdGVzJiBjb250cm9sU3RhdAogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEwMDAKICAgICBpZiAoW3RvZ2dsZUJ1dHRvbkNlbGwgX3N0YXRlQW5pbWF0aW9u
UnVubmluZ10pIHsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCks
IGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwg
LTEpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKDAsIC1pbmZsYXRlZFJlY3QuaGVpZ2h0
KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRl
ZFJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAg
ICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7CiAKLSAg
ICAgICAgW3RvZ2dsZUJ1dHRvbkNlbGwgX3JlbmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUluQ29u
dGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50KDAs
IDApXTsKKyAgICAgICAgW3RvZ2dsZUJ1dHRvbkNlbGwgX3JlbmRlckN1cnJlbnRBbmltYXRpb25G
cmFtZUluQ29udGV4dDpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNNYWtl
UG9pbnQoMCwgMCldOwogICAgICAgICBpZiAoIVt0b2dnbGVCdXR0b25DZWxsIF9zdGF0ZUFuaW1h
dGlvblJ1bm5pbmddICYmIGlzQ2VsbEZvY3VzZWQpCiAgICAgICAgICAgICBuZWVkc1JlcGFpbnQg
PSBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQodG9nZ2xl
QnV0dG9uQ2VsbC5nZXQoKSwgY29udGV4dCwgaW5mbGF0ZWRSZWN0LCB2aWV3LCBmYWxzZSwgdHJ1
ZSwgdXNlSW1hZ2VCdWZmZXIsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICB9IGVsc2UKQEAgLTUy
MCwxNCArNTIwLDE0IEBAIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmJ1dHRvbihDb250cm9sUGFydCBw
YXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzCiAgICAgcmV0dXJuIGNlbGw7
CiB9CiAgICAgCi1zdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250
cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Ny
b2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikK
K3N0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMm
IGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgIAogICAgIC8vIERldGVybWluZSB0aGUgd2lk
dGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxs
IGZvciBwYWludGluZy4KICAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29udHJv
bFN0YXRlcy5zdGF0ZXMoKTsKICAgICBOU0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBidXR0b24o
cGFydCwgY29udHJvbFN0YXRlcywgSW50U2l6ZSh6b29tZWRSZWN0LnNpemUoKSksIHpvb21GYWN0
b3IpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCiAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFtidXR0b25DZWxsIGNvbnRyb2xTaXplXTsK
ICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBidXR0b25TaXplcygpW2NvbnRyb2xTaXplXTsKQEAg
LTU0Nyw5ICs1NDcsOSBAQCBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0
LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFwaGljcwogICAgICAgICBpZiAoem9v
bUZhY3RvciAhPSAxLjBmKSB7CiAgICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5m
bGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgICAgIGluZmxhdGVkUmVj
dC5zZXRIZWlnaHQoaW5mbGF0ZWRSZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAg
ICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0Lnko
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9v
bUZhY3RvcikpOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3Qu
eCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShp
bmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQu
c2NhbGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgICAgIGNv
bnRleHQudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCkBAIC01OTksNyArNTk5LDcgQEAgc3RhdGljIE5TQ29udHJv
bFNpemUgc3RlcHBlckNvbnRyb2xTaXplRm9yRm9udChjb25zdCBGb250Q2FzY2FkZSYgZm9udCkK
ICAgICByZXR1cm4gTlNNaW5pQ29udHJvbFNpemU7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U3Rl
cHBlcihDb250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KikK
K3N0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KikKIHsKICAgICAvLyBXZSBkb24ndCB1c2UgTlNTdGVwcGVyQ2Vs
bCBiZWNhdXNlIHRoZXJlIGFyZSBubyB3YXlzIHRvIGRyYXcgYW4KICAgICAvLyBOU1N0ZXBwZXJD
ZWxsIHdpdGggdGhlIHVwIGJ1dHRvbiBoaWdobGlnaHRlZC4KQEAgLTYxNywxMyArNjE3LDEzIEBA
IHN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAgICAgZHJhd0luZm8ua2luZCA9IGtUaGVtZUlu
Y0RlY0J1dHRvbjsKIAogICAgIEludFJlY3QgcmVjdCh6b29tZWRSZWN0KTsKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBpZiAoem9vbUZhY3RvciAh
PSAxLjBmKSB7CiAgICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC8gem9vbUZhY3Rv
cik7CiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsK
LSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAg
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgIH0KICAgICBDR1JlY3QgYm91bmRz
KHJlY3QpOwogICAgIENHUmVjdCBiYWNrZ3JvdW5kQm91bmRzOwpAQCAtNjY0LDcgKzY2NCw3IEBA
IHZvaWQgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIAogY29uc3QgZmxvYXQgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoID0gMy4wZjsKIAot
Ym9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlND
ZWxsKiBjZWxsLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaW5m
bGF0ZWRSZWN0LCBOU1ZpZXcqIHZpZXcsIGJvb2wgZHJhd0J1dHRvbkNlbGwsIGJvb2wgZHJhd0Zv
Y3VzUmluZywgYm9vbCB1c2VJbWFnZUJ1ZmZlciwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCiti
b29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0Nl
bGwqIGNlbGwsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbmZs
YXRlZFJlY3QsIE5TVmlldyogdmlldywgYm9vbCBkcmF3QnV0dG9uQ2VsbCwgYm9vbCBkcmF3Rm9j
dXNSaW5nLCBib29sIHVzZUltYWdlQnVmZmVyLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsK
ICAgICBBU1NFUlQoZHJhd0J1dHRvbkNlbGwgfHwgZHJhd0ZvY3VzUmluZyk7CiAgICAgYm9vbCBu
ZWVkc1JlcGFpbnQgPSBmYWxzZTsKQEAgLTY3OSw3ICs2NzksNyBAQCBib29sIFRoZW1lTWFjOjpk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqIGNlbGwsIEdyYXBo
aWNzQ29udAogICAgICAgICAgICAgaWYgKGRyYXdGb2N1c1JpbmcpCiAgICAgICAgICAgICAgICAg
bmVlZHNSZXBhaW50ID0gZHJhd0NlbGxGb2N1c1JpbmcoY2VsbCwgaW1hZ2VCdWZmZXJEcmF3UmVj
dCwgdmlldyk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlU1JHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkg
LSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RP
dXRsaW5lV2lkdGgpKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIuZ2V0KCksIENvbG9yU3BhY2VTUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSAtIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCkpOwogICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgIH0KICAgICBpZiAoZHJh
d0J1dHRvbkNlbGwpCkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNv
bnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgc3QK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgVGhlbWVNYWM6OnBhaW50
KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3Is
IFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBw
YWdlU2NhbGVGYWN0b3IpCit2b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBD
b250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxW
aWV3LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewog
ICAgIHN3aXRjaCAocGFydCkgewogICAgICAgICBjYXNlIENoZWNrYm94UGFydDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCmluZGV4IDU0ZDljODU3ZGY0MDJiODJkN2E3
ZDEzMGY4Zjc2MTg1ZTJiZDc5YWEuLmIzMGZkODEzNDNjMDZhY2Q4OWJhOGY5ZTJmNjc0Mzc2ZjZl
YWQwMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTg1
LDkgKzE4NSw5IEBAIE5TVmlldyAqV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJl
dHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBwLCBj
b25zdCBJbnRSZWN0JiByKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwg
Y29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBpZiAocC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAg
IGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TVmlldyAq
dmlldyA9IGdldE91dGVyVmlldygpOwogCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBXaWRnZXQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKICAgICAgICAgICAg
IHNjcm9sbFZpZXcgPSAwOwogICAgIH0KIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBw
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcC5wbGF0
Zm9ybUNvbnRleHQoKTsKICAgICBBU1NFUlQoY2dDb250ZXh0ID09IFtjdXJyZW50Q29udGV4dCBn
cmFwaGljc1BvcnRdKTsKICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggM2I0OTc2NjBj
Yzk2OGIzMDFkY2YwNjdlNDNmOGVjNTg4OTcxZDEyNi4uNDZhN2NiNzExMjJhMDRlMjZiNmJhMmUx
NjE5MDM3YThiYWQ4ZDc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZS5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmKQogewogfQogCi12b2lkIE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlOjpwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQor
dm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZS5oCmluZGV4IDFjMWYyMTgyZTk1OTM3YzdhYzQ1YmI1ODc0YmVkZmMwYjBjZDEyYjAu
LjAzMjYxZmFjNjJmNDNmYzhhYTJjMGQ3MTA3NzgzNjYyMDdhNTNiMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFU
aW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1lZGlh
VGltZSBkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBzZWVrV2l0aFRvbGVyYW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCmluZGV4IGM2NTRhYjEwMzE5ZjcxNTA0ZDE0Zjdl
MjFhZTdkMTU2NWE0ZjA5MGIuLjNhMDk0NDQyM2I2ODRiODM4MWI3YTQzYTlhODk2YjM5YWY5YjQz
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1l
V2luLmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50
VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2NyCiAgICAg
aWYgKHNjcm9sbGJhclRoZW1lKQogICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91
bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChzY3JvbGxiYXJUaGVtZSwgcGFydCwgc3RhdGUpOwogCi0g
ICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVjdCwgYWxw
aGFCbGVuZCk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0
LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKIAogICAgIGlm
IChzY3JvbGxiYXJUaGVtZSkKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
V2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Ny
b2xsYgogICAgIGlmIChzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgYWxwaGFCbGVuZCA9IElzVGhl
bWVCYWNrZ3JvdW5kUGFydGlhbGx5VHJhbnNwYXJlbnQoc2Nyb2xsYmFyVGhlbWUsIFNQX0JVVFRP
TiwgeHBTdGF0ZSk7CiAKLSAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KCZj
b250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRv
d3NDb250ZXh0KGNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOwogICAgIFJFQ1QgdGhlbWVSZWN0
KHJlY3QpOwogICAgIGlmIChzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgRHJhd1RoZW1lQmFja2dy
b3VuZChzY3JvbGxiYXJUaGVtZSwgd2luZG93c0NvbnRleHQuaGRjKCksIFNQX0JVVFRPTiwgeHBT
dGF0ZSwgJnRoZW1lUmVjdCwgMCk7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYg
c2Nyb2xsYmEKICAgICBib29sIGFscGhhQmxlbmQgPSBmYWxzZTsKICAgICBpZiAoc2Nyb2xsYmFy
VGhlbWUpCiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRy
YW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQsIHN0YXRlKTsKLSAg
ICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBo
YUJsZW5kKTsKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQs
IHJlY3QsIGFscGhhQmxlbmQpOwogICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogICAgIGlmIChz
Y3JvbGxiYXJUaGVtZSkgewogICAgICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRo
ZW1lLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSwgJnRo
ZW1lUmVjdCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lk
Z2V0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmlu
ZGV4IDI3MWUzNmQ1Y2IzMTBmNWY2ODg3ZGQyMzc5MGE5YjZiYTQ2OGYwYTAuLjlhY2UxYTE0ODUy
NDlkNzU2ZTFiZDNlMjJlN2UxNjA2NDA1ZTlkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9XaWRnZXRXaW4uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJz
b3IoY29uc3QgQ3Vyc29yJiBjdXJzb3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJz
b3IoY3Vyc29yKTsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RWxsaXBzaXNCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNw
cAppbmRleCA0NjlmN2VmZWU4N2Y3NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li4yZThmZDBi
YjBhMmUwYmE0M2I2ZWM1NTYwYTQzNGQ2YmZmZmRiNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FbGxpcHNpc0JveC5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBFbGxpcHNpc0JveDo6RWxs
aXBzaXNCb3goUmVuZGVyQmxvY2tGbG93JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBl
bGxpcHNpcwogCiB2b2lkIEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFVuaXQgbGluZUJvdHRvbSkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5l
U3R5bGUoKTsKICAgICBDb2xvciB0ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcik7Ci0gICAgaWYgKHRleHRDb2xv
ciAhPSBjb250ZXh0LT5maWxsQ29sb3IoKSkKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KHRleHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgaWYgKHRleHRDb2xvciAh
PSBjb250ZXh0LmZpbGxDb2xvcigpKQorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0
Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFs
c2U7CiAgICAgaWYgKGxpbmVTdHlsZS50ZXh0U2hhZG93KCkpIHsKLSAgICAgICAgY29udGV4dC0+
c2V0U2hhZG93KExheW91dFNpemUobGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5
bGUudGV4dFNoYWRvdygpLT55KCkpLAorICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhMYXlvdXRT
aXplKGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPngoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+
eSgpKSwKICAgICAgICAgICAgIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5l
U3R5bGUudGV4dFNoYWRvdygpLT5jb2xvcigpLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKICAg
ICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICB9CkBAIC02MSwxOCArNjEsMTggQEAgdm9pZCBF
bGxpcHNpc0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgTGEKICAgICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZv
ciBwYWludGluZyB0aGUgdGV4dC4KICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5m
by5mb3JjZVRleHRDb2xvcigpID8gcGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tG
bG93KCkuc2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5k
LmlzVmFsaWQoKSAmJiBmb3JlZ3JvdW5kICE9IHRleHRDb2xvcikKLSAgICAgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihmb3JlZ3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xv
clNwYWNlKCkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRS
PyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgotICAgIGNvbnRl
eHQtPmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zs
b3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExh
eW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsg
bGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0
KGZvbnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwg
bV9zdHIsIGxpbmVTdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgo
KSArIHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZv
bnRNZXRyaWNzKCkuYXNjZW50KCkpKTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmls
bCBjb2xvci4KLSAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQotICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFj
ZSgpKTsKKyAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCisgICAgICAg
IGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7
CiAKICAgICBpZiAoc2V0U2hhZG93KQotICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOwor
ICAgICAgICBjb250ZXh0LmNsZWFyU2hhZG93KCk7CiAKICAgICBwYWludE1hcmt1cEJveChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tLCBsaW5lU3R5bGUpOwogfQpA
QCAtMTE5LDcgKzExOSw3IEBAIEludFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QoKQog
ICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQogCi12b2lkIEVs
bGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBGb250Q2FzY2FkZSYgZm9udCkKK3ZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAg
IENvbG9yIHRleHRDb2xvciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKTsKICAgICBDb2xvciBjID0gYmxvY2tGbG93KCkuc2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCk7CkBAIC0xMzIsMTIgKzEzMiwxMiBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVj
dGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAg
ICAgICBjID0gQ29sb3IoMHhmZiAtIGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBj
LmJsdWUoKSk7CiAKICAgICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJ
WE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQg
cnVuIGZsYWdzIGJlbG93LgogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJl
Y3QoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94
LnNlbGVjdGlvblRvcCgpLCAwLCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0
UnVuIHJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9u
dCwgbV9zdHIsIHN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKICAgICBmb250LmFkanVz
dFNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgLTEpOwotICAgIGNv
bnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlv
bihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSwgcnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxS
ZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25S
ZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigp
KSwgYywgc3R5bGUuY29sb3JTcGFjZSgpKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5p
dCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5oCmluZGV4IDI3ZTkxMmZmZmEwM2E1NGUxMjRkOWJkMzJmYzcx
OTE2NjMxY2IyNTEuLjQ0YzA1ZGFmMWFkMjRiY2ZiMDhmYzNjNDljZGExNGFiNzZjZjExMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCkBAIC00Miw3ICs0Miw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwYWludE1hcmt1cEJveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90
dG9tLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlaWdodDsgfQogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBz
ZWxlY3Rpb25TdGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0KLSAg
ICB2b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFp
bnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CiAgICAgSW5saW5lQm94KiBtYXJrdXBC
b3goKSBjb25zdDsKIAogICAgIGJvb2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDYy
ZGFjNGI4YjQ2MjIzODdiOGRjY2U3OGZlYTIwOTJkMjE0NDBlNWMuLjU3NTdlOWE4NTE4M2MwNzY4
MGJhMTlmNGE2YTMyMWU2NTc2ZDFjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcApAQCAtODAsNyArODAsNyBAQCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlcjo6fkZpbHRlckVmZmVjdFJlbmRlcmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBG
aWx0ZXJFZmZlY3RSZW5kZXJlcjo6aW5wdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gc291cmNl
SW1hZ2UoKSA/IHNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIHNvdXJj
ZUltYWdlKCkgPyAmc291cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5j
ZUZpbHRlcihSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlv
bikKQEAgLTQxNyw3ICs0MTcsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpi
ZWdpbkZpbHRlckVmZmVjdCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVz
dGluYXRpb25Db250ZXh0KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlG
aWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1faGF2ZUZpbHRlckVmZmVjdCAmJiBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJl
cigpKTsKICAgICBGaWx0ZXJFZmZlY3RSZW5kZXJlciogZmlsdGVyID0gbV9yZW5kZXJMYXllci0+
ZmlsdGVyUmVuZGVyZXIoKTsKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJl
bmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0
aW9uQwogICAgIExheW91dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3QoKTsKICAg
ICBkZXN0UmVjdC5tb3ZlKG1fcGFpbnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CiAK
LSAgICBkZXN0aW5hdGlvbkNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgp
LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAorICAgIGRl
c3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5k
ZXJMYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwKICAgICAgICAgc25hcFJl
Y3RUb0RldmljZVBpeGVscyhkZXN0UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1l
ZGlhdGVSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5oCmluZGV4IGJlYjNmNzdjNDhhMGEyYjRmYTEzYjZlNjQ1NmNiM2E3N2E5YjBm
NjguLjNlMTMzN2QzZDE1Zjc2MTE5MzRkNWM2ZDU3NmE5ZjE4MjAxNDc4YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC02OSw3ICs2
OSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJlcGFyZUZpbHRlckVmZmVjdChSZW5kZXJMYXll
ciosIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgYm9vbCBi
ZWdpbkZpbHRlckVmZmVjdCgpOwotICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3ND
b250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQpOworICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3Qo
R3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIAogICAgIEdyYXBoaWNz
Q29udGV4dCogZmlsdGVyQ29udGV4dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggYzRhNmU0M2M2NzIy
ZjQxMGY3YmY5MGQxMDhiOGM1NjBjMzIwMDA5Yy4uNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0
ZGFkNzFiN2QxMzRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFn
ZVF1YWxpdHlDb250cm9sbGVyLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlcjo6cmVzdGFydFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChj
TG93UXVhbGl0eVRpbWVUaHJlc2hvbGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXll
ciwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJC
b3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBj
b25zdCBMYXlvdXRTaXplJiBzaXplKQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBi
aXRtYXAgaW1hZ2UsIHRoZW4gbm9uZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBh
aW50IGF0IGhpZ2gKICAgICAvLyBxdWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+
aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRt
YXBJbWFnZSgpIHx8IGltYWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAob2Jq
ZWN0LT5zdHlsZSgpLmltYWdlUmVuZGVyaW5nKCkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29s
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgUgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdl
dENUTSgpOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgYm9vbCBjb250ZXh0SXNTY2FsZWQgPSAhY3VycmVudFRyYW5z
Zm9ybS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOwogICAgIGlmICghY29udGV4
dElzU2NhbGVkICYmIHNpemUgPT0gaW1hZ2VTaXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5v
IHNjYWxlIGluIGVmZmVjdC4gSWYgd2UgaGFkIGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwgd2Ug
Y2FuIGp1c3QgcmVtb3ZlIHRoaXMgb2JqZWN0IGZyb20gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNWQ3ZWU5
MmY1N2NlYTM2YmE2NzYzMzliODY4NmZjYTM1Y2JhNWJkLi5kMTRkYzQ5YWE3OWFmMzE1ZGFjOGUx
ZDUxMjFjMzQwMjYwZWY2NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1hZ2VRdWFs
aXR5Q29udHJvbGxlciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJv
bGxlcihjb25zdCBSZW5kZXJWaWV3Jik7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFs
aXR5KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25z
dCB2b2lkKiBsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFn
ZSosIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5k
ZXJlcldpbGxCZURlc3Ryb3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVt
b3ZlT2JqZWN0KCZyZW5kZXJlcik7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVGbG93Qm94LmNwcAppbmRleCAzNTliZWQ2NTYzMWYxN2RmODU0OWI3ZWMzNDYw
YThiMDkzZmUwMWY5Li5hODc0Y2RjMWM3ZDFkMWU3OGU0Yjc3NjA5OWVjY2EwYzhiNGIzYjk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMjIwLDgg
KzEyMjAsOCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgYwogICAgICAgICByZW5kZXJlcigpLnBh
aW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tn
cm91bmRCbGVlZE5vbmUsIHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19C
T1hfREVDT1JBVElPTl9CUkVBSykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94
RGVjb3JhdGlvbkJyZWFrKCkgPT0gRENMT05FKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+Y2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwg
aGVpZ2h0KCkpKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAo
TGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAg
ICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxM
YXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsK
ICAgICB9CiAjZW5kaWYKQEAgLTEyNTIsOCArMTI1Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBj
LCBjCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90
YWxMb2dpY2FsV2lkdGggOiBMYXlvdXRVbml0KHdpZHRoKCkpOwogICAgICAgICBMYXlvdXRVbml0
IHN0cmlwSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBMYXlvdXRVbml0KGhlaWdodCgpKSA6IHRv
dGFsTG9naWNhbFdpZHRoOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
Y2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChy
ZWN0LngoKSwgcmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVy
KCkucGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0
UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5k
QmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUoKSwgb3ApOwogICAgIH0KIH0KQEAgLTEzMzcsNyAr
MTMzNyw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIHJldHVybjsKIAogICAg
IExheW91dFBvaW50IGFkanVzdGVkUGFpbnRvZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2FsUmVj
dC5sb2NhdGlvbigpOwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
KCk7CiAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRv
ZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpOwogICAgIC8vIFNoYWRvdyBjb21lcyBmaXJzdCBhbmQg
aXMgYmVoaW5kIHRoZSBiYWNrZ3JvdW5kIGFuZCBib3JkZXIuCiAgICAgaWYgKCFyZW5kZXJlcigp
LmJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0
LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzKSkKQEAgLTEzODIsOCArMTM4Miw4IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hv
cml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAg
ICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3Ry
aXAodGhpcywgYm9yZGVySW1hZ2UsIHBhaW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAo
Y2xpcFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Y29udGV4dCk7CisgICAgICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIHJlbmRl
cmVyKCkucGFpbnRCb3JkZXIocGFpbnRJbmZvLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBz
dHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIGxpbmVTdHlsZSk7CiAgICAgfQogfQpAQCAtMTQxNSw4
ICsxNDE1LDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgCiAgICAgICAgIGNv
bXBvc2l0ZU9wID0gQ29tcG9zaXRlRGVzdGluYXRpb25JbjsKICAgICAgICAgaWYgKHB1c2hUcmFu
c3BhcmVuY3lMYXllcikgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKLSAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGlu
YXRpb25Jbik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoMS4wZik7CiAgICAgICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDI3LDE0ICsxNDI3LDE0IEBAIHZvaWQgSW5s
aW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzCiAgICAgYm9vbCBoYXNCb3hJbWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBt
YXNrQm94SW1hZ2UtPmNhblJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVm
ZmVjdGl2ZVpvb20oKSk7CiAgICAgaWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5p
c0xvYWRlZCgpKSB7CiAgICAgICAgIGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAg
cmV0dXJuOyAvLyBEb24ndCBwYWludCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1h
Z2UgdG8gbG9hZC4KICAgICB9CiAKICAgICAvLyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2Ug
YXJlIHRoZSBvbmx5IGJveCBmb3IgdGhpcyBvYmplY3QuICBJbiB0aG9zZQogICAgIC8vIGNhc2Vz
IG9ubHkgYSBzaW5nbGUgY2FsbCB0byBkcmF3IGlzIHJlcXVpcmVkLgogICAgIGlmICghcHJldkxp
bmVCb3goKSAmJiAhbmV4dExpbmVCb3goKSkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50Tmlu
ZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9m
ZnNldCwgZnJhbWVSZWN0LnNpemUoKSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVj
ZUltYWdlLCBjb21wb3NpdGVPcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJ
bWFnZShwYWludEluZm8uY29udGV4dCgpLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQs
IGZyYW1lUmVjdC5zaXplKCkpLCByZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFn
ZSwgY29tcG9zaXRlT3ApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXNr
IGltYWdlIHRoYXQgc3BhbnMgbXVsdGlwbGUgbGluZXMuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8g
YWRqdXN0IF90eCBhbmQgX3R5IGJ5IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlvdXMgbGluZXMuCkBA
IC0xNDUwLDEzICsxNDUwLDEzIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIExh
eW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQo
KSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBj
bGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAodGhpcywgbWFza05pbmVQaWVjZUltYWdlLCBw
YWludFJlY3QpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xp
cFJlY3QpOwotICAgICAgICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZv
LmNvbnRleHQsIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVp
Z2h0KSwgcmVuZGVyZXIoKS5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9w
KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5m
by5jb250ZXh0KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3Qp
OworICAgICAgICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRl
eHQoKSwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQp
LCByZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwog
ICAgIH0KICAgICAKICAgICBpZiAocHVzaFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCiBJbmxpbmVCb3gqIElubGlu
ZUZsb3dCb3g6OmZpcnN0TGVhZkNoaWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA5ZTZkMmNlYzBmZDQ1NDNhNjdhYTc4ZmJjMmQ3MWQy
ZGY4MjQwYjhiLi5mMzUxM2RjM2Q1MmNjN2M1NGRhZDcwYjQ5YTExYzJjZmYxNGQ2ZmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01MDUsNyArNTA1
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBjb25zdCBSZW5k
ZXJTdHlsZSYgbGluZVN0eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRJbmZvLmgKaW5kZXggMTViMWYyNDEyODI3NDRkYzViZDZkYjVjMmY5Y2Rm
MTc4ODViODk4NC4uZGRiYzkzMzUwYTczMmEzMTU1Yzc3NGVjYTI4NDk0NDNjNGI0MzY3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaApAQCAtNDksMjAgKzQ5LDMxIEBAIHR5cGVk
ZWYgSGFzaE1hcDxPdmVybGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVz
dFJlcXVlc3RNYXA7CiAgKiAodHh8dHkpIGlzIHRoZSBjYWxjdWxhdGVkIHBvc2l0aW9uIG9mIHRo
ZSBwYXJlbnQKICAqLwogc3RydWN0IFBhaW50SW5mbyB7Ci0gICAgUGFpbnRJbmZvKEdyYXBoaWNz
Q29udGV4dCogbmV3Q29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFz
ZSBuZXdQaGFzZSwgUGFpbnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAorICAgIFBhaW50SW5m
byhHcmFwaGljc0NvbnRleHQmIG5ld0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIG5ld1JlY3Qs
IFBhaW50UGhhc2UgbmV3UGhhc2UsIFBhaW50QmVoYXZpb3IgbmV3UGFpbnRCZWhhdmlvciwKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiBuZXdTdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgTGlzdEhh
c2hTZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzID0gbnVsbHB0ciwKICAgICAg
ICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gbnVsbHB0ciwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbmV3UGFpbnRDb250YWluZXIgPSBudWxscHRy
KQotICAgICAgICAgICAgOiBjb250ZXh0KG5ld0NvbnRleHQpCi0gICAgICAgICAgICAsIHJlY3Qo
bmV3UmVjdCkKKyAgICAgICAgICAgIDogcmVjdChuZXdSZWN0KQogICAgICAgICAgICAgLCBwaGFz
ZShuZXdQaGFzZSkKICAgICAgICAgICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9y
KQogICAgICAgICAgICAgLCBzdWJ0cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCiAg
ICAgICAgICAgICAsIG91dGxpbmVPYmplY3RzKG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAg
ICAgLCBvdmVybGFwVGVzdFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAgICAg
ICAsIHBhaW50Q29udGFpbmVyKG5ld1BhaW50Q29udGFpbmVyKQorICAgICAgICAgICAgLCBtX2Nv
bnRleHQoJm5ld0NvbnRleHQpCiAgICAgewogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuICptX2NvbnRleHQ7CisgICAgfQorCisgICAgdm9pZCBzZXRDb250ZXh0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dCA9ICZjb250ZXh0
OworICAgIH0KKwogICAgIHZvaWQgdXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgewogICAgICAgICBpZiAoIXN1YnRyZWVQ
YWludFJvb3QpCkBAIC05Myw3ICsxMDQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAg
aWYgKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9BbmNlc3RvclRyYW5z
Zm9ybSk7CisgICAgICAgIGNvbnRleHQoKS5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNm
b3JtKTsKIAogICAgICAgICBpZiAocmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMDMsNyArMTE0LDYgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Qu
c2V0U2l6ZShMYXlvdXRTaXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAotICAg
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dDsKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFp
bnRQaGFzZSBwaGFzZTsKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0xMTEs
NiArMTIxLDkgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5s
aW5lKj4qIG91dGxpbmVPYmplY3RzOyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBzaG91
bGQgYmUgcGFpbnRlZCBieSBhIGJsb2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3Zlcmxh
cFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzOwogICAgIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQg
b3JpZ2luYXRlcyB0aGUgY3VycmVudCBwYWludGluZworCitwcml2YXRlOgorICAgIEdyYXBoaWNz
Q29udGV4dCogbV9jb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOWFkZTc5NGE1N2YxZDAwY2E3
NDY1YjRjYzNmZDBmOGM4NjAzYzUyYS4uODY0OTZkZmE5Yjc1MGEzOWZhYzc3NWM5ZDExZGM5NjRj
OTJkYmRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0x
NDIwLDcgKzE0MjAsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBX
ZSBwYWludCBhZnRlciB3ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0
aGUgc2Nyb2xsYmFycyB3aWxsCiAgICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRl
ci4KICAgICBpZiAoKHBoYXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2Ug
PT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxvd0NsaXAoKSAm
JiBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFICYmIHBhaW50SW5mby5zaG91bGRQYWlu
dFdpdGhpblJvb3QoKnRoaXMpICYmICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHko
KSkKLSAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250
ZXh0LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0
KHBhaW50SW5mby5yZWN0KSk7CisgICAgICAgIGxheWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9s
cyhwYWludEluZm8uY29udGV4dCgpLCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxv
Y2s6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKQEAgLTE1MTYsOSArMTUxNiw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBh
aW50Q2FyZXQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNlCiAKICAgICBpZiAoY2FyZXRQYWludGVyID09IHRoaXMgJiYgKGlzQ29udGVudEVkaXRhYmxl
IHx8IGNhcmV0QnJvd3NpbmcpKSB7CiAgICAgICAgIGlmICh0eXBlID09IEN1cnNvckNhcmV0KQot
ICAgICAgICAgICAgZnJhbWUoKS5zZWxlY3Rpb24oKS5wYWludENhcmV0KHBhaW50SW5mby5jb250
ZXh0LCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5z
ZWxlY3Rpb24oKS5wYWludENhcmV0KHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50T2Zmc2V0LCBw
YWludEluZm8ucmVjdCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyYW1lKCkucGFnZSgp
LT5kcmFnQ2FyZXRDb250cm9sbGVyKCkucGFpbnREcmFnQ2FyZXQoJmZyYW1lKCksIHBhaW50SW5m
by5jb250ZXh0LCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJh
bWUoKS5wYWdlKCktPmRyYWdDYXJldENvbnRyb2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUo
KSwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsKICAg
ICB9CiB9CiAKQEAgLTE1MzgsMTYgKzE1MzgsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRP
YmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMK
ICAgICAgICAgICAgICAgICAvLyBvdmVyZmxvd3MgcmVnaW9uIFggYW5kIGlzIGFuIHVuc3BsaXR0
YWJsZSBlbGVtZW50IChsaWtlIGFuIGltYWdlKS4KICAgICAgICAgICAgICAgICAvLyBUaGUgc2Ft
ZSBhcHBsaWVzIGZvciBhIGJveCBvdmVyZmxvd2luZyB0aGUgdG9wIG9mIHJlZ2lvbiBYIHdoZW4g
dGhhdCBib3ggaXMgYWxzbyBmcmFnbWVudGVkIGluIHJlZ2lvbiBYLTEuCiAKLSAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICAgICAgICAgIGRpZENsaXBUb1JlZ2lvbiA9IHRy
dWU7CiAKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChkb3duY2FzdDxS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQ+KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRp
b25zQ2xpcFJlY3RGb3JCb3hJbk5hbWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJh
Z21lbnQpKTsKKyAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoZG93bmNh
c3Q8UmVuZGVyTmFtZWRGbG93VGhyZWFkPigqcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS5kZWNv
cmF0aW9uc0NsaXBSZWN0Rm9yQm94SW5OYW1lZEZsb3dGcmFnbWVudCgqdGhpcywgKm5hbWVkRmxv
d0ZyYWdtZW50KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3Jh
dGlvbnMocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChkaWRDbGlwVG9SZWdpb24pCi0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUo
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6cGFpbnRTZWxlY3Rpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE8KICAgICAgICAgTGF5b3V0VW5pdCBsYXN0VG9wID0gMDsKICAgICAgICAgTGF5
b3V0VW5pdCBsYXN0TGVmdCA9IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KCp0aGlzLCBsYXN0
VG9wLCBjYWNoZSk7CiAgICAgICAgIExheW91dFVuaXQgbGFzdFJpZ2h0ID0gbG9naWNhbFJpZ2h0
U2VsZWN0aW9uT2Zmc2V0KCp0aGlzLCBsYXN0VG9wLCBjYWNoZSk7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAKICAgICAgICAgTGF5b3V0UmVjdCBnYXBSZWN0c0JvdW5kcyA9IHNlbGVjdGlvbkdhcHMo
KnRoaXMsIHBhaW50T2Zmc2V0LCBMYXlvdXRTaXplKCksIGxhc3RUb3AsIGxhc3RMZWZ0LCBsYXN0
UmlnaHQsIGNhY2hlLCAmcGFpbnRJbmZvKTsKICAgICAgICAgaWYgKCFnYXBSZWN0c0JvdW5kcy5p
c0VtcHR5KCkpIHsKQEAgLTE3OTYsNyArMTc5Niw3IEBAIHN0YXRpYyB2b2lkIGNsaXBPdXRQb3Np
dGlvbmVkT2JqZWN0cyhjb25zdCBQYWludEluZm8qIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
CiAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBv
c2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNo
U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKICAgICAgICAgUmVuZGVyQm94KiByID0gKml0OwotICAgICAgICBwYWlu
dEluZm8tPmNvbnRleHQtPmNsaXBPdXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZz
ZXQueSgpICsgci0+eSgpLCByLT53aWR0aCgpLCByLT5oZWlnaHQoKSkpOworICAgICAgICBwYWlu
dEluZm8tPmNvbnRleHQoKS5jbGlwT3V0KEludFJlY3Qob2Zmc2V0LngoKSArIHItPngoKSwgb2Zm
c2V0LnkoKSArIHItPnkoKSwgci0+d2lkdGgoKSwgci0+aGVpZ2h0KCkpKTsKICAgICB9CiB9CiAK
QEAgLTE5NjYsNyArMTk2Niw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0
aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvCiAKICAgICBMYXlv
dXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290
QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9w
LCBsb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAg
ICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Z2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0xOTgzLDcg
KzE5ODMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdh
cChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVjdCBnYXBS
ZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2lj
YWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9n
aWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYg
KHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSks
IHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSks
IHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0yMDAwLDcgKzIwMDAsNyBA
QCBMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVy
QmxvY2smIHJvb3RCbG9jaywgY29uc3QgTAogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9v
dEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlv
biwgTGF5b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwg
cm9vdEJsb2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5m
bykKLSAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNl
UGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+
c2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkp
OwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IDY3ZDcyMTQwNDJiMmE3NTJkNzI5NDA0OTg3OGY0NWE5
MjlmMTY0YmUuLmUxZjNmMTdiOTBlMDQ5ODlhMTQyYTc0ZWNmNTRkN2U5ZTdjYmFmZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0yMTQ0LDcg
KzIxNDQsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6cGFpbnRDb2x1bW5SdWxlcyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiB7CiAgICAgUmVuZGVyQmxvY2s6OnBh
aW50Q29sdW1uUnVsZXMocGFpbnRJbmZvLCBwb2ludCk7CiAgICAgCi0gICAgaWYgKCFtdWx0aUNv
bHVtbkZsb3dUaHJlYWQoKSB8fCBwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghbXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgfHwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEl0ZXJhdGUg
b3ZlciBvdXIgY2hpbGRyZW4gYW5kIHBhaW50IHRoZSBjb2x1bW4gcnVsZXMgYXMgbmVlZGVkLgpA
QCAtMjE5Niw3ICsyMTk2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGlu
Z09iamVjdHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKICAgICAgICAgICAg
ICAgICBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS53aWR0aCgpLCBmbG9hdGluZ09iamVjdC0+
cmVuZGVyZXIoKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICByb290QmxvY2suZmxpcEZvcldyaXRp
bmdNb2RlKGZsb2F0Qm94KTsKICAgICAgICAgICAgIGZsb2F0Qm94Lm1vdmUocm9vdEJsb2NrUGh5
c2ljYWxQb3NpdGlvbi54KCksIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24ueSgpKTsKLSAgICAg
ICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+Y2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJv
eCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcE91dChzbmFwcGVkSW50
UmVjdChmbG9hdEJveCkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAppbmRleCBhZTZhZWE1YjVkNzgxN2E3M2Q5OTEzODBmMGRjMDcyOGVl
NTdlZTIyLi5mZjE5MWVhODk5ZDE5MDkxZGIwYTkyZmM4NTQ0Y2IwNmQzNmJlNGY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMTI0Miw5ICsxMjQyLDkgQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8pCiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYmdDb2xvciwgYmdMYXllciwg
dmlldygpLmJhY2tncm91bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNv
dXJjZU92ZXIsICZyb290QmFja2dyb3VuZFJlbmRlcmVyKTsKIH0KIAotQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK0JhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBS
ZW5kZXJCb3g6OmRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBC
YWNrZ3JvdW5kQmxlZWROb25lOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhp
cy0+c3R5bGUoKTsKQEAgLTEyNTIsNyArMTI1Miw3IEBAIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSBSZW5kZXJCb3g6OmRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0Nv
CiAgICAgaWYgKCFzdHlsZS5oYXNCYWNrZ3JvdW5kKCkgfHwgIXN0eWxlLmhhc0JvcmRlcigpIHx8
ICFzdHlsZS5oYXNCb3JkZXJSYWRpdXMoKSB8fCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVS
ZW5kZXJlZCgpKQogICAgICAgICByZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsKIAotICAgIEFm
ZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zv
cm0gY3RtID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBGbG9hdFNpemUgY29udGV4dFNjYWxpbmco
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0u
eVNjYWxlKCkpKTsKIAogICAgIC8vIEJlY2F1c2UgUm91bmRlZFJlY3QgdXNlcyBJbnRSZWN0IGlu
dGVybmFsbHkgdGhlIGluc2V0IGFwcGxpZWQgYnkgdGhlIApAQCAtMTI5MywyMSArMTI5MywyMSBA
QCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHBh
aW50UmVjdC54KCksIHBhaW50UmVjdC55KCkgKyAodGhpcy0+aGVpZ2h0KCkgLSBoZWlnaHQpIC8g
Miwgd2lkdGgsIGhlaWdodCk7IC8vIFZlcnRpY2FsbHkgY2VudGVyIHRoZSBjaGVja2JveCwgbGlr
ZSBvbiBkZXNrdG9wCiAgICAgfQogI2VuZGlmCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNl
IGJsZWVkQXZvaWRhbmNlID0gZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50
SW5mby5jb250ZXh0KTsKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFu
Y2UgPSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAKICAgICAvLyBGSVhNRTogU2hvdWxkIGV2ZW50dWFsbHkgZ2l2ZSB0aGUgdGhlbWUgY29u
dHJvbCBvdmVyIHdoZXRoZXIgdGhlIGJveCBzaGFkb3cgc2hvdWxkIHBhaW50LCBzaW5jZSBjb250
cm9scyBjb3VsZCBoYXZlCiAgICAgLy8gY3VzdG9tIHNoYWRvd3Mgb2YgdGhlaXIgb3duLgogICAg
IGlmICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2Nh
dGlvbigpLCBibGVlZEF2b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5m
bywgcGFpbnRSZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxz
ZSk7CiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFy
ZW5jeUxheWVyKSB7CiAgICAgICAgIC8vIFRvIGF2b2lkIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJs
ZWVkaW5nIG91dCBiZWhpbmQgdGhlIGJvcmRlciwgd2UnbGwgcmVuZGVyIGJhY2tncm91bmQgYW5k
IGJvcmRlcgogICAgICAgICAvLyBpbnRvIGEgdHJhbnNwYXJlbmN5IGxheWVyLCBhbmQgdGhlbiBj
bGlwIHRoYXQgaW4gb25lIGdvICh3aGljaCByZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBjbGlwIGJl
Zm9yZQogICAgICAgICAvLyBiZWdpbm5pbmcgdGhlIGxheWVyKS4KICAgICAgICAgc3RhdGVTYXZl
ci5zYXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5
bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJl
Y3RGb3JQYWludGluZyhkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRl
ckZvcihwYWludFJlY3QpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEg
bmF0aXZlIHRoZW1lIGFwcGVhcmFuY2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBi
YWNrZ3JvdW5kLgpAQCAtMTM0Miw3ICsxMzQyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94
RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkK
ICAgICAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVk
QXZvaWRhbmNlKTsKIAogICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRV
c2VUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBi
b29sIFJlbmRlckJveDo6YmFja2dyb3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIAogdm9p
ZCBSZW5kZXJCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0
aGluUm9vdCgqdGhpcykgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3Qo
KnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExh
eW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CkBAIC0xNTI4LDExICsxNTI4LDExIEBAIHZv
aWQgUmVuZGVyQm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNr
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7
Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlQ2xpcHBpbmdNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlQ2xpcHBpbmdNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJl
Y3QocGFpbnRPZmZzZXQsIHNpemUoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0
KHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qo
cGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHZv
aWQgUmVuZGVyQm94OjpwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCkKQEAgLTE1NTcsMTggKzE1NTcsMTggQEAgdm9p
ZCBSZW5kZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcGEKICAgICAgICAgaWYgKG1hc2tMYXllcnMpCiAgICAgICAgICAg
ICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOwog
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5z
cGFyZW5jeUxheWVyKDEpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0
ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgICAgICBjb21wb3NpdGVPcCA9
IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJbWFnZXNMb2Fk
ZWQpIHsKICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUo
KS5tYXNrTGF5ZXJzKCksIHBhaW50UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRl
T3ApOwotICAgICAgICBwYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWlu
dFJlY3QsIHN0eWxlKCksIHN0eWxlKCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKKyAg
ICAgICAgcGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCgpLCBwYWludFJlY3Qs
IHN0eWxlKCksIHN0eWxlKCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1h
c2tDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0xNjE5LDE2ICsx
NjE5LDEzIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zCiAgICAgICAgIGN1ckxheWVyID0gY3Vy
TGF5ZXItPm5leHQoKTsKICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBw
YWludEluZm8uY29udGV4dDsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHNob3VsZERyYXdC
YWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IGZhbHNlOwotCisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBCYXNlQmFja2dyb3VuZENvbG9y
VXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBp
ZiAoc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFyYXRlQnVmZmVyKSB7CiAgICAgICAgIHBhaW50
RmlsbExheWVyKHBhaW50SW5mbywgYywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9p
ZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CiAg
ICAgICAgIGJhc2VCZ0NvbG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcDsKLSAgICAg
ICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29udGV4dC5i
ZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgIH0KIAogICAgIFZlY3Rvcjxjb25zdCBGaWxs
TGF5ZXIqPjo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7
CkBAIC0xNjM2LDcgKzE2MzMsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNv
bnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29ucwogICAgICAgICBw
YWludEZpbGxMYXllcihwYWludEluZm8sIGMsICppdCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9w
LCBiYWNrZ3JvdW5kT2JqZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlmIChzaG91bGRE
cmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
IH0KIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsCkBAIC0xNzY4LDEwICsxNzY1LDEwIEBAIGJvb2wgUmVuZGVyQm94
OjpwdXNoQ29udGVudHNDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11CiAgICAgfQogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoKGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0
ZWRPZmZzZXQpIDogb3ZlcmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3VycmVudFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWlu
dEluZm8ucGhhc2UpKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgaWYgKHN0eWxl
KCkuaGFzQm9yZGVyUmFkaXVzKCkpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91
bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1
bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGlu
ZyhkZXZpY2VTY2FsZUZhY3RvcikpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBS
ZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUo
KS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
c2l6ZSgpKSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZh
Y3RvcikpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTE3NzksNyArMTc3Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BD
b250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFz
ZSwKIHsKICAgICBBU1NFUlQoaGFzQ29udHJvbENsaXAoKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkg
JiYgIWxheWVyKCktPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAg
ICBpZiAob3JpZ2luYWxQaGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSkgewogICAgICAgICBwYWlu
dEluZm8ucGhhc2UgPSBQYWludFBoYXNlU2VsZk91dGxpbmU7CiAgICAgICAgIHBhaW50T2JqZWN0
KHBhaW50SW5mbywgYWNjdW11bGF0ZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCmluZGV4IDU1MTg4YzYxNjlkNDdmOTMwM2JkZjE2MWFmMjVhODJjOWQyZjk4YjkuLjE2
ZDUxZDk3ZWZkNWFmZThlMWE3ZTM2ZjdkODI0N2Y4ZjBiZGEwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgKQEAgLTY0MCw3ICs2NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2
b2lkIHBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7
CiAKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OworICAgIEJhY2tncm91bmRCbGVlZEF2
b2lkYW5jZSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Q7CiAgICAgYm9vbCBiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdDsK
IAogICAgIHZvaWQgY29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJiwgUmVuZGVyUmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMWRj
ZmUxMjJmMDI3NzIyOTFiN2ExN2I4MzY0YTg3MGRiYTJiZDIyZS4uZmNhOTdhZGYyNWJkMTcxOTJk
OTBmYTVjNDc2ZjMzZGEzYmEwNWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5
ZXIoKS0+YmFja2luZygpLT5zdXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplKQorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1
YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQq
IGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQogewogICAgIHJldHVybiB2aWV3KCkuaW1h
Z2VRdWFsaXR5Q29udHJvbGxlcigpLnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRo
aXMsIGltYWdlLCBsYXllciwgc2l6ZSk7CiB9CkBAIC01MTgsMzQgKzUxOCwzNCBAQCBSb3VuZGVk
UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0
IExheW91dFJlY3QmIGJvcgogICAgIHJldHVybiBib3JkZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJl
Y3QpCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwUm91bmRlZElubmVyUmVjdChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgaWYgKGNsaXBSZWN0LmlzUmVuZGVyYWJsZSgp
KQotICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAgICAgICBj
b250ZXh0LmNsaXBSb3VuZGVkUmVjdChjbGlwUmVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8v
IFdlIGNyZWF0ZSBhIHJvdW5kZWQgcmVjdCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xp
cCBpdCwgd2hpbGUgbWFraW5nIHN1cmUgd2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVy
LgogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAh
Y2xpcFJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
RmxvYXRSZWN0IHRvcENvcm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCku
eSgpLCByZWN0Lm1heFgoKSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xp
cFJlY3QucmVjdCgpLnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0
b3BDb3JuZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xp
cFJlY3QucmFkaWkoKS50b3BMZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAg
ICAgICAgICAgY29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3Ju
ZXIsIHRvcENvcm5lclJhZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3Ju
ZXIocmVjdC54KCksIHJlY3QueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCks
IGNsaXBSZWN0LnJlY3QoKS5tYXhZKCkgLSByZWN0LnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJv
dW5kZWRSZWN0OjpSYWRpaSBib3R0b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNv
cm5lclJhZGlpLnNldEJvdHRvbVJpZ2h0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChi
b3R0b21Db3JuZXIsIGJvdHRvbUNvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKICAgICAgICAgfSAKIAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9w
UmlnaHQoKS5pc0VtcHR5KCkgfHwgIWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRvcENvcm5lcihyZWN0LngoKSwgY2xpcFJl
Y3QucmVjdCgpLnkoKSwgY2xpcFJlY3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCByZWN0Lm1h
eFkoKSAtIGNsaXBSZWN0LnJlY3QoKS55KCkpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVj
dDo6UmFkaWkgdG9wQ29ybmVyUmFkaWk7CiAgICAgICAgICAgICB0b3BDb3JuZXJSYWRpaS5zZXRU
b3BSaWdodChjbGlwUmVjdC5yYWRpaSgpLnRvcFJpZ2h0KCkpOwotICAgICAgICAgICAgY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJS
YWRpaSkpOworICAgICAgICAgICAgY29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVj
dCBib3R0b21Db3JuZXIoY2xpcFJlY3QucmVjdCgpLngoKSwgcmVjdC55KCksIHJlY3QubWF4WCgp
IC0gY2xpcFJlY3QucmVjdCgpLngoKSwgY2xpcFJlY3QucmVjdCgpLm1heFkoKSAtIHJlY3QueSgp
KTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIGJvdHRvbUNvcm5lclJhZGlp
OwogICAgICAgICAgICAgYm90dG9tQ29ybmVyUmFkaWkuc2V0Qm90dG9tTGVmdChjbGlwUmVjdC5y
YWRpaSgpLmJvdHRvbUxlZnQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChib3R0b21Db3JuZXIsIGJvdHRvbUNvcm5lclJhZGlpKSk7Cisg
ICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRv
bUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU4
MSw3ICs1ODEsNyBAQCBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YmFja2dyb3Vu
ZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZQogICAgIHJldHVybiBnZXRCYWNr
Z3JvdW5kUm91bmRlZFJlY3QoYm9yZGVyUmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNp
emUuaGVpZ2h0KCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIHZvaWQgYXBw
bHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHN0eWxl
LT5ib3hTaGFkb3coKTsKICAgICB3aGlsZSAoYm94U2hhZG93LT5zdHlsZSgpICE9IE5vcm1hbCkK
QEAgLTU4OSwxNSArNTg5LDE1IEBAIHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAKICAgICBGbG9h
dFNpemUgc2hhZG93T2Zmc2V0KGJveFNoYWRvdy0+eCgpLCBib3hTaGFkb3ctPnkoKSk7CiAgICAg
aWYgKCFib3hTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgIGNvbnRleHQtPnNl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29s
b3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNo
YWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHls
ZS0+Y29sb3JTcGFjZSgpKTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNo
YWRvdyhzaGFkb3dPZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3Io
KSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93
KHNoYWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBz
dHlsZS0+Y29sb3JTcGFjZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVj
dCYgbWFza1JlY3QsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xs
ZWRQYWludFJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0g
bWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1t
YXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0lt
YWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOworICAgIG1hc2tJbWFnZUNvbnRleHQu
dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFk
ZCB0aGUgdGV4dCB0byB0aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNw
ZWNpYWwgcGFpbnQgcGhhc2UgdGhhdCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVz
IHRoYXQgdGhleSBzaG91bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCkBA
IC02MTgsOCArNjE4LDggQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9y
VGV4dEZpbGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QKIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2
b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFz
ZUJhY2tncm91bmRDb2xvclVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7Ci0gICAgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSB8fCByZWN0LmlzRW1wdHkoKSkKKyAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSB8fCByZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9v
bCBpbmNsdWRlTGVmdEVkZ2UgPSBib3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSA6
IHRydWU7CkBAIC02NzIsMzIgKzY3MiwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVk
VG9CYWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5k
KHJlY3QubG9jYXRpb24oKSwgYmxlZWRBdm9pZGFuY2UsIGJveCk7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc2hhZG93U3RhdGVTYXZlcigqY29udGV4dCwgYm94U2hhZG93U2hv
dWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzaGFkb3dTdGF0ZVNhdmVyKGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRv
QmFja2dyb3VuZCk7CiAgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQpCiAgICAgICAgICAgICBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoY29udGV4dCwg
JnN0eWxlKCkpOwogCiAgICAgICAgIGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRh
bmNlICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgICAg
ICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVk
UmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRh
bmNlLCBib3gsIGJveFNpemUsCisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25h
cHBlZEJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFu
Y2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwKICAgICAgICAg
ICAgICAgICBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYg
KHBpeGVsU25hcHBlZEJvcmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3Qo
cGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAg
ICAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5l
clJlY3QoY29udGV4dCwgcGl4ZWxTbmFwcGVkUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgp
LCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+cmVzdG9yZSgpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFw
cGVkQm9yZGVyLnJlY3QoKSwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
cGl4ZWxTbmFwcGVkUmVjdCwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBCb3JkZXJGaWxsQm94IHJhZGl1cyBjbGlwcGlu
ZyBpcyB0YWtlbiBjYXJlIG9mIGJ5IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVy
CiAgICAgYm9vbCBjbGlwVG9Cb3JkZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmICEoaXNC
b3JkZXJGaWxsICYmIGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFy
ZW5jeUxheWVyKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBUb0JvcmRlclN0
YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBjbGlwVG9Cb3JkZXJTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBUb0JvcmRl
clJhZGl1cyk7CiAgICAgaWYgKGNsaXBUb0JvcmRlclJhZGl1cykgewotICAgICAgICBSb3VuZGVk
UmVjdCBib3JkZXIgPSBpc0JvcmRlckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3Rl
ZEZvckJsZWVkQXZvaWRhbmNlKCpjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBi
b3hTaXplLCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3Vu
ZFJvdW5kZWRSZWN0KHJlY3QsIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgp
LCBpbmNsdWRlTGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVj
dCBib3JkZXIgPSBpc0JvcmRlckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZv
ckJsZWVkQXZvaWRhbmNlKGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNp
emUsIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91
bmRlZFJlY3QocmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGlu
Y2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gQ2xpcCB0byB0
aGUgcGFkZGluZyBvciBjb250ZW50IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGJn
TGF5ZXItPmNsaXAoKSA9PSBDb250ZW50RmlsbEJveCkgewpAQCAtNzE0LDEyICs3MTQsMTIgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY28KICAgICBMYXlvdXRVbml0IHBMZWZ0ID0gaW5jbHVkZUxl
ZnRFZGdlID8gcGFkZGluZ0xlZnQoKSA6IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHBS
aWdodCA9IGluY2x1ZGVSaWdodEVkZ2UgPyBwYWRkaW5nUmlnaHQoKSA6IExheW91dFVuaXQoKTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNh
dmVyKCpjb250ZXh0LCBjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nKTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIGNsaXBXaXRoU2Nyb2xsaW5nU3RhdGVTYXZlcihjb250ZXh0LCBjbGlw
cGVkV2l0aExvY2FsU2Nyb2xsaW5nKTsKICAgICBMYXlvdXRSZWN0IHNjcm9sbGVkUGFpbnRSZWN0
ID0gcmVjdDsKICAgICBpZiAoY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewogICAgICAgICAv
LyBDbGlwIHRvIHRoZSBvdmVyZmxvdyBhcmVhLgogICAgICAgICBhdXRvJiB0aGlzQm94ID0gZG93
bmNhc3Q8UmVuZGVyQm94PigqdGhpcyk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAodGhpc0JveC5v
dmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KCkpKTsKKyAgICAgICAgY29udGV4dC5jbGlwKHRoaXNCb3gub3ZlcmZsb3dDbGlwUmVj
dChyZWN0LmxvY2F0aW9uKCksIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSk7CiAg
ICAgICAgIAogICAgICAgICAvLyBBZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVmbGVjdCBhIHNj
cm9sbGVkIGNvbnRlbnQgYm94IHdpdGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAgICAgICAgSW50
U2l6ZSBvZmZzZXQgPSB0aGlzQm94LnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwpAQCAtNzI4LDcg
KzcyOCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5k
ZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIHNjcm9sbGVkUGFpbnRS
ZWN0LnNldEhlaWdodChib3JkZXJUb3AoKSArIGxheWVyKCktPnNjcm9sbEhlaWdodCgpICsgYm9y
ZGVyQm90dG9tKCkpOwogICAgIH0KICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IGJhY2tncm91bmRDbGlwU3RhdGVTYXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgYmFja2dyb3VuZENsaXBTdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNl
KTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRS
ZWN0IG1hc2tSZWN0OwogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y28KICAgICAgICAgICAgICAgICBzY3JvbGxlZFBhaW50UmVjdC53aWR0aCgpIC0gYkxlZnQgLSBi
UmlnaHQgLSAoaW5jbHVkZVBhZGRpbmcgPyBwTGVmdCArIHBSaWdodCA6IExheW91dFVuaXQoKSks
CiAgICAgICAgICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJUb3Ao
KSAtIGJvcmRlckJvdHRvbSgpIC0gKGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpICsgcGFk
ZGluZ0JvdHRvbSgpIDogTGF5b3V0VW5pdCgpKSk7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kQ2xp
cFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7
CisgICAgICAgICAgICBjb250ZXh0LmNsaXAoY2xpcFJlY3QpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8gV2Ug
aGF2ZSB0byBkcmF3IG91ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0
byBjbGlwIGJhY2tncm91bmQgZHJhd2luZy4KQEAgLTc1MSwxNSArNzUxLDE1IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvCiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVj
dChwYWludEluZm8ucmVjdCkpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0g
ICAgICAgIG1hc2tJbWFnZSA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1Jl
Y3Quc2l6ZSgpKTsKKyAgICAgICAgbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxl
QnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2Uu
Z2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKIAogICAgICAgICAvLyBU
aGUgbWFzayBoYXMgYmVlbiBjcmVhdGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0
LgogICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgICAgICBjb250
ZXh0LT5jbGlwKG1hc2tSZWN0KTsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lM
YXllcigxKTsKKyAgICAgICAgY29udGV4dC5jbGlwKG1hc2tSZWN0KTsKKyAgICAgICAgY29udGV4
dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgIH0KIAogICAgIC8vIE9ubHkgZmlsbCB3
aXRoIGEgYmFzZSBjb2xvciAoZS5nLiwgd2hpdGUpIGlmIHdlJ3JlIHRoZSByb290IGRvY3VtZW50
LCBzaW5jZSBpZnJhbWVzL2ZyYW1lcyB3aXRoCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJCYWNrZ3JvdW5k
ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxp
ZWRUb0JhY2tncm91bmQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
aGFkb3dTdGF0ZVNhdmVyKGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dy
b3VuZCk7CiAgICAgICAgICAgICBpZiAoYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKQogICAgICAgICAgICAgICAgIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0
LCAmc3R5bGUoKSk7CiAKQEAgLTgxNywxMiArODE3LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvCiAgICAgICAgICAgICAgICAgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBo
YSgpKQogICAgICAgICAgICAgICAgICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdD
b2xvcik7CiAKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVj
dEZvclBhaW50aW5nLCBiYXNlQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9y
UGFpbnRpbmcsIGJhc2VDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkp
OwogICAgICAgICAgICAgfSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxw
aGEoKSkgewotICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNo
b3VsZENsZWFyQmFja2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LT5jb21wb3NpdGVP
cGVyYXRpb24oKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5k
UmVjdEZvclBhaW50aW5nLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgb3BlcmF0aW9u
KTsKKyAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24gPSBzaG91bGRD
bGVhckJhY2tncm91bmQgPyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVPcGVyYXRp
b24oKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9y
UGFpbnRpbmcsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDbGVhckJhY2tncm91bmQpCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+Y2xlYXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC04MzQsMTcgKzgzNCwxNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjbwogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9
PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAg
ICAgICAgIGF1dG8gY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/
IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFn
ZSA9IGJnSW1hZ2UtPmltYWdlKGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGls
ZVNpemUoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xh
eWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOworICAgICAgICAgICAgY29u
dGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1h
c2tMdW1pbmFuY2UpOwogICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNo
b3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCBnZW9t
ZXRyeS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAgICAgICAg
ICAgICAgICBpbWFnZS0+c2V0U3BhY2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxh
dGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhj
b21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgICAgICAgICAgY29udGV4dC5kcmF3
VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRl
c3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0
cnkudGlsZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIt
PmJsZW5kTW9kZSgpLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0
eVNjYWxpbmcpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChiZ0xheWVyLT5jbGlwKCkg
PT0gVGV4dEZpbGxCb3gpIHsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJ
bWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3Rp
bmF0aW9uSW4pOwotICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIG1hc2tSZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29u
dGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KIApAQCAtMTI0Miw3ICsxMjQy
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5k
SW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8KICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRl
c3RSZWN0KCk7CiB9CiAKLWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNl
SW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKK2Jvb2wgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmluZVBpZWNl
SW1hZ2UmIG5pbmVQaWVjZUltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBTdHls
ZUltYWdlKiBzdHlsZUltYWdlID0gbmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsKQEAgLTE0MjYsNyAr
MTQyNiw3IEBAIHN0YXRpYyBib29sIGpvaW5SZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94
U2lkZSBhZGphY2VudFNpZGUsIGNvbnN0IEJvcmRlckVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
CiAgICAgY29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBh
ZGphY2VudFNpZGUxLCBCb3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRn
ZXNbXSwgY29uc3QgUGF0aCogcGF0aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9y
KQogewpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIGNv
bnN0IENvbG9yJiBjb2xvclRvUGFpbnQgPSBvdmVycmlkZUNvbG9yID8gKm92ZXJyaWRlQ29sb3Ig
OiBlZGdlVG9SZW5kZXIuY29sb3IoKTsKIAogICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7
CiAgICAgICAgIGlmIChpbm5lckJvcmRlci5pc1JlbmRlcmFibGUoKSkKICAgICAgICAgICAgIGNs
aXBCb3JkZXJTaWRlUG9seWdvbihncmFwaGljc0NvbnRleHQsIG91dGVyQm9yZGVyLCBpbm5lckJv
cmRlciwgc2lkZSwgYWRqYWNlbnRTaWRlMVN0eWxlc01hdGNoLCBhZGphY2VudFNpZGUyU3R5bGVz
TWF0Y2gpOwogICAgICAgICBlbHNlCkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsCiAgICAgICAgIGJvb2wgY2xpcEFkamFjZW50U2lkZTIgPSBjb2xvck5lZWRzQW50
aUFsaWFzQXRDb3JuZXIoc2lkZSwgYWRqYWNlbnRTaWRlMiwgZWRnZXMpICYmIG1pdHJlQWRqYWNl
bnRTaWRlMjsKICAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gY2xpcEZvclN0eWxlIHx8IGNsaXBB
ZGphY2VudFNpZGUxIHx8IGNsaXBBZGphY2VudFNpZGUyOwogICAgICAgICAKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBz
aG91bGRDbGlwKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU3RhdGVT
YXZlcihncmFwaGljc0NvbnRleHQsIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xp
cCkgewogICAgICAgICAgICAgYm9vbCBhbGlhc0FkamFjZW50U2lkZTEgPSBjbGlwQWRqYWNlbnRT
aWRlMSB8fCAoY2xpcEZvclN0eWxlICYmIG1pdHJlQWRqYWNlbnRTaWRlMSk7CiAgICAgICAgICAg
ICBib29sIGFsaWFzQWRqYWNlbnRTaWRlMiA9IGNsaXBBZGphY2VudFNpZGUyIHx8IChjbGlwRm9y
U3R5bGUgJiYgbWl0cmVBZGphY2VudFNpZGUyKTsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMSA9IGZhbHNl
OwogICAgICAgICAgICAgbWl0cmVBZGphY2VudFNpZGUyID0gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIHNpZGVSZWN0LCBzaWRl
LCBjb2xvclRvUGFpbnQsIGVkZ2VUb1JlbmRlci5zdHlsZSgpLCBtaXRyZUFkamFjZW50U2lkZTEg
PyBhZGphY2VudEVkZ2UxLndpZHRoRm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJlQWRqYWNlbnRTaWRl
MiA/IGFkamFjZW50RWRnZTIud2lkdGhGb3JQYWludGluZygpIDogMCwgYW50aWFsaWFzKTsKKyAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUs
IGNvbG9yVG9QYWludCwgZWRnZVRvUmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/
IGFkamFjZW50RWRnZTEud2lkdGhGb3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUy
ID8gYWRqYWNlbnRFZGdlMi53aWR0aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOwogICAg
IH0KIH0KIApAQCAtMTQ4OCw3ICsxNDg4LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRl
U2lkZVJlY3QoY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXIKICAg
ICByZXR1cm4gc2lkZVJlY3Q7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRl
ZFJlY3QmIGlubmVyQm9yZGVyLAogICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVz
dG1lbnQsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQs
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50
aWFsaWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvcikKIHsKQEAgLTE1MzYsNyArMTUzNiw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IElu
dFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVy
Qm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBp
bm5lckJvcmRlckFkanVzdG1lbnQsCiAgICAgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3Jk
ZXJFZGdlRmxhZ3MgZWRnZXNUb0RyYXcsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2
b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBib29sIGFudGlhbGlhcykKIHsKICAgICAvLyB3aWxsQmVPdmVyZHJhd24gYXNz
dW1lcyB0aGF0IHdlIGRyYXcgaW4gb3JkZXI6IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC4KQEAg
LTE1NjYsMTQgKzE1NjYsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRUcmFu
c2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIAogICAgICAgICBi
b29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW5jbHVkZXNBZGphY2VudEVkZ2VzKGNvbW1vbkNv
bG9yRWRnZVNldCkgJiYgY29tbW9uQ29sb3IuaGFzQWxwaGEoKTsKICAgICAgICAgaWYgKHVzZVRy
YW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8g
MjU1KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KHN0YXRpY19jYXN0PGZsb2F0Pihjb21tb25Db2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAg
ICAgICBjb21tb25Db2xvciA9IENvbG9yKGNvbW1vbkNvbG9yLnJlZCgpLCBjb21tb25Db2xvci5n
cmVlbigpLCBjb21tb25Db2xvci5ibHVlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRC
b3JkZXJTaWRlcyhncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3Jk
ZXIsIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgZWRnZXMsIGNvbW1vbkNvbG9yRWRnZVNldCwgYmxl
ZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlLCBhbnRpYWxpYXMsICZjb21tb25Db2xvcik7CiAgICAgICAgICAgICAKICAgICAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiAgICAgICAgIAogICAgICAgICBlZGdlc1RvRHJhdyAmPSB+Y29tbW9u
Q29sb3JFZGdlU2V0OwogICAgIH0KQEAgLTE1ODIsOSArMTU4Miw5IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQogewotICAgIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0ID0gaW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0ID0gaW5mby5jb250ZXh0KCk7CiAKLSAgICBpZiAoZ3JhcGhpY3NDb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkK
QEAgLTE1OTcsNyArMTU5Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9y
ZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICBCb3JkZXJF
ZGdlIGVkZ2VzWzRdOwogICAgIEJvcmRlckVkZ2U6OmdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBz
dHlsZSwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3Qgb3V0ZXJCb3Jk
ZXIgPSBzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRl
ciA9IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3Rl
ZEZvckJsZWVkQXZvaWRhbmNlKCpncmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNl
KSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAg
IFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoZ3JhcGhpY3NDb250ZXh0
LCByZWN0LCBibGVlZEF2b2lkYW5jZSksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKIAogICAgIGJvb2wgaGF2ZUFscGhhQ29sb3IgPSBmYWxzZTsKICAg
ICBib29sIGhhdmVBbGxTb2xpZEVkZ2VzID0gdHJ1ZTsKQEAgLTE3MDMsOSArMTcwMyw5IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5m
bywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBw
YXRoLmFkZFJlY3QocGl4ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RW
aXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSAKICAgICAgICAgLy8gQXZvaWQgY3JlYXRp
bmcgdHJhbnNwYXJlbnQgbGF5ZXJzCkBAIC0xNzIwLDIzICsxNzIwLDIzIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UmVjdCYKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2Vd
LmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRl
eHQtPmZpbGxQYXRoKHBhdGgpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxS
dWxlKFJVTEVfTk9OWkVSTyk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAKICAgICBib29sIGNsaXBUb091dGVyQm9yZGVy
ID0gb3V0ZXJCb3JkZXIuaXNSb3VuZGVkKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlw
VG9PdXRlckJvcmRlcik7CiAgICAgaWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8v
IENsaXAgdG8gdGhlIGlubmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJs
ZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIucGl4
ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhl
bFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAg
ICAgIC8vIGlzUmVuZGVyYWJsZSgpIGNoZWNrIGF2b2lkcyBpc3N1ZSBkZXNjcmliZWQgaW4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4Nzg3CiAgICAgICAgIC8vIFRo
ZSBpbnNpZGUgd2lsbCBiZSBjbGlwcGVkIG91dCBsYXRlciAoaW4gY2xpcEJvcmRlclNpZGVGb3JD
b21wbGV4SW5uZXJQYXRoKQogICAgICAgICBpZiAoaW5uZXJCb3JkZXIuaXNSZW5kZXJhYmxlKCkp
Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJv
cmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9y
KSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KGlubmVy
Qm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0
b3IpKTsKICAgICB9CiAKICAgICAvLyBJZiBvbmx5IG9uZSBlZGdlIHZpc2libGUgYW50aWFsaWFz
aW5nIGRvZXNuJ3QgY3JlYXRlIHNlYW1zCkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlY3QmCiAgICAgICAgIHBhaW50Qm9yZGVyU2lkZXMoZ3JhcGhpY3NDb250ZXh0LCBz
dHlsZSwgb3V0ZXJCb3JkZXIsIHVuYWRqdXN0ZWRJbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1
c3RtZW50LCBlZGdlcywgZWRnZXNUb0RyYXcsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzKTsKIH0KIAotdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3Qg
UGF0aCYgYm9yZGVyUGF0aCwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLAordm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9y
ZGVyUGF0aCwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLAogICAgIGZsb2F0IHRoaWNrbmVzcywg
ZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSBzaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIENvbG9yIGNvbG9yLCBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CkBAIC0xNzY1LDE0ICsxNzY1LDE0
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERP
VFRFRDoKICAgICBjYXNlIERBU0hFRDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0
cm9rZUNvbG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAg
ICAgLy8gVGhlIHN0cm9rZSBpcyBkb3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0
aCBpcyB0aGUgCiAgICAgICAgIC8vIG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYg
dGhlIHN0cm9rZSBpcyBjbGlwcGVkIG9mZi4gCiAgICAgICAgIC8vIFRoZSBleHRyYSBtdWx0aXBs
aWVyIGlzIHNvIHRoYXQgdGhlIGNsaXBwaW5nIG1hc2sgY2FuIGFudGlhbGlhcwogICAgICAgICAv
LyB0aGUgZWRnZXMgdG8gcHJldmVudCBqYWdnaWVzLgotICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcyhkcmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOwotICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERh
c2hlZFN0cm9rZSA6IERvdHRlZFN0cm9rZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRT
dHJva2VUaGlja25lc3MoZHJhd1RoaWNrbmVzcyAqIDIgKiAxLjFmKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldFN0cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0
cm9rZSA6IERvdHRlZFN0cm9rZSk7CiAKICAgICAgICAgLy8gSWYgdGhlIG51bWJlciBvZiBkYXNo
ZXMgdGhhdCBmaXQgaW4gdGhlIHBhdGggaXMgb2RkIGFuZCBub24taW50ZWdyYWwgdGhlbiB3ZQog
ICAgICAgICAvLyB3aWxsIGhhdmUgYW4gYXdrd2FyZGx5LXNpemVkIGRhc2ggYXQgdGhlIGVuZCBv
ZiB0aGUgcGF0aC4gVG8gdHJ5IHRvIGF2b2lkIHRoYXQKQEAgLTE3OTUsMTMgKzE3OTUsMTMgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIERhc2hBcnJheSBsaW5lRGFzaDsK
ICAgICAgICAgICAgIGxpbmVEYXNoLmFwcGVuZChkYXNoTGVuZ3RoKTsKICAgICAgICAgICAgIGxp
bmVEYXNoLmFwcGVuZChnYXBMZW5ndGgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRMaW5lRGFzaChsaW5lRGFzaCwgZGFzaExlbmd0aCk7CisgICAgICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0TGluZURhc2gobGluZURhc2gsIGRhc2hMZW5ndGgpOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICAvLyBGSVhNRTogc3Ryb2tpbmcgdGhlIGJvcmRlciBwYXRoIGNhdXNlcyBp
c3N1ZXMgd2l0aCB0aWdodCBjb3JuZXJzOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg3MTEKICAgICAgICAgLy8gQWxzbywgdG8gZ2V0IHRoZSBi
ZXN0IGFwcGVhcmFuY2Ugd2Ugc2hvdWxkIHN0cm9rZSBhIHBhdGggYmV0d2VlbiB0aGUgdHdvIGJv
cmRlcnMuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tlUGF0aChib3JkZXJQYXRoKTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnN0cm9rZVBhdGgoYm9yZGVyUGF0aCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBET1VCTEU6IHsKQEAgLTE4MjQsMTggKzE4MjQsMTgg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKIAogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRl
ciBsaW5lCiAgICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgUm91
bmRlZFJlY3QgaW5uZXJDbGlwID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRl
clJlY3QsCiAgICAgICAgICAgICAgICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJC
b3R0b21XaWR0aCwgaW5uZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwK
ICAgICAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xp
cFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW5uZXJDbGlwKSk7CisgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW5uZXJDbGlw
KSk7CiAgICAgICAgICAgICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9y
ZGVyUmVjdCwgYm9yZGVyUGF0aCwgZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lk
ZSwgc3R5bGUsIGNvbG9yLCBTT0xJRCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IERyYXcgb3V0ZXIgYm9yZGVyIGxpbmUKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7
CiAgICAgICAgICAgICBMYXlvdXRSZWN0IG91dGVyUmVjdCA9IGJvcmRlclJlY3Q7CiAgICAgICAg
ICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5
TGF5ZXIpIHsKICAgICAgICAgICAgICAgICBvdXRlclJlY3QuaW5mbGF0ZSgxKTsKQEAgLTE4NDgs
NyArMTg0OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBh
dGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBSb3VuZGVk
UmVjdCBvdXRlckNsaXAgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0
LAogICAgICAgICAgICAgICAgIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9t
V2lkdGgsIG91dGVyQm9yZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAg
ICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChvdXRlckNsaXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5j
bGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckNsaXApKTsKICAgICAgICAg
ICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3Jk
ZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29s
b3IsIFNPTElELCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzAs
NyArMTg3MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBh
dGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIGRyYXdCb3hTaWRl
RnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywg
dGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMxLCBibGVlZEF2
b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogCiAgICAgICAgIC8vIFBhaW50IGlubmVyIG9ubHkKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAg
TGF5b3V0VW5pdCB0b3BXaWR0aCA9IGVkZ2VzW0JTVG9wXS53aWR0aEZvclBhaW50aW5nKCkgLyAy
OwogICAgICAgICBMYXlvdXRVbml0IGJvdHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLndpZHRo
Rm9yUGFpbnRpbmcoKSAvIDI7CiAgICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoID0gZWRnZXNb
QlNMZWZ0XS53aWR0aEZvclBhaW50aW5nKCkgLyAyOwpAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIHRvcFdpZHRoLCBib3R0b21XaWR0aCwg
bGVmdFdpZHRoLCByaWdodFdpZHRoLAogICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7
CiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0
LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHls
ZSwgY29sb3IsIHMyLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg5Miw5
ICsxODkyLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0
aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJv
cmRlclJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNz
Q29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4
KGNvbnN0IEZsb2F0UG9pbnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5lckNv
cm5lciwgY29uc3QgRmxvYXRQb2ludCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkK
QEAgLTE5MTIsNyArMTkxMiw3IEBAIHN0YXRpYyB2b2lkIGZpbmRJbm5lclZlcnRleChjb25zdCBG
bG9hdFBvaW50JiBvdXRlckNvcm5lciwgY29uc3QgRmxvYXRQb2ludCYgaW5uCiAgICAgICAgIGZp
bmRJbnRlcnNlY3Rpb24ob3V0ZXJDb3JuZXIsIGlubmVyQ29ybmVyLCBGbG9hdFBvaW50KDAsIGNl
bnRlclBvaW50LnkoKSksIEZsb2F0UG9pbnQoMTAwLCBjZW50ZXJQb2ludC55KCkpLCByZXN1bHQp
OwogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24o
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRl
ckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRS
ZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCb3hTaWRlIHNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNv
bmRFZGdlTWF0Y2hlcykKIHsKICAgICBGbG9hdFBvaW50IHF1YWRbNF07CkBAIC0xOTk0LDcgKzE5
OTQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24o
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleAogICAgIC8vIElmIHRoZSBib3JkZXIgbWF0
Y2hlcyBib3RoIG9mIGl0cyBhZGphY2VudCBzaWRlcywgZG9uJ3QgYW50aS1hbGlhcyB0aGUgY2xp
cCwgYW5kCiAgICAgLy8gaWYgbmVpdGhlciBzaWRlIG1hdGNoZXMsIGFudGktYWxpYXMgdGhlIGNs
aXAuCiAgICAgaWYgKGZpcnN0RWRnZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKLSAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RF
ZGdlTWF0Y2hlcyk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0
LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTIwMDQsNyArMjAwNCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJT
aWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZmlyc3RRdWFk
WzFdID0gcXVhZFsxXTsKICAgICBmaXJzdFF1YWRbMl0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUg
PT0gQlNCb3R0b20gPyBGbG9hdFBvaW50KHF1YWRbM10ueCgpLCBxdWFkWzJdLnkoKSkgOiBGbG9h
dFBvaW50KHF1YWRbMl0ueCgpLCBxdWFkWzNdLnkoKSk7CiAgICAgZmlyc3RRdWFkWzNdID0gcXVh
ZFszXTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVh
ZCwgIWZpcnN0RWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9s
eWdvbig0LCBmaXJzdFF1YWQsICFmaXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0UG9pbnQg
c2Vjb25kUXVhZFs0XTsKICAgICBzZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKQEAgLTIwMTIsNyAr
MjAxMiw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdv
bihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgc2Vjb25kUXVhZFsyXSA9IHF1
YWRbMl07CiAgICAgc2Vjb25kUXVhZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50aWFsaWFzaW5n
IGFmZmVjdHMgdGhlIHNlY29uZCBzaWRlLgotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZl
eFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKKyAgICBncmFwaGlj
c0NvbnRleHQuY2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRj
aGVzKTsKIH0KIAogc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJ
bm5lcihjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRn
ZXNbXSwgQm94U2lkZSBzaWRlKQpAQCAtMjEyMiwxMSArMjEyMiwxMSBAQCBzdGF0aWMgUm91bmRl
ZFJlY3QgY2FsY3VsYXRlQWRqdXN0ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5l
ckJvcmRlciwgQgogICAgIHJldHVybiBSb3VuZGVkUmVjdChuZXdSZWN0LCBuZXdSYWRpaSk7CiB9
CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElu
bmVyUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJv
cmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgIEJveFNpZGUgc2lkZSwg
Y29uc3QgY2xhc3MgQm9yZGVyRWRnZSBlZGdlc1tdKQogewotICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcChjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdlcywg
c2lkZSkpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoY2FsY3VsYXRlQWRqdXN0ZWRJbm5lckJvcmRlcihpbm5lckJvcmRlciwgc2lkZSkp
KTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcChjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lu
bmVyKG91dGVyQm9yZGVyLCBlZGdlcywgc2lkZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlw
T3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9y
ZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0
Ojpib3JkZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNj
YWxlKSBjb25zdApAQCAtMjIzMCw4ICsyMjMwLDggQEAgc3RhdGljIGlubGluZSBMYXlvdXRSZWN0
IGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQK
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6IERlYWwg
d2l0aCBib3JkZXItaW1hZ2UuICBXb3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWltYWdlIGFz
IGEgbWFzay4KLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7Ci0g
ICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUuYm94U2hhZG93KCkp
CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gaW5mby5jb250ZXh0KCk7CisgICAgaWYg
KGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09IElu
c2V0KSA/IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQpAQCAtMjI2OCw4ICsyMjY4
LDggQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIHBpeGVsU25hcHBlZFNo
YWRvd1JlY3QuaW5mbGF0ZShzaGFkb3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAg
ICAgICAgICAgICBwaXhlbFNuYXBwZWRTaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKIAot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7Cisg
ICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgICAgICAgICBjb250ZXh0LmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CiAKICAg
ICAgICAgICAgIC8vIE1vdmUgdGhlIGZpbGwganVzdCBvdXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcg
MSBwaXhlbCBzZXBhcmF0aW9uIHNvIHRoYXQgdGhlIGZpbGwgZG9lcyBub3QKICAgICAgICAgICAg
IC8vIGJsZWVkIGluIChkdWUgdG8gYW50aWFsaWFzaW5nKSBpZiB0aGUgY29udGV4dCBpcyB0cmFu
c2Zvcm1lZC4KQEAgLTIyNzgsOSArMjI3OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAg
ICAgICAgICAgICBmaWxsUmVjdC5tb3ZlKGV4dHJhT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYg
KHNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBz
dHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRT
aGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAg
ICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAg
ICAgRmxvYXRSb3VuZGVkUmVjdCBwaXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVs
U25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI5
MiwxOCArMjI5MiwxOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRv
dyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAg
ICAgICByZWN0VG9DbGlwT3V0LmluZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdDo6ZnJvbVBpeGVs
KC0xKSk7CiAKICAgICAgICAgICAgICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xp
cE91dCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KHJl
Y3RUb0NsaXBPdXQpOwogCiAgICAgICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5mbHVlbmNlUmVj
dChMYXlvdXRSZWN0KHBpeGVsU25hcHBlZFNoYWRvd1JlY3QpLCBib3JkZXIucmFkaWkoKSk7CiAg
ICAgICAgICAgICAgICAgaW5mbHVlbmNlUmVjdC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRp
bmdFeHRlbnQgKyBzaGFkb3dTcHJlYWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5l
cnNDbGlwcGVkT3V0KGluZmx1ZW5jZVJlY3QsIGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6
OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHls
ZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJsZSgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0UmFk
aWkoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVs
U25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxS
ZWN0LCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlz
IG9wYXF1ZSwgaXQgaXMgdW5uZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5n
IHNvIHNhdmVzIHRpbWUKQEAgLTIzMTMsMTQgKzIzMTMsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRSZWMKICAgICAgICAgICAgICAgICBpZiAoaGFzT3BhcXVlQmFja2dyb3VuZCkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGZ1bmN0aW9uIHRvIGRlY2lkZSBvbiB0aGUgcG9s
aWN5IGJhc2VkIG9uIHRoZSB0cmFuc2Zvcm0gc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24uCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGNoZWNr
IGlzIHJpZ2h0LiBXaGF0IGFib3V0IGludGVncmFsIHNjYWxlIGZhY3RvcnM/Ci0gICAgICAgICAg
ICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsK
KyAgICAgICAgICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQu
Z2V0Q1RNKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uYSgpICE9IDEgfHwg
KHRyYW5zZm9ybS5kKCkgIT0gMSAmJiB0cmFuc2Zvcm0uZCgpICE9IC0xKSB8fCB0cmFuc2Zvcm0u
YigpIHx8IHRyYW5zZm9ybS5jKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlw
T3V0LmluZmxhdGUoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKC0xKS50b0Zsb2F0KCkpOwogICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dC5y
ZWN0KCkpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZp
bGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgp
LCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzMwLDkgKzIz
MzAsOSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAocGl4ZWxT
bmFwcGVkSG9sZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRl
clJhZGl1cykKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBp
eGVsU25hcHBlZEJvcmRlclJlY3QsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRC
b3JkZXJSZWN0LCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25h
cHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJS
ZWN0LnJlY3QoKSwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKQEAgLTIzNTcsMjUgKzIzNTcsMjUgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBw
ZWRPdXRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5I
b2xlKExheW91dFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWlu
dGluZ0V4dGVudCwgc2hhZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xl
ID0gRmxvYXRSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9y
ZGVyUmVjdC5yYWRpaSgpKTsKIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRp
dXMpIHsKICAgICAgICAgICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICAgICAgcGF0aC5h
ZGRSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0KTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwKHBhdGgpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChwYXRoKTsK
ICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZS5zaHJpbmtSYWRpaShzaGFk
b3dTcHJlYWQpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+
Y2xpcChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5jbGlwKHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpKTsKIAogICAgICAgICAgICAg
SW50U2l6ZSBleHRyYU9mZnNldCgyICogcm91bmRUb0ludChwYWludFJlY3Qud2lkdGgoKSkgKyBz
dGQ6Om1heCgwLCBzaGFkb3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAt
IDIgKiBzaGFkb3dTcHJlYWQgKyAxLCAwKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0
ZShleHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShleHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWln
aHQoKSk7CiAgICAgICAgICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAg
ICAgICAgIGlmIChzaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAg
Y29udGV4dC0+c2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CiAKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVs
U25hcHBlZE91dGVyUmVjdCwgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xvciwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUocGl4ZWxTbmFwcGVkT3V0ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmls
bENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQ4
NCwxMSArMjQ4NCwxMSBAQCBMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENh
cmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLAogICAgIHJldHVybiBjdXJy
ZW50U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFJlY3QoeCwgeSwgY2Fy
ZXRXaWR0aCwgaGVpZ2h0KSA6IExheW91dFJlY3QoeSwgeCwgaGVpZ2h0LCBjYXJldFdpZHRoKTsK
IH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxk
QW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1F
OiBXZSBtYXkgd2FudCB0byBub3QgYW50aWFsaWFzIHdoZW4gc2NhbGVkIGJ5IGFuIGludGVncmFs
IHZhbHVlLAogICAgIC8vIGFuZCB3ZSBtYXkgd2FudCB0byBhbnRpYWxpYXMgd2hlbiB0cmFuc2xh
dGVkIGJ5IGEgbm9uLWludGVncmFsIHZhbHVlLgotICAgIHJldHVybiAhY29udGV4dC0+Z2V0Q1RN
KCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKKyAgICByZXR1cm4gIWNvbnRl
eHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKIH0KIAogdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRp
bmF0ZXNGbGFncyBtb2RlLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4
IGMyMjhhNDg1ZWUzNWZjOTgyMzc3MThjZTljN2QzOTQwMjE0ZDExNTguLjU4ODA1ZTA4YzI4MjFl
NGZkYjZjOGM0OTkyNWMxOTdiOWY2MjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZEJlY2FtZU5vbklubGluZShSZW5kZXJFbGVtZW50JikgeyB9
CiAKICAgICB2b2lkIHBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tn
cm91bmRCbGVlZE5vbmUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKTsKLSAgICBib29sIHBhaW50TmluZVBpZWNl
SW1hZ2UoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgTmluZVBpZWNlSW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIpOworICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGll
Y2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAg
dm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRF
ZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIHZv
aWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYs
IGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UsIElubGluZUZsb3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlv
dXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVy
RWxlbWVudCogYmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JV
c2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2UpOwogCkBAIC0yNTEsMTYgKzI1MSwxNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgUm91bmRlZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRG
b3JCbGVlZEF2b2lkYW5jZShjb25zdCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0
U2l6ZSYsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZv
ckJsZWVkQXZvaWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3Qm
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWlu
dEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25z
dCBMYXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGlj
c0NvbnRleHQmLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb250aW51YXRpb24oUmVuZGVyQm94TW9kZWxPYmplY3QqKTsKIAogICAgIExheW91dFJlY3Qg
bG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5p
dCB0ZXh0SW5kZW50T2Zmc2V0KTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xp
bmVzKEdyYXBoaWNzQ29udGV4dCopOworICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xp
bmVzKEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5l
clJlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3Vu
ZGVkUmVjdCYgY2xpcFJlY3QpOworICAgIHN0YXRpYyB2b2lkIGNsaXBSb3VuZGVkSW5uZXJSZWN0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIGNsaXBSZWN0KTsKIAogICAgIGJvb2wgaGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2Nr
V2l0aEF1dG9IZWlnaHQoKSBjb25zdDsKIApAQCAtMzA3LDE4ICszMDcsMTggQEAgcHJpdmF0ZToK
ICAgICAKICAgICBib29sIGZpeGVkQmFja2dyb3VuZFBhaW50c0luTG9jYWxDb29yZGluYXRlcygp
IGNvbnN0OwogCi0gICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5u
ZXJCb3JkZXIsCisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5u
ZXJCb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBm
aXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIGNsaXBC
b3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3Vu
ZGVkUmVjdCYsIGNvbnN0IFJvdW5kZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgQm9yZGVyRWRnZVtd
KTsKLSAgICB2b2lkIHBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRl
ZFJlY3QmIGlubmVyQm9yZGVyLAorICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5u
ZXJQYXRoKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91bmRl
ZFJlY3QmLCBCb3hTaWRlLCBjb25zdCBCb3JkZXJFZGdlW10pOworICAgIHZvaWQgcGFpbnRPbmVC
b3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91
bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAg
ICAgICAgIGNvbnN0IExheW91dFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFj
ZW50U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAg
ICAgICBjb25zdCBQYXRoKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFs
aWFzLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgcGFp
bnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYg
aW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCisgICAg
dm9pZCBwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5k
ZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVu
dCwKICAgICAgICAgY29uc3QgQm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlKTsKLSAgICB2b2lkIHBh
aW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKKyAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRS
ZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRq
dXN0bWVudCwgY29uc3QgQm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSwKICAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBD
b2xvciogb3ZlcnJpZGVDb2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgZHJhd0JveFNpZGVGcm9t
UGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNv
bnN0IEJvcmRlckVkZ2VbXSwKKyAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBCb3JkZXJFZGdl
W10sCiAgICAgICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lk
ZSwgY29uc3QgUmVuZGVyU3R5bGUmLAogICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJv
eChJbWFnZUJ1ZmZlciosIGNvbnN0IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5
b3V0UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRl
dGFpbHNNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNN
YXJrZXIuY3BwCmluZGV4IDVlZWY3NjI1Mjk0MDU5Y2JiMDk3ZTEwZmY5ZDk0ZDhkNTg3ZWJiNzAu
LmI1M2YyYWY0ZmVlNWRiZjFmMzkwOGQ4NDIzYjQzZWE5NTQxNTI0ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEzMCwxMyAr
MTMwLDEzIEBAIHZvaWQgUmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNvbnN0IENvbG9yIGNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3Is
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlj
a25lc3MoMS4wZik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
Q29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgYm94T3JpZ2luLm1v
dmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9w
KCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFBhdGgoZ2V0UGF0aChib3hPcmlnaW4pKTsK
IH0KIAogYm9vbCBSZW5kZXJEZXRhaWxzTWFya2VyOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDI1ODIwNGUwYjBiMGJhMDVl
NTRjZGNlNDc3NDM2MjgzNTg2Y2U2MjkuLjBlMTc2YWQxMTUxZmNiZjNhOGNiNThmMDc5YjY2M2Mz
NGJiNGI0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
QEAgLTIwNDEsMTcgKzIwNDEsMTcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmlu
ZyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBhZGRG
b2N1c1JpbmdSZWN0cyhmb2N1c1JpbmdSZWN0cywgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5wYWlu
dENvbnRhaW5lcik7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50Owot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCB0aGVt
ZSgpLnBsYXRmb3JtRm9jdXNSaW5nV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBkb2N1
bWVudCgpLnBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKSwg
bmVlZHNSZXBhaW50KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9j
dXNSaW5nUmVjdHMsIHRoZW1lKCkucGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRs
aW5lT2Zmc2V0KCksIGRvY3VtZW50KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2lu
Y2VGb2N1c1dhc1NldCgpLCBuZWVkc1JlcGFpbnQpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAg
ICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxl
bWVudE5lZWRzUmVwYWludCgpOwogI2Vsc2UKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0Zv
Y3VzUmluZyhmb2N1c1JpbmdSZWN0cywgc3R5bGUub3V0bGluZVdpZHRoKCksIHN0eWxlLm91dGxp
bmVPZmZzZXQoKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGlu
ZUNvbG9yKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKGZvY3VzUmlu
Z1JlY3RzLCBzdHlsZS5vdXRsaW5lV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICNlbmRp
ZgogfQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBpZiAoZ3Jh
cGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRl
eCAzMTVkYzE0NWRkZmI4NTAxNDVjYTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0Li4yYjFmMTY1NWQ5OTY0
NmEwZmQwNTAxZWVjNWY4MjgzYjcyNjJkNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lk
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dAogICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
OwogICAgIExheW91dFNpemUgY29udGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKICAgICBMYXlv
dXRQb2ludCBjb250ZW50TG9jYXRpb24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAg
Y29udGVudExvY2F0aW9uLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVy
VG9wKCkgKyBwYWRkaW5nVG9wKCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1i
ZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUo
KS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJh
d0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
KSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTI2Miw5
ICsyNjIsOSBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgIFJlbmRlcldpZGdldDo6cGFp
bnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdSZXBsYWNl
bWVudEFycm93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNp
ZGVSZWN0KQorc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2lkZVJlY3QpCiB7Ci0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBGbG9hdFJlY3QgcmVjdChp
bnNpZGVSZWN0KTsKICAgICByZWN0LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dQYWRkaW5nKTsK
QEAgLTI3Miw5ICsyNzIsOSBAQCBzdGF0aWMgdm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaW5zaQogICAgIEZsb2F0UG9p
bnQgY2VudGVyKHJlY3QuY2VudGVyKCkpOwogICAgIEZsb2F0UG9pbnQgYXJyb3dUaXAocmVjdC5t
YXhYKCksIGNlbnRlci55KCkpOwogCi0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIp
OwotICAgIGNvbnRleHQtPnNldExpbmVDYXAoUm91bmRDYXApOwotICAgIGNvbnRleHQtPnNldExp
bmVKb2luKFJvdW5kSm9pbik7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7Cisg
ICAgY29udGV4dC5zZXRMaW5lQ2FwKFJvdW5kQ2FwKTsKKyAgICBjb250ZXh0LnNldExpbmVKb2lu
KFJvdW5kSm9pbik7CiAKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2lu
dChyZWN0LngoKSwgY2VudGVyLnkoKSkpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBpbnNpCiAgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChjZW50ZXIueCgpLCBy
ZWN0LnkoKSkpOwogICAgIHBhdGgubW92ZVRvKGFycm93VGlwKTsKICAgICBwYXRoLmFkZExpbmVU
byhGbG9hdFBvaW50KGNlbnRlci54KCksIHJlY3QubWF4WSgpKSk7Ci0gICAgY29udGV4dC0+c3Ry
b2tlUGF0aChwYXRoKTsKKyAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKIHZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lk
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
OworICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgRmxvYXRSZWN0IGNvbnRlbnRSZWN0OwpAQCAtMzEwLDM2ICszMTAsMzYgQEAgdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQKICAgICBQYXRoIGJhY2tncm91bmQ7CiAgICAgYmFja2dyb3VuZC5h
ZGRSb3VuZGVkUmVjdChpbmRpY2F0b3JSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91
bmRlZFJlY3RSYWRpdXMsIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzKSk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNv
bnRleHQtPmNsaXAoY29udGVudFJlY3QpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3Vu
YXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRl
ZFJlY3RQcmVzc2VkQ29sb3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQtPmZpbGxQYXRoKGJhY2tncm91bmQp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LmNsaXAoY29udGVudFJlY3QpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1f
dW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3Vu
ZGVkUmVjdFByZXNzZWRDb2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigp
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5k
KTsKIAogICAgIFBhdGggc3Ryb2tlUGF0aDsKICAgICBGbG9hdFJlY3Qgc3Ryb2tlUmVjdChpbmRp
Y2F0b3JSZWN0KTsKICAgICBzdHJva2VSZWN0LmluZmxhdGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5h
ZGRSb3VuZGVkUmVjdChzdHJva2VSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRl
ZFJlY3RSYWRpdXMgKyAxLCByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEpKTsK
IAotICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29s
b3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNr
bmVzcygyKTsKLSAgICBjb250ZXh0LT5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOworICAgIGNvbnRl
eHQuc2V0U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAg
Y29udGV4dC5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOwogCiAgICAgY29uc3QgRm9udE1ldHJpY3Mm
IGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOwogICAgIGZsb2F0IGxhYmVsWCA9IHJv
dW5kZihyZXBsYWNlbWVudFRleHRSZWN0LmxvY2F0aW9uKCkueCgpICsgcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RMZWZ0VGV4dE1hcmdpbik7CiAgICAgZmxvYXQgbGFiZWxZID0gcm91bmRmKHJl
cGxhY2VtZW50VGV4dFJlY3QubG9jYXRpb24oKS55KCkgKyAocmVwbGFjZW1lbnRUZXh0UmVjdC5z
aXplKCkuaGVpZ2h0KCkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyICsgZm9udE1ldHJpY3Mu
YXNjZW50KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4pOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQ
b2ludChsYWJlbFgsIGxhYmVsWSkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2Vt
ZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmRyYXdC
aWRpVGV4dChmb250LCBydW4sIEZsb2F0UG9pbnQobGFiZWxYLCBsYWJlbFkpKTsKIAogICAgIGlm
IChzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3Bs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSkgewogICAgICAgICBhcnJvd1JlY3QuaW5mbGF0ZSgt
cmVwbGFjZW1lbnRBcnJvd0NpcmNsZVBhZGRpbmcpOwogCi0gICAgICAgIGNvbnRleHQtPmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoMS4wKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHJl
cGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgY29u
dGV4dC0+ZmlsbEVsbGlwc2UoYXJyb3dSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5z
cGFyZW5jeUxheWVyKDEuMCk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2Vt
ZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5m
aWxsRWxsaXBzZShhcnJvd1JlY3QpOwogCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVDbGVhcik7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZUNsZWFyKTsKICAgICAgICAgZHJhd1JlcGxhY2VtZW50QXJyb3coY29u
dGV4dCwgYXJyb3dSZWN0KTsKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggZDVmZmY5
MjAzMjM1NDE4NDgyNWIxMjA0ODYxZDZhNjQyZTY1ZDA3ZS4uMDk1MmZkYTM0Yjg4Mjg5MTRjMzlm
YWM0YjI4OTk0M2JiMjA0ODk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpZWxkc2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQK
ICAgICAgICAgcGFpbnRSZWN0LnNldFgocGFpbnRSZWN0LngoKSArIHhPZmYpOwogICAgIH0KIAot
ICAgIGlmICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5s
b2NhdGlvbigpLCBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNv
bnRleHQpKSkKKyAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChw
YWludFJlY3QubG9jYXRpb24oKSwgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBh
aW50SW5mby5jb250ZXh0KCkpKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBw
YWludFJlY3QsIHN0eWxlKCksIE5vcm1hbCk7CiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5m
bywgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpLCBzdHlsZSgpLmJhY2tncm91bmRMYXllcnMoKSwgcGFpbnRSZWN0KTsKICAgICBwYWludEJv
eFNoYWRvdyhwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgSW5zZXQpOwpAQCAtMTY4LDgg
KzE2OCw4IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgICAgIHJldHVybjsKICAgICAK
ICAgICAvLyBDcmVhdGUgYSBjbGlwcGluZyByZWdpb24gYXJvdW5kIHRoZSBsZWdlbmQgYW5kIHBh
aW50IHRoZSBib3JkZXIgYXMgbm9ybWFsCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gRklYTUU6IFdl
IG5lZWQgdG8gd29yayB3aXRoICJybCIgYW5kICJidCIgYmxvY2sgZmxvdyBkaXJlY3Rpb25zLiAg
SW4gdGhvc2UKICAgICAvLyBjYXNlcyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdo
dCBhbmQgYm90dG9tIGJvcmRlcnMgcmVzcGVjdGl2ZWx5LgpAQCAtMTg2LDcgKzE4Niw3IEBAIHZv
aWQgUmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50CiAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHN0ZDo6bWF4
PExheW91dFVuaXQ+KHN0eWxlKCkuYm9yZGVyTGVmdFdpZHRoKCksIGxlZ2VuZC0+d2lkdGgoKSkp
OwogICAgICAgICBjbGlwUmVjdC5zZXRIZWlnaHQobGVnZW5kLT5oZWlnaHQoKSk7CiAgICAgfQot
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBS
ZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuY2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRS
ZWN0LCBzdHlsZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCmluZGV4IGM3YWM2NzQ2YTI3NWE5OGVjODZkMDk5OGU2
NzZkNmI1YWY1MWFjY2EuLjY0ZWNhY2IwNmVjZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcApAQCAtMTIwLDE0ICsxMjAsMTQgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4K
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIFB1c2ggYSBjbGlwLgotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGZhbHNlKTsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSwgZmFsc2UpOwogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3Vu
ZHMpIHsKICAgICAgICAgSW50UmVjdCBjbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoTGF5b3V0
UmVjdChwYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCksIHBhaW50T2Zmc2V0LnkoKSArIGJv
cmRlclRvcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0
KCkgLSBib3JkZXJSaWdodCgpLCBoZWlnaHQoKSAtIGJvcmRlckJvdHRvbSgpIC0gYm9yZGVyVG9w
KCkgKyBidXR0b25TaGFkb3dIZWlnaHQpKTsKICAgICAgICAgaWYgKGNsaXBSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICB9CiAKICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CkBAIC0xNjMsMTAgKzE2MywxMCBAQCB2b2lk
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJh
c2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwg
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRo
ZSBmaWxlbmFtZQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEludFBvaW50KHJvdW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVu
LCBJbnRQb2ludChyb3VuZFRvSW50KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQoKS5pY29uKCkpIHsKICAgICAgICAgICAgIC8v
IERldGVybWluZSB3aGVyZSB0aGUgaWNvbiBzaG91bGQgYmUgcGxhY2VkCkBAIC0xODYsNyArMTg2
LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgICAgIH0KICNlbHNlCiAgICAg
ICAgICAgICAvLyBEcmF3IHRoZSBmaWxlIGljb24KLSAgICAgICAgICAgIGlucHV0RWxlbWVudCgp
Lmljb24oKS0+cGFpbnQoKnBhaW50SW5mby5jb250ZXh0LCBJbnRSZWN0KHJvdW5kVG9JbnQoaWNv
blgpLCByb3VuZFRvSW50KGljb25ZKSwgaWNvbldpZHRoLCBpY29uSGVpZ2h0KSk7CisgICAgICAg
ICAgICBpbnB1dEVsZW1lbnQoKS5pY29uKCktPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIElu
dFJlY3Qocm91bmRUb0ludChpY29uWCksIHJvdW5kVG9JbnQoaWNvblkpLCBpY29uV2lkdGgsIGlj
b25IZWlnaHQpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0
MjNlNzRlOWU3MWZkYzYwNC4uMmY4MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4ZDIyZmE4MGE2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05
MCwxNSArOTAsMTUgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGRvIHNvbWV0aGluZyBjbGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJh
bWVzZXRzIG1lZXQgYXQgYSBqb2luLgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChi
b3JkZXJSZWN0LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVy
RmlsbENvbG9yKCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVj
dCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xv
cigpLCBjb2xvclNwYWNlKTsKICAgICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQg
b25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxp
dHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAg
aWYgKGJvcmRlclJlY3Qud2lkdGgoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJv
cmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxs
UmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55
KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRp
b24oKSwgSW50U2l6ZSgxLCBoZWlnaHQoKSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xv
clNwYWNlKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRl
clJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSks
IGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKICAgICB9CiB9CiAKQEAgLTExMCwx
NSArMTEwLDE1IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50Um93Qm9yZGVyKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBiCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBkbyBzb21ldGhpbmcgY2xldmVyIHdoZW4gYm9yZGVycyBmcm9tIGRpc3RpbmN0IGZyYW1l
c2V0cyBtZWV0IGF0IGEgam9pbi4KICAgICAKICAgICAvLyBGaWxsIGZpcnN0LgotICAgIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgQ29sb3JTcGFjZSBjb2xv
clNwYWNlID0gc3R5bGUoKS5jb2xvclNwYWNlKCk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoYm9y
ZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZp
bGxDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3Qs
IGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3Io
KSwgY29sb3JTcGFjZSk7CiAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBp
ZiB3ZSBoYXZlIGVub3VnaCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQog
ICAgIC8vIGJpdCBvZiB0aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJv
cmRlclJlY3QuaGVpZ2h0KCkgPj0gMykgewotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRS
ZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0
YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJ
bnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJ
bnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwor
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJ
bnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7
CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0Lngo
KSwgYm9yZGVyUmVjdC5tYXhZKCkgLSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVu
ZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAppbmRleCA1YTY1MGFhYzlkZGI0OTc3N2I2
M2YzYmQ4ODAzZjA2ZTVlYzZiYzE2Li5jNjczZDgwZWFkOTgzNjQ3YWZlYjkzMWY0M2Q3NGQ0ZDBm
ZTViN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENh
bnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMu
Y3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgUmVuZGVySFRNTENhbnZhczo6cmVxdWlyZXNMYXll
cigpIGNvbnN0CiAKIHZvaWQgUmVuZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRSZWN0
IGNvbnRlbnRCb3hSZWN0ID0gdGhpcy0+Y29udGVudEJveFJlY3QoKTsKICAgICBjb250ZW50Qm94
UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFJlbmRlckhU
TUxDYW52YXM6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYQogCiAgICAgLy8gTm90IGFsbG93ZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnRlbnQg
Ym94LgogICAgIGJvb2wgY2xpcCA9ICFjb250ZW50Qm94UmVjdC5jb250YWlucyhyZXBsYWNlZENv
bnRlbnRSZWN0KTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBh
aW50SW5mby5jb250ZXh0LCBjbGlwKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChzbmFwcGVkSW50UmVjdChjb250
ZW50Qm94UmVjdCkpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewog
ICAgICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk4NGQ1N2NhYjdmMzA3
ZDk5ZjhmZTAwMDYyNzE3MTA2MjExMDNiZC4uNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2
ZmJmYTg1ZDI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC0zNzUsNyArMzc1LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBMYXlvdXRVbml0
IGxlZnRQYWQgPSBwYWRkaW5nTGVmdCgpOwogICAgIExheW91dFVuaXQgdG9wUGFkID0gcGFkZGlu
Z1RvcCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsK
ICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKQEAgLTM5MSwxMCArMzkx
LDEwIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJv
cmRlcldpZHRoID0gTGF5b3V0VW5pdCgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgICAg
ICAgICAvLyBEcmF3IGFuIG91dGxpbmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+
ZHJhd1JlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0Lngo
KSArIGxlZnRCb3JkZXIgKyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0
b3BQYWQsIGNXaWR0aCwgY0hlaWdodCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgp
OworICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5k
cmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgp
ICsgbGVmdEJvcmRlciArIGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRv
cFBhZCwgY1dpZHRoLCBjSGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7
CiAKICAgICAgICAgICAgIGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAgICAg
ICAgIExheW91dFNpemUgaW1hZ2VPZmZzZXQ7CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIFJl
bmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAg
ICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51
bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwg
aW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCksIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNl
dCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmcobV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNj
YWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICAgICAg
ICAgICAgICBMYXlvdXRVbml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwpAQCAtNDQz
LDkgKzQ0Myw5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAgTGF5
b3V0VW5pdCB0ZXh0V2lkdGggPSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgICAg
IGlmIChlcnJvclBpY3R1cmVEcmF3bikgewogICAgICAgICAgICAgICAgICAgICBpZiAodXNhYmxl
V2lkdGggPj0gdGV4dFdpZHRoICYmIGZvbnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0
LmhlaWdodCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIGFsdFRleHRPZmZzZXQpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAodXNhYmxlV2lkdGggPj0gdGV4dFdpZHRoICYmIHVzYWJsZUhlaWdodCA+
PSBmb250TWV0cmljcy5oZWlnaHQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJh
d1RleHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGltYWdlUmVzb3VyY2UoKS5oYXNJbWFn
ZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDApIHsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2
b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVu
dFJlY3QgPSB0aGlzLT5yZXBsYWNlZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7CiAgICAg
ICAgIHJlcGxhY2VkQ29udGVudFJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICAgICAgYm9v
bCBjbGlwID0gIWNvbnRlbnRCb3hSZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwot
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNs
aXApOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCwgY2xpcCk7CiAgICAgICAgIGlmIChjbGlwKQotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChj
b250ZW50Qm94UmVjdCk7CisgICAgICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudEJveFJlY3Qp
OwogCiAgICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVs
cyhyZXBsYWNlZENvbnRlbnRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAKQEAg
LTQ5NSw3ICs0OTUsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNS
aW5nKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgIGlmIChkb2N1bWVudCgpLnByaW50aW5nKCkg
fHwgIWZyYW1lKCkuc2VsZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8uY29u
dGV4dCgpLnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVs
ZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwpAQCAt
NTIwLDcgKzUyMCw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1Jp
bmcoUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgaWYgKCFvdXRsaW5lV2lkdGgpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIG91
dGxpbmVXaWR0aCwKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwg
b3V0bGluZVdpZHRoLAogICAgICAgICBhcmVhRWxlbWVudFN0eWxlLT5vdXRsaW5lT2Zmc2V0KCks
CiAgICAgICAgIGFyZWFFbGVtZW50U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eU91dGxpbmVDb2xvcikpOwogI2VuZGlmCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6YXJlYUVsZW1lbnRGb2N1c0NoYW5nZWQoSFRNTEFyZWFFbGVtZW50KiBlbGVtZW50
KQogICAgIHJlcGFpbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKCFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8
fCBpbWFnZVJlc291cmNlKCkuZXJyb3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8
IHJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1Myw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElP
TikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0
eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZVJlc291cmNlKCkuaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQo
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHJlY3QsCisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1h
Z2VSZXNvdXJjZSgpLmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCByZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhj
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCmluZGV4IDkwZjNlMjZiZTQ4MTIwOWJjZmY2Zjg4NzVjMTRlZmQ4NzNiNjYzZDQu
LjY3ZGVkMTc2ZDZhMzE3YjZkYmM0ZjYxYmNmNTgxYzQzYjYxZGU1ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRS
ZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRJbnRvUmVjdChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKaW5kZXggNDlkNDUyMDVjMGE5YzhiMWQ2MTQ1MDI1NjJlNTViZjBh
ODM0NjNjNS4uZmU4OGU3NmM4ZTExOWJjMjAwZDVkZTgzY2QxZWM1YTBmM2U4YmFjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTE1NjAsOCArMTU2MCw4
IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgaWYgKGhhc091dGxpbmVBbm5vdGF0aW9u
KCkgJiYgIXN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgJiYgIXRoZW1lKCkuc3VwcG9y
dHNGb2N1c1Jpbmcoc3R5bGVUb1VzZSkpCiAgICAgICAgIGFkZFBERlVSTFJlY3QocGFpbnRJbmZv
LCBwYWludE9mZnNldCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OwotICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCk7CisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0
bygpIHx8IHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlKCkgPT0gQk5PTkUpCkBAIC0xNTgxLDcgKzE1
ODEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgIENvbG9yIG91dGxpbmVDb2xvciA9
IHN0eWxlVG9Vc2UudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9y
KTsKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gb3V0bGluZUNvbG9yLmhhc0FscGhh
KCk7CiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNv
bG9yLmFscGhhKCkpIC8gMjU1KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1
NSk7CiAgICAgICAgIG91dGxpbmVDb2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0
bGluZUNvbG9yLmdyZWVuKCksIG91dGxpbmVDb2xvci5ibHVlKCkpOwogICAgIH0KIApAQCAtMTU4
OSwxMCArMTU4OSwxMCBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludE91
dGxpbmVGb3JMaW5lKGdyYXBoaWNzQ29udGV4dCwgcGFpbnRPZmZzZXQsIHJlY3RzLmF0KGkgLSAx
KSwgcmVjdHMuYXQoaSksIHJlY3RzLmF0KGkgKyAxKSwgb3V0bGluZUNvbG9yKTsKIAogICAgIGlm
ICh1c2VUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKIH0KIAotdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwKK3ZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBs
YXN0bGluZSwgY29uc3QgTGF5b3V0UmVjdCYgdGhpc2xpbmUsIGNvbnN0IExheW91dFJlY3QmIG5l
eHRsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29s
b3Igb3V0bGluZUNvbG9yKQogewpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgdm9pZCBSZW5kZXJJbmxp
bmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEwKICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZE5leHRMaW5lID0gc25hcHBlZEludFJl
Y3QocGFpbnRPZmZzZXQueCgpICsgbmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAw
KTsKICAgICAKICAgICAvLyBsZWZ0IGVkZ2UKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBo
aWNzQ29udGV4dCwKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAg
ICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdp
ZHRoLAogICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8
fCB0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkgfHwgKGxhc3RsaW5lLm1heFgoKSAtIDEpIDw9
IHRoaXNsaW5lLngoKSA/IG91dGxpbmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQb2ludChw
aXhlbFNuYXBwZWRCb3gueCgpLApAQCAtMTYyNiw3ICsxNjI2LDcgQEAgdm9pZCBSZW5kZXJJbmxp
bmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEwKICAgICAgICAgYW50aWFsaWFzKTsKICAgICAKICAgICAvLyByaWdodCBlZGdlCi0g
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgZHJhd0xpbmVGb3JC
b3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4
ZWxTbmFwcGVkQm94Lm1heFgoKSwKICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIChsYXN0
bGluZS5pc0VtcHR5KCkgfHwgbGFzdGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgpIHx8ICh0
aGlzbGluZS5tYXhYKCkgLSAxKSA8PSBsYXN0bGluZS54KCkgPyBvdXRsaW5lV2lkdGggOiAwKSks
CiAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0
aCwKQEAgLTE2MzgsNyArMTYzOCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAg
IGFudGlhbGlhcyk7CiAgICAgLy8gdXBwZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBs
YXN0bGluZS54KCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0
LAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAg
ICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0
aCwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgpLAogICAg
ICAgICAgICAgRmxvYXRQb2ludChzdGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0
bGluZVdpZHRoLCAobGFzdGxpbmUuaXNFbXB0eSgpID8gMTAwMDAwMCA6IHBpeGVsU25hcHBlZExh
c3RMaW5lLngoKSkpLApAQCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBh
aW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEwKICAgICAgICAgICAgIGFudGlhbGlhcyk7CiAgICAgCiAgICAgaWYgKGxhc3RsaW5lLm1heFgo
KSA8IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGlj
c0NvbnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAg
ICAgICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChzdGQ6Om1heChsYXN0bGluZS5pc0VtcHR5
KCkgPyAtMTAwMDAwMCA6IHBpeGVsU25hcHBlZExhc3RMaW5lLm1heFgoKSwgcGl4ZWxTbmFwcGVk
Qm94LngoKSAtIG91dGxpbmVXaWR0aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgp
IC0gb3V0bGluZVdpZHRoKSwKICAgICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94
Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBMCiAgICAgICAgICAgICBvdXRsaW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAg
ICBpZiAodGhpc2xpbmUueCgpID09IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNu
YXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94
LnkoKSAtIG91dGxpbmVXaWR0aCksCiAgICAgICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBl
ZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgTAogCiAgICAgLy8gbG93ZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54
KCkgPCBuZXh0bGluZS54KCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3ND
b250ZXh0LAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAg
ICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxp
bmVXaWR0aCwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAg
ICAgRmxvYXRQb2ludChzdGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdp
ZHRoLCAhbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUueCgpICsgMSA6
IDEwMDAwMDApLApAQCAtMTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50
T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwK
ICAgICAgICAgICAgIGFudGlhbGlhcyk7CiAgICAgCiAgICAgaWYgKG5leHRsaW5lLm1heFgoKSA8
IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0Nv
bnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChzdGQ6Om1heCghbmV4dGxpbmUuaXNFbXB0eSgp
ID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUubWF4WCgpIDogLTEwMDAwMDAsIHBpeGVsU25hcHBlZEJv
eC54KCkgLSBvdXRsaW5lV2lkdGgpLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFko
KSksCiAgICAgICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRs
aW5lV2lkdGgsCkBAIC0xNjkyLDcgKzE2OTIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRP
dXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAog
ICAgICAgICAgICAgb3V0bGluZVdpZHRoLCBhbnRpYWxpYXMpOwogCiAgICAgaWYgKHRoaXNsaW5l
LngoKSA9PSB0aGlzbGluZS5tYXhYKCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3Jh
cGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0
LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAt
IG91dGxpbmVXaWR0aCwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAg
ICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRo
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDkyYmNlYjViNmVl
NDcyMTlkNzQ5YTU2MThjYmE4MTQ3MzBiMjVkZTUuLjQ1MGJiMGY5OTU2ODZmMWVlZmYxM2RlNWM2
ZTFkNDc3ZDBhNDg5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwcml2YXRlOgogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJJ
bmxpbmU+IGNsb25lKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2
TGluZSwgY29uc3QgTGF5b3V0UmVjdCYgdGhpc0xpbmUsCisgICAgdm9pZCBwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0
UmVjdCYgcHJldkxpbmUsIGNvbnN0IExheW91dFJlY3QmIHRoaXNMaW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBuZXh0TGluZSwgY29uc3QgQ29sb3Ip
OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDdkZWRlNzFjYzRkNDM0MTRlODNhOWY4YTcxNzU5NjI5YWI3ZGFkNzMuLjc0MzA5
ZmRjMjgxZmY4MmE2MWM5NTUyMWU3NzA2ODIyYzg1ZjRjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTc4Nyw5ICsxNzg3LDkgQEAgc3RhdGljIExheW91
dFJlY3QgcGFpbnRpbmdFeHRlbnQoY29uc3QgUmVuZGVyTGF5ZXImIGN1cnJlbnRMYXllciwgY29u
c3QgUmVuZGVyTGEKICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKHRyYW5zcGFyZW5jeUNsaXBCb3go
Y3VycmVudExheWVyLCByb290TGF5ZXIsIFBhaW50aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCwgUm9v
dE9mVHJhbnNwYXJlbmN5Q2xpcEJveCwgcGFpbnRCZWhhdmlvciksIHBhaW50RGlydHlSZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBj
b25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5z
cGFyZW5jeUxheWVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAg
ICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJl
bmN5KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQor
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAocGFpbnRzV2l0aFRyYW5zcGFy
ZW5jeShwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvcikgJiYgbV91c2VkVHJhbnNwYXJlbmN5KSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yID0gdHJhbnNwYXJl
bnRQYWludGluZ0FuY2VzdG9yKCk7CkBAIC0xNzk4LDIyICsxNzk4LDIyIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgTGF5ZXJQCiAgICAgCiAgICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRp
bmdJbmZvLnBhaW50QmVoYXZpb3IpKSB7CiAgICAgICAgIG1fdXNlZFRyYW5zcGFyZW5jeSA9IHRy
dWU7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CiAg
ICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBhaW50aW5nRXh0ZW50KCp0aGlz
LCBwYWludGluZ0luZm8ucm9vdExheWVyLCBkaXJ0eVJlY3QsIHBhaW50aW5nSW5mby5wYWludEJl
aGF2aW9yKTsKICAgICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJw
aXhlbEFjY3VtdWxhdGlvbik7CiAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRDbGlwUmVj
dCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5k
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgICAgICBjb250ZXh0LT5jbGlwKHBp
eGVsU25hcHBlZENsaXBSZWN0KTsKKyAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBlZENs
aXBSZWN0KTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChoYXNC
bGVuZE1vZGUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKCkpOworICAgICAgICAgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24o
KSwgYmxlbmRNb2RlKCkpOwogI2VuZGlmCiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihyZW5kZXJlcigpLm9wYWNpdHkoKSk7CisgICAgICAgIGNvbnRleHQuYmVnaW5U
cmFuc3BhcmVuY3lMYXllcihyZW5kZXJlcigpLm9wYWNpdHkoKSk7CiAKICNpZiBFTkFCTEUoQ1NT
X0NPTVBPU0lUSU5HKQogICAgICAgICBpZiAoaGFzQmxlbmRNb2RlKCkpCi0gICAgICAgICAgICBj
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9u
KCksIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwog
I2VuZGlmCiAKICNpZmRlZiBSRVZFQUxfVFJBTlNQQVJFTkNZX0xBWUVSUwpAQCAtMzU0MSw3ICsz
NTQxLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6c2hvd3NPdmVyZmxvd0NvbnRyb2xzKCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0Nv
bnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zm
c2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRy
b2xzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQogewogICAgIC8vIERv
bid0IGRvIGFueXRoaW5nIGlmIHdlIGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJl
cigpLmhhc092ZXJmbG93Q2xpcCgpKQpAQCAtMzYwNSw3ICszNjA1LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UG9pbnQKICAgICBwYWludFJlc2l6ZXIoY29udGV4dCwgYWRqdXN0ZWRQYWludE9mZnNl
dCwgZGFtYWdlUmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxD
b3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZz
ZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSBy
ZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsKQEAgLTM2MTUsNyArMzYxNSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UG9pbnQmIHBhCiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVj
dCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xU
aW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAg
ICAgICB1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMzYyOCwxMCArMzYyOCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5l
cihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAgIC8vIFdl
IGRvbid0IHdhbnQgdG8gcGFpbnQgd2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9sbGJhcnMs
IHNpbmNlIHdlIG5lZWQKICAgICAvLyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAgICAgaWYg
KCFoYXNPdmVybGF5U2Nyb2xsYmFycygpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNS
ZWN0LCBDb2xvcjo6d2hpdGUsIGJveC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFn
ZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3Ju
ZXJSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3Qp
CiB7CiAgICAgUmVmUHRyPEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUg
Y29ybmVyUmVzaXplclNpemU7CkBAIC0zNjQ3LDE4ICszNjQ3LDE4IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91CiAgICAgfQogCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zaG91bGRQbGFj
ZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpKSB7Ci0gICAgICAgIGNvbnRl
eHQtPnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0
LngoKSArIGNvcm5lclJlc2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSAr
IHJlc2l6ZXJDb3JuZXJSZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkp
OwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7Ci0gICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXpl
clNpemUpKTsKLSAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250ZXh0LnNh
dmUoKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsg
Y29ybmVyUmVzaXplclNpemUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXpl
ckNvcm5lclJlY3QuaGVpZ2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CisgICAg
ICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKC0xLjAsIDEuMCkpOworICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsK
KyAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
RmxvYXRSZWN0IGltYWdlUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChy
ZXNpemVyQ29ybmVyUmVjdC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNv
cm5lclJlc2l6ZXJTaXplKSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVu
ZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwgaW1hZ2VSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRS
ZXNpemVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChyZW5kZXJl
cigpLnN0eWxlKCkucmVzaXplKCkgPT0gUkVTSVpFX05PTkUpCiAgICAgICAgIHJldHVybjsKQEAg
LTM2NzEsNyArMzY3MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgaWYgKCFhYnNS
ZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChj
b250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRp
bmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVSZXNpemVyU3R5bGUoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTM2ODYsMTQgKzM2ODYsMTQgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW4KICAgICAvLyBEcmF3IGEgZnJhbWUgYXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3Jl
eSBsaW5lKSBpZiB0aGVyZSBhcmUgYW55IHNjcm9sbGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlw
cGluZyB3aWxsIGV4Y2x1ZGUgdGhlIHJpZ2h0IGFuZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFt
ZS4KICAgICBpZiAoIWhhc092ZXJsYXlTY3JvbGxiYXJzKCkgJiYgKG1fdkJhciB8fCBtX2hCYXIp
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4
dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoYWJzUmVjdCk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGlw
KGFic1JlY3QpOwogICAgICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IGFic1JlY3Q7CiAg
ICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExheW91dFNpemUobGFyZ2VyQ29ybmVyLndpZHRo
KCkgKyBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMSksIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIExh
eW91dFVuaXQ6OmZyb21QaXhlbCgxKSkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xv
cihDb2xvcihtYWtlUkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxhcmdlckNvcm5lcikp
OworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcs
IDIxNykpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoMS4wZik7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qo
c25hcHBlZEludFJlY3QobGFyZ2VyQ29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNzYxLDcgKzM3
NjEsNyBAQCBib29sIFJlbmRlckxheWVyOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJl
YTo6c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lk
IFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91
dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9u
LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3Qs
IGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBh
aW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZs
YWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0
UmVxdWVzdHM7CiAKQEAgLTM3NzIsNyArMzc3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwK
ICAgICAgICAgd2lkZ2V0LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVo
YXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRl
ck9iamVjdCogc3VidHJlZVBhaW50Um9vdCkKIHsKICAgICBpZiAoIW1fY29udGFpbnNEaXJ0eU92
ZXJsYXlTY3JvbGxiYXJzKQogICAgICAgICByZXR1cm47CkBAIC0zNzk3LDE4ICszNzk3LDE4IEBA
IHN0YXRpYyBib29sIGluQ29udGFpbmluZ0Jsb2NrQ2hhaW4oUmVuZGVyTGF5ZXIqIHN0YXJ0TGF5
ZXIsIFJlbmRlckxheWVyKiBlbmRMYXllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJl
bmRlckxheWVyOjpjbGlwVG9SZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0lu
Zm8sIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0LCBC
b3JkZXJSYWRpdXNDbGlwcGluZ1J1bGUgcnVsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1Jl
Y3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5n
UnVsZSBydWxlKQogewogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5k
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAKICAgICBib29sIG5lZWRzQ2xpcHBpbmcg
PSBjbGlwUmVjdC5yZWN0KCkgIT0gcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgIGlm
IChuZWVkc0NsaXBwaW5nIHx8IGNsaXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkKLSAgICAgICAg
Y29udGV4dC0+c2F2ZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKIAogICAgIGlmIChuZWVk
c0NsaXBwaW5nKSB7CiAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBS
ZWN0LnJlY3QoKTsKICAgICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5z
dWJwaXhlbEFjY3VtdWxhdGlvbik7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAg
ICBjb250ZXh0LmNsaXAoc25hcFJlY3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCBk
ZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIH0KIAogICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5
UmFkaXVzKCkpIHsKQEAgLTM4MTksNyArMzgxOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBU
b1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250
CiAgICAgICAgICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYg
bGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSAmJiBpbkNvbnRhaW5p
bmdCbG9ja0NoYWluKHRoaXMsIGxheWVyKSkgewogICAgICAgICAgICAgICAgIExheW91dFJlY3Qg
YWRqdXN0ZWRDbGlwUmVjdCA9IExheW91dFJlY3QodG9MYXlvdXRQb2ludChsYXllci0+b2Zmc2V0
RnJvbUFuY2VzdG9yKHBhaW50aW5nSW5mby5yb290TGF5ZXIpKSwgbGF5ZXItPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhl
bEFjY3VtdWxhdGlvbik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVz
dGVkQ2xpcFJlY3QpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2Nh
bGVGYWN0b3IpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChsYXll
ci0+cmVuZGVyZXIoKS5zdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihhZGp1c3RlZENs
aXBSZWN0KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFj
dG9yKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXll
ciA9PSBwYWludGluZ0luZm8ucm9vdExheWVyKQpAQCAtMzgyOCwxMCArMzgyOCwxMCBAQCB2b2lk
IFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGlu
Z0luZm8sIEdyYXBoaWNzQ29udAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cmVzdG9y
ZUNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERp
cnR5UmVjdCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cmVz
dG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dERpcnR5UmVjdCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChjbGlwUmVj
dC5yZWN0KCkgIT0gcGFpbnREaXJ0eVJlY3QgfHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygp
KQotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQucmVzdG9yZSgp
OwogfQogCiBzdGF0aWMgdm9pZCBwZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBUZXN0UmVxdWVz
dE1hcCYgb3ZlcmxhcFRlc3RSZXF1ZXN0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQpAQCAtMzg3NSwxMiArMzg3NSwxMiBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgcGFpbnRGb3JGaXhlZFJvb3RCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllciwgUmVuZGVyTAogICAgIHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5pc1Jvb3QoKSAm
JiAocGFpbnRGbGFncyAmIFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dy
b3VuZE9ubHkpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFp
bnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5n
SW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKGlzQ29tcG9zaXRl
ZCgpKSB7CiAgICAgICAgIC8vIFRoZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBh
c3MgZ29lcyB0aHJvdWdoIGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5l
ZWQgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRo
IHRoZSB3cm9uZyByb290IGluIHRoaXMgY2FzZS4KLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0
aW5nQ29udHJvbFRpbnRzKCkgfHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCisgICAgICAgIGlmIChjb250ZXh0LnVw
ZGF0aW5nQ29udHJvbFRpbnRzKCkgfHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFp
bnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykpCiAgICAgICAgICAgICBwYWludEZs
YWdzIHw9IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHM7CiAgICAgICAgIGVsc2UgaWYgKCFi
YWNraW5nKCktPnBhaW50c0ludG9XaW5kb3coKQogICAgICAgICAgICAgJiYgIWJhY2tpbmcoKS0+
cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpCkBAIC0zOTY0LDcgKzM5NjQsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mCiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihj
b250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZs
ZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJU
KGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQo
KSk7CiAKQEAgLTM5ODIsOSArMzk4Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAg
cGFpbnRMYXllckNvbnRlbnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdz
KTsKIH0KIAotYm9vbCBSZW5kZXJMYXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKQorYm9vbCBS
ZW5kZXJMYXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKQogewotICAgIGlmIChjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHNjcm9sbGluZ09uTWFpblRocmVhZCA9
IHRydWU7CkBAIC00MDAyLDggKzQwMDIsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cEZvbnRT
dWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGJvb2wmCiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpKQogICAgICAgICBpc1pv
b21pbmcgPSAhcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuaGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9y
KCk7CiAgICAgaWYgKHNjcm9sbGluZ09uTWFpblRocmVhZCB8fCBjb250ZW50c1Njcm9sbEJ5UGFp
bnRpbmcgfHwgaXNab29taW5nKSB7Ci0gICAgICAgIGRpZFF1YW50aXplRm9udHMgPSBjb250ZXh0
LT5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKTsKLSAgICAgICAgY29udGV4dC0+c2V0U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGZhbHNlKTsKKyAgICAgICAgZGlkUXVhbnRpemVGb250
cyA9IGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCk7CisgICAgICAgIGNvbnRl
eHQuc2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGZhbHNlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNzIsOSArNDA3Miw5IEBAIFBh
dGggUmVuZGVyTGF5ZXI6OmNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRG
cm9tUm9vdCwgTGF5b3V0UmVjdCYKICAgICByZXR1cm4gUGF0aCgpOwogfQogCi1ib29sIFJlbmRl
ckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJv
bVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZl
Qm91bmRzQ29tcHV0ZWQpCitib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
Y29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2
ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7Ci0gICAgaWYgKCFy
ZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmICghcmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXJvb3RSZWxhdGl2ZUJv
dW5kc0NvbXB1dGVkKSB7CkBAIC00MDg4LDggKzQwODgsOCBAQCBib29sIFJlbmRlckxheWVyOjpz
ZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZgogICAgICAgICBXaW5kUnVsZSB3aW5kUnVsZTsKICAgICAgICAgTGF5b3V0U2l6ZSBwYWlu
dGluZ09mZnNldEZyb21Sb290ID0gTGF5b3V0U2l6ZShzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwob2Zm
c2V0RnJvbVJvb3QgKyBwYWludGluZ0luZm8uc3VicGl4ZWxBY2N1bXVsYXRpb24sIExheW91dFBv
aW50KCksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAg
ICAgIFBhdGggcGF0aCA9IGNvbXB1dGVDbGlwUGF0aChwYWludGluZ09mZnNldEZyb21Sb290LCBy
b290UmVsYXRpdmVCb3VuZHMsIHdpbmRSdWxlKTsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwot
ICAgICAgICBjb250ZXh0LT5jbGlwUGF0aChwYXRoLCB3aW5kUnVsZSk7CisgICAgICAgIGNvbnRl
eHQuc2F2ZSgpOworICAgICAgICBjb250ZXh0LmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC00MDk4LDcgKzQwOTgsNyBAQCBib29sIFJl
bmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZgogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5k
b2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFn
bWVudCgpKTsKICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6Y2xpcFBhdGhUYWcpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2UgYSBzYWZlciBjYXN0IHN1Y2ggYXMgdG9SZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcigpLgotICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlz
IGRvIGEgY29udGV4dC0+c2F2ZSgpIGFuZCByZXR1cm4gdHJ1ZSBzbyB3ZSByZXN0b3JlIHRoZSBj
b250ZXh0PworICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC5z
YXZlKCkgYW5kIHJldHVybiB0cnVlIHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5yZW5k
ZXJlcigpKS0+YXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlcigpLCByb290UmVsYXRpdmVC
b3VuZHMsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgY29udGV4dCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC00MTA2LDkgKzQxMDYsOSBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFp
bnRpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpIGNvbnN0CiB7
Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwYWlu
dEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpCkBAIC00MTI2LDcg
KzQxMjYsNyBAQCBib29sIFJlbmRlckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFBhaW50TGF5ZXJGbAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVy
OjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5m
byYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0
U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9v
bCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVy
RmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91
dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0
ZWQpCiB7CiAgICAgaWYgKCFoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhjb250ZXh0LCBwYWludEZs
YWdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00MTYzLDcgKzQxNjMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1
cEZpbHRlcnMoR3JhcGhpY3NDbwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1HcmFwaGljc0Nv
bnRleHQqIFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXIqIGZpbHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVu
dHMpCitHcmFwaGljc0NvbnRleHQmIFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2lu
YWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50
cyYgbGF5ZXJGcmFnbWVudHMpCiB7CiAgICAgQVNTRVJUKGZpbHRlclBhaW50ZXItPmhhc1N0YXJ0
ZWRGaWx0ZXJFZmZlY3QoKSk7CiAgICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgY2xpcHBpbmcgKGll
LiBvdmVyZmxvdzogaGlkZGVuKS4KQEAgLTQxODUsNyArNDE4NSw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBjb21wYXJlWkluZGV4KFJlbmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIqIHNlY29u
ZCkKIC8vIFRoZXNlIGxheWVycyBzaG91bGQgbm90IGJlIHBhaW50ZWQgaW4gYSBzaW1pbGFyIHdh
eSBhcyB0aGUgb3RoZXIgZWxlbWVudHMgY29sbGVjdGVkIGluCiAvLyBuYW1lZCBmbG93cyAtIHJl
Z2lvbnMgLT4gbmFtZWQgZmxvd3MgLSBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIGNs
aXBwZWQgdG8gdGhlCiAvLyByZWdpb25zIHZpZXdwb3J0Lgotdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZs
YWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0lu
Zm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIGlmICghaXNSb290TGF5ZXIo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDIwNiw3ICs0MjA2LDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEwKICAgICAgICAgZml4ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGlu
Z0luZm8sIHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29u
dGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYg
cGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBh
aW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxm
UGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTQyNDgsMjQgKzQyNDgsMjUgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8g
ZGlzYWJsZSBzdWJwaXhlbCBxdWFudGl6YXRpb24gZm9yIG92ZXJmbG93IGNsaXBzIG9yIHN1YmZy
YW1lcyBvbmNlIHdlIHNjcm9sbCB0aG9zZQogICAgIC8vIHRoaW5ncyBvbiB0aGUgc2Nyb2xsaW5n
IHRocmVhZC4KICAgICBib29sIGRpZFF1YW50aXplRm9udHMgPSB0cnVlOwotICAgIGJvb2wgbmVl
ZFRvQWRqdXN0U3VicGl4ZWxRdWFudGl6YXRpb24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXph
dGlvbihjb250ZXh0LCBkaWRRdWFudGl6ZUZvbnRzKTsKKyAgICBib29sIG5lZWRUb0FkanVzdFN1
YnBpeGVsUXVhbnRpemF0aW9uID0gc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24ob3JpZ2lu
YWxDb250ZXh0LCBkaWRRdWFudGl6ZUZvbnRzKTsKIAogICAgIC8vIEFwcGx5IGNsaXAtcGF0aCB0
byBjb250ZXh0LgogICAgIExheW91dFNpemUgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IG9m
ZnNldEZyb21Sb290OwotICAgIGlmIChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2soKSAmJiAocmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50
aW5nKGNvbnRleHQsIHBhaW50RmxhZ3MpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5mbG93VGhyZWFk
Q29udGFpbmluZ0Jsb2NrKCkgJiYgKHJlbmRlcmVyKCkuaGFzQ2xpcFBhdGgoKSB8fCBoYXNGaWx0
ZXJUaGF0SXNQYWludGluZyhvcmlnaW5hbENvbnRleHQsIHBhaW50RmxhZ3MpKSkKICAgICAgICAg
Y29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IHRvTGF5b3V0U2l6ZShjb252ZXJ0VG9MYXllckNv
b3JkcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBMYXlvdXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1
bW5zKSk7CiAKICAgICBib29sIGhhc0NsaXBQYXRoID0gZmFsc2U7CiAgICAgaWYgKHNob3VsZEFw
cGx5Q2xpcFBhdGgocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykp
Ci0gICAgICAgIGhhc0NsaXBQYXRoID0gc2V0dXBDbGlwUGF0aChjb250ZXh0LCBwYWludGluZ0lu
Zm8sIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAgICAgICBoYXNDbGlwUGF0aCA9IHNldHVwQ2xpcFBh
dGgob3JpZ2luYWxDb250ZXh0LCBwYWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJv
b3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogCiAg
ICAgTGF5ZXJQYWludGluZ0luZm8gbG9jYWxQYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0gY29udGV4dDsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBh
aW50ZXIgPSBzZXR1cEZpbHRlcnMoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50Rmxh
Z3MsIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZv
cmlnaW5hbENvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNv
bnRleHQgPSBvcmlnaW5hbENvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVj
dFJlbmRlcmVySGVscGVyPiBmaWx0ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKCpjb250ZXh0LCBs
b2NhbFBhaW50aW5nSW5mbywgcGFpbnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwg
cm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgaWYg
KGZpbHRlclBhaW50ZXIpIHsKICAgICAgICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXItPmZpbHRl
ckNvbnRleHQoKTsKLSAgICAgICAgaWYgKGNvbnRleHQgIT0gdHJhbnNwYXJlbmN5TGF5ZXJDb250
ZXh0ICYmIGhhdmVUcmFuc3BhcmVuY3kpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgIT0gJnRyYW5z
cGFyZW5jeUxheWVyQ29udGV4dCAmJiBoYXZlVHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICAgICAv
LyBJZiB3ZSBoYXZlIGEgZmlsdGVyIGFuZCB0cmFuc3BhcmVuY3ksIHdlIGhhdmUgdG8gZWFnZXJs
eSBzdGFydCBhIHRyYW5zcGFyZW5jeSBsYXllciBoZXJlLCByYXRoZXIgdGhhbiByaXNrIGEgY2hp
bGQgbGF5ZXIgbGF6aWx5IHN0YXJ0cyBvbmUgd2l0aCB0aGUgd3JvbmcgY29udGV4dC4KICAgICAg
ICAgICAgIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwg
bG9jYWxQYWludGluZ0luZm8sIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCk7CiAgICAgICAg
IH0KQEAgLTQzMTEsNjMgKzQzMTIsNjMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBp
ZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSB7CiAgICAgICAgIC8vIFBhaW50IG9u
bHkgdGhlIGJhY2tncm91bmRzIGZvciBhbGwgb2YgdGhlIGZyYWdtZW50cyBvZiB0aGUgbGF5ZXIu
CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpCi0gICAg
ICAgICAgICBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRl
eHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0
LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21l
bnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBw
YWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAgICAg
ICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlcik7CiAgICAgfQogCiAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9m
IGNoaWxkcmVuIHdpdGggbmVnYXRpdmUgei1pbmRpY2VzLgogICAgIGlmICgoaXNQYWludGluZ1Nj
cm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWlu
dGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkK
LSAgICAgICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgIHBhaW50TGlzdChuZWdaT3JkZXJMaXN0
KCksICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAK
ICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAgICAgIGlmIChz
aG91bGRQYWludENvbnRlbnQpCi0gICAgICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVu
dHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFp
bnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAg
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgdHJh
bnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVU
cmFuc3BhcmVuY3ksCiAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVo
YXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgc2VsZWN0aW9uT25seSB8fCBzZWxl
Y3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRQYWludE91
dGxpbmUpCi0gICAgICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywg
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlcik7CisgICAgICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZy
YWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogCiAgICAgaWYgKGlzUGFpbnRpbmdDb21wb3NpdGVk
Rm9yZWdyb3VuZCkgewogICAgICAgICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2
ZSBvdmVyZmxvdy4KLSAgICAgICAgcGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCksIGNv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWlu
dExpc3QobV9ub3JtYWxGbG93TGlzdC5nZXQoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
LCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVk
IGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50
TGlzdChwb3NaT3JkZXJMaXN0KCksIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBh
aW50RmxhZ3MpOworICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCAqY29udGV4dCwg
bG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgLy8gUGFpbnQg
dGhlIGZpeGVkIGVsZW1lbnRzIGZyb20gZmxvdyB0aHJlYWRzLgotICAgICAgICBwYWludEZpeGVk
TGF5ZXJzSW5OYW1lZEZsb3dzKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50
RmxhZ3MpOworICAgICAgICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKCpjb250ZXh0LCBs
b2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAgICAgCiAgICAgICAgIC8v
IElmIHRoaXMgaXMgYSByZWdpb24sIHBhaW50IGl0cyBjb250ZW50cyB2aWEgdGhlIGZsb3cgdGhy
ZWFkJ3MgbGF5ZXIuCiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQpCi0gICAgICAgICAg
ICBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29u
dGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgICAgICBw
YWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRl
eHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIH0KIAogICAgIGlm
IChpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMgJiYgaGFzU2Nyb2xsYmFycygpKQotICAgICAg
ICBwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRl
eHQsIGxvY2FsUGFpbnRpbmdJbmZvKTsKKyAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9y
RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOwog
CiAgICAgaWYgKGZpbHRlclBhaW50ZXIpIHsKLSAgICAgICAgY29udGV4dCA9IGFwcGx5RmlsdGVy
cyhmaWx0ZXJQYWludGVyLmdldCgpLCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLCBsYXllckZyYWdtZW50cyk7CisgICAgICAgIGNvbnRleHQgPSAmYXBwbHlGaWx0
ZXJzKGZpbHRlclBhaW50ZXIuZ2V0KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQ
YWludGluZ0luZm8sIGxheWVyRnJhZ21lbnRzKTsKICAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51
bGxwdHI7CiAgICAgfQogICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1c2UgdGhl
IG9yaWdpbmFsIHRyYW5zcGFyZW5jeSBjb250ZXh0LgotICAgIEFTU0VSVCh0cmFuc3BhcmVuY3lM
YXllckNvbnRleHQgPT0gY29udGV4dCk7CisgICAgQVNTRVJUKCZ0cmFuc3BhcmVuY3lMYXllckNv
bnRleHQgPT0gY29udGV4dCk7CiAKICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2Vs
ZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIGlm
IChzaG91bGRQYWludE1hc2socGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRG
bGFncykpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRz
LgotICAgICAgICAgICAgcGFpbnRNYXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250
ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAg
ICAgICAgICAgIHBhaW50TWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQs
IGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCEocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBv
c2l0aW5nTWFza1BoYXNlKSAmJiAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBv
c2l0aW5nQ2xpcFBhdGhQaGFzZSkpIHsKICAgICAgICAgICAgIC8vIFJlLXVzZSBwYWludENoaWxk
Q2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzIHRvIHBhaW50IGJsYWNrIGZvciB0aGUgY29tcG9zaXRp
bmcgY2xpcHBpbmcgbWFzay4KLSAgICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JG
cmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOworICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5n
TWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoKGxvY2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xp
cHBpbmdNYXNrUGhhc2UpKSB7CiAgICAgICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyIHJhZGl1
cyBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5n
TWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxk
Q2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQ
YWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTQzODYsNyArNDM4Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAg
ICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXll
ckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywg
Y29uc3QgTGF5b3V0U2l6ZSYgdHJhbnNsYXRpb25PZmZzZXQpCit2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWlu
dEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCkKIHsKICAgICAvLyBU
aGlzIGludm9sdmVzIHN1YnRyYWN0aW5nIG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVyIGlu
IG91ciBjdXJyZW50IGNvb3JkaW5hdGUgc3BhY2UsIGJ1dCBwcmVzZXJ2aW5nCiAgICAgLy8gdGhl
IGFjY3VtdWxhdGVkIGVycm9yIGZvciBzdWItcGl4ZWwgbGF5b3V0LgpAQCAtNDQwMiw4ICs0NDAz
LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ3JhcGhp
Y3MgY29udGV4dCB0byB0aGUgc25hcHBpbmcgcG9zaXRpb24gdG8gYXZvaWQgb2ZmLWRldmljZS1w
aXhlbCBwb3NpdGluZy4KICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQoZGV2aWNlUGl4ZWxT
bmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyLndpZHRoKCksIGRldmljZVBpeGVsU25hcHBlZE9mZnNl
dEZvclRoaXNMYXllci5oZWlnaHQoKSk7CiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybS4KLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNv
bnRleHQtPmNvbmNhdENUTSh0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQu
Y29uY2F0Q1RNKHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIE5vdyBk
byBhIHBhaW50IHdpdGggdGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlv
dXRTaXplIGFkanVzdGVkU3VicGl4ZWxBY2N1bXVsYXRpb24gPSBvZmZzZXRGb3JUaGlzTGF5ZXIg
LSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7CkBAIC00
NDEyLDcgKzQ0MTMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgcGFpbnRMYXllckNv
bnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFp
bnRGbGFncyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVy
TGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZv
LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAg
IHJldHVybjsKQEAgLTQ1OTcsNyArNDU5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBh
aW50aW5nSW5mb0ZvckZyYWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAg
ICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJh
Z21lbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxh
eWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXll
ckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5h
dGlvbkZyYWdtZW50czsKICAgICBMYXlvdXRTaXplIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJv
bVJvb3Q7CkBAIC00NjI5LDcgKzQ2MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5z
Zm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYwogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNv
bnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBHcmFwaGljc0NvbnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJh
bnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVo
YXZpb3IsCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7
CkBAIC00NjU3LDcgKzQ2NTgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRG
b3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBH
cmFwaGljc0NvbnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5
ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0
cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJl
bmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3Is
CiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGJvb2wgc2Vs
ZWN0aW9uT25seSkKIHsKQEAgLTQ3MTQsNyArNDcxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVuCiAgICAgICAgIHJlc3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50
RGlydHlSZWN0LCBjbGlwcGVkUmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9y
ZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMYXll
ckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3Zv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWlu
dFBoYXNlIHBoYXNlLCBjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQ
YWludGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9j
YWxQYWludGluZ0luZm8uY2xpcFRvRGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA+
IDE7CkBAIC00NzM2LDcgKzQ3MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91
bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgIH0K
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxh
eWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVy
RnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBsb2NhbFBhaW50aW5nSW5mbywKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3Is
IFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewogICAgIGZvciAo
Y29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgewpAQCAtNDc1MSw3ICs0NzUy
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IGxvY2FsUGFpbnRpbmdJbmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCiAg
ICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9y
IChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzcxLDcgKzQ3
NzIsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdt
ZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5
ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLAogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdEZvclJlbmRlcmVyKQogewogICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXll
ckZyYWdtZW50cykgewpAQCAtNDc5MCw3ICs0NzkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5
ZXIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9sc0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRz
KGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCiB7CiAg
ICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAg
IGlmIChmcmFnbWVudC5iYWNrZ3JvdW5kUmVjdC5pc0VtcHR5KCkpCkBAIC02OTE4LDcgKzY5MTks
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQogICAgIHJlbmRlcmVy
KCkucmVwYWludCgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVh
ZEluc2lkZVJlZ2lvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KiByZWdpb24sIExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBh
aW50T2Zmc2V0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCog
cmVnaW9uLCBMYXlvdXRSZWN0IHBhaW50RGlydHlSZWN0LCBMYXlvdXRQb2ludCBwYWludE9mZnNl
dCwgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykKIHsKICAgICBMYXlvdXRSZWN0IHJlZ2lvbkNvbnRlbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJC
b3g+KHJlZ2lvbi0+bGF5ZXJPd25lcigpKS5jb250ZW50Qm94UmVjdCgpOwogICAgIEN1cnJlbnRS
ZW5kZXJSZWdpb25NYWludGFpbmVyIHJlZ2lvbk1haW50YWluZXIoKnJlZ2lvbik7CkBAIC02OTI2
LDE3ICs2OTI3LDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5z
aWRlUmVnaW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuCiAKICAgICBMYXlvdXRTaXpl
IG1vdmVPZmZzZXQgPSByZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uTG9jYXRpb24oKSAtIChwYWlu
dE9mZnNldCArIHJlZ2lvbkNvbnRlbnRCb3gubG9jYXRpb24oKSkgKyByZWdpb24tPmZyYWdtZW50
Q29udGFpbmVyKCkuc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAgICAgRmxvYXRQb2ludCBhZGp1
c3RlZFBhaW50T2Zmc2V0ID0gcm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQo
bW92ZU9mZnNldCksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
LSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1hZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSwgLWFkanVzdGVkUGFpbnRPZmZzZXQueSgpKTsKKyAgICBjb250ZXh0LnNh
dmUoKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtYWRqdXN0ZWRQYWludE9mZnNldC54KCksIC1h
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSk7CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVsQWNjdW11
bGF0aW9uID0gbW92ZU9mZnNldCAtIHRvTGF5b3V0U2l6ZShMYXlvdXRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0KSk7CiAgICAgcGFpbnREaXJ0eVJlY3QubW92ZShtb3ZlT2Zmc2V0KTsKICAgICBw
YWludChjb250ZXh0LCBwYWludERpcnR5UmVjdCwgTGF5b3V0U2l6ZSgtc3VicGl4ZWxBY2N1bXVs
YXRpb24ud2lkdGgoKSwgLXN1YnBpeGVsQWNjdW11bGF0aW9uLmhlaWdodCgpKSwgcGFpbnRCZWhh
dmlvciwgbnVsbHB0ciwgcGFpbnRGbGFncyB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMp
OwogICAgIHJlZ2lvbi0+cmVzdG9yZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKCk7Ci0gICAg
Y29udGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIFJl
bmRlckxheWVyOjpwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYgZnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdz
KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMo
Y29uc3QgTGF5ZXJGcmFnbWVudHMmIGZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncykKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudENvbnRhaW5lcigpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCmluZGV4IGI2YTEyOGNhOGVmOTQ1ZDAwNmUxOGI3OTA5YWM5MTc1YzdjMmFi
NDMuLmVkMWI0MDAyNDY3NDgxN2IyN2U3YjQ3MTc2YTA2M2UxNmYyZTJiN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgog
ICAgIGJvb2wgaGl0VGVzdE92ZXJmbG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IElu
dFBvaW50JiBsb2NhbFBvaW50KTsKICAgICBJbnRTaXplIG9mZnNldEZyb21SZXNpemVDb3JuZXIo
Y29uc3QgSW50UG9pbnQmIGFic29sdXRlUG9pbnQpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludE92
ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzID0gZmFsc2Up
OwotICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKLSAgICB2b2lkIHBhaW50UmVzaXpl
cihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3Qm
IGRhbWFnZVJlY3QpOworICAgIHZvaWQgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBw
YWludGluZ092ZXJsYXlDb250cm9scyA9IGZhbHNlKTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29y
bmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCk7CisgICAgdm9pZCBwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZvaWQg
dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHB1
YmxpYzoKICAgICAvLyBwYWludHMgdGhlIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZGFtYWdl
IHJlY3QgZnJvbSBiYWNrIHRvCiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9v
a3MgZm9yIG1vdXNlIGV2ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJz
ZWN0IHRoZSBwb2ludCBmcm9tIGZyb250IHRvIGJhY2suCi0gICAgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXpl
JiBzdWJwaXhlbEFjY3VtdWxhdGlvbiA9IExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JOb3JtYWwsCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3Vt
dWxhdGlvbiA9IExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3Jt
YWwsCiAgICAgICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFBh
aW50TGF5ZXJGbGFncyA9IDApOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAgdm9pZCBw
YWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3Qm
IGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9v
dCA9IG51bGxwdHIpOworICAgIHZvaWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3QgPSBudWxscHRyKTsKIAotICAgIHZvaWQgcGFpbnRO
YW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQqLCBMYXlvdXRSZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JOb3JtYWwsIFBhaW50TGF5ZXJGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnRO
YW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQqLCBMYXlvdXRSZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBh
aW50QmVoYXZpb3JOb3JtYWwsIFBhaW50TGF5ZXJGbGFncyA9IDApOwogCiAgICAgc3RydWN0IENs
aXBSZWN0c0NvbnRleHQgewogICAgICAgICBDbGlwUmVjdHNDb250ZXh0KGNvbnN0IFJlbmRlckxh
eWVyKiBpblJvb3RMYXllciwgQ2xpcFJlY3RzVHlwZSBpbkNsaXBSZWN0c1R5cGUsIE92ZXJsYXlT
Y3JvbGxiYXJTaXplUmVsZXZhbmN5IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJ
Z25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCBpblJl
c3BlY3RPdmVyZmxvd0NsaXAgPSBSZXNwZWN0T3ZlcmZsb3dDbGlwKQpAQCAtNzE3LDggKzcxNyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlUmVwYWludFJlY3RzSW5jbHVkaW5nRGVzY2Vu
ZGFudHMoKTsKICAgICB2b2lkIGNsZWFyUmVwYWludFJlY3RzKCk7CiAKLSAgICB2b2lkIGNsaXBU
b1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBD
bGlwUmVjdCYsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVy
UmFkaXVzKTsKLSAgICB2b2lkIHJlc3RvcmVDbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExh
eW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBjb25zdCBDbGlwUmVjdCYpOworICAgIHZvaWQgY2xp
cFRvUmVjdChjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IENsaXBSZWN0JiwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3Jk
ZXJSYWRpdXMpOworICAgIHZvaWQgcmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CiAKICAgICBib29s
IHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpIGNvbnN0OwogCkBAIC03NjgsNDIgKzc2OCw0MiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5l
ZWRlZCgpOwogCi0gICAgYm9vbCBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGlj
c0NvbnRleHQqLCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKTsKKyAgICBib29sIHNldHVwRm9udFN1
YnBpeGVsUXVhbnRpemF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGJvb2wmIGRpZFF1YW50aXplRm9u
dHMpOwogCiAgICAgUGF0aCBjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0
RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgV2luZFJ1bGUmKSBjb25z
dDsKIAotICAgIGJvb2wgc2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRS
ZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVk
KTsKKyAgICBib29sIHNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVj
dCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7
CiAKLSAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCosIFBh
aW50TGF5ZXJGbGFncykgY29uc3Q7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJl
bmRlcmVySGVscGVyPiBzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGlu
Z0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290
LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5k
c0NvbXB1dGVkKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZl
Y3RSZW5kZXJlckhlbHBlciosIEdyYXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXll
clBhaW50aW5nSW5mbyYsIExheWVyRnJhZ21lbnRzJik7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0
SXNQYWludGluZyhHcmFwaGljc0NvbnRleHQmLCBQYWludExheWVyRmxhZ3MpIGNvbnN0OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJz
KEdyYXBoaWNzQ29udGV4dCYsIExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZl
Qm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBhcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFwaGlj
c0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZyYWdt
ZW50cyYpOwogCi0gICAgdm9pZCBwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50Rml4ZWRM
YXllcnNJbk5hbWVkRmxvd3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBQYWludExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVm
bGVjdGlvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
TGF5ZXJGbGFncyk7Ci0gICAgdm9pZCBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywg
Y29uc3QgTGF5b3V0U2l6ZSYgdHJhbnNsYXRpb25PZmZzZXQgPSBMYXlvdXRTaXplKCkpOwotICAg
IHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8
UmVuZGVyTGF5ZXIqPiosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiwgUGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQg
cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExheWVyQ29u
dGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiwgUGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJh
bnNmb3JtKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRM
YXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNp
emUoKSk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRM
aXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwogCiAgICAgdm9pZCBjb2xsZWN0RnJhZ21l
bnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3Qg
TGF5b3V0UmVjdCYgZGlydHlSZWN0LAogICAgICAgICBQYWdpbmF0aW9uSW5jbHVzaW9uTW9kZSwK
ICAgICAgICAgQ2xpcFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5P
dmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCwg
Y29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsCiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QqIGxheWVyQm91bmRpbmdCb3ggPSBudWxscHRyLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0Zy
YWdtZW50cyA9IElnbm9yZVJvb3RPZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRl
UGFpbnRpbmdJbmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25z
dCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRG
b3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFw
aGljc0NvbnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50QmFj
a2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4
dCYsIEdyYXBoaWNzQ29udGV4dCYgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJh
bnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRl
ck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRGb3JlZ3Jv
dW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
R3JhcGhpY3NDb250ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCisgICAgdm9pZCBwYWlu
dEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0Nv
bnRleHQmLCBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKICAgICAg
ICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2
ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBS
ZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLAogICAgICAgICBib29sIHNlbGVj
dGlvbk9ubHkpOwotICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNl
KFBhaW50UGhhc2UsIGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50
aW5nUm9vdEZvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5k
ZXJlcik7Ci0gICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3Qg
TGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYpOwotICAgIHZvaWQgcGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBSZW5kZXJPYmpl
Y3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBhaW50Q2hpbGRDbGlwcGlu
Z01hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9y
UmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFn
cyk7CisgICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQ
aGFzZSwgY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIpOworICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsK
KyAgICB2b2lkIHBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZy
YWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7Cisg
ICAgdm9pZCBwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFp
bnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJl
cik7CisgICAgdm9pZCBwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKIAog
ICAgIFJlbmRlckxheWVyKiB0cmFuc3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKLSAgICB2b2lk
IGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKKyAgICB2b2lkIGJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKIAogICAgIFJlbmRlckxheWVyKiBo
aXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5l
ckxheWVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwgYm9vbCBhcHBsaWVkVHJhbnNmb3JtLApAQCAtOTM4LDcgKzkzOCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgIHZvaWQgdXBk
YXRlUmVzaXplclN0eWxlKCk7CiAKLSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCk7Cisg
ICAgdm9pZCBkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
TGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVQYWdpbmF0
aW9uKCk7CiAKQEAgLTk4Miw3ICs5ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwKICAgICAgICAgY29uc3QgSGl0VGVzdGlu
Z1RyYW5zZm9ybVN0YXRlKiwgZG91YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsCiAgICAgICAg
IGRvdWJsZSogek9mZnNldCwgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0
ZW5lZFRyYW5zZm9ybVN0YXRlLCBib29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKLSAgICB2b2lk
IHBhaW50Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVy
RmxhZ3MpOworICAgIHZvaWQgcGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CiAgICAgYm9vbCBtYXBMYXllckNsaXBSZWN0c1RvRnJh
Z21lbnRhdGlvbkxheWVyKENsaXBSZWN0cyYpIGNvbnN0OwogCiAgICAgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQqIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA1MDY0
YzRmOGNmODZlZjNlNzBhM2VlNzdkYjIyYzEyNTY2ZWI0N2Y5Li4zOTA0MWE3OTk1ZThkNmY2ZjE5
ZWExN2Y2NDEzM2M5ZmVlMzgxMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVj
dCYgciwgR3JhcGgKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludElu
dG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9m
IHJvb3RMYXllci4KICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5
ZXJQYWludGluZ1BoYXNlIHBhaW50aW5nUGhhc2UpCiB7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVy
KiBncmFwaGljc0xheWVyLCBHcmFwaAogICAgICAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChl
bmNsb3NpbmdJbnRSZWN0KGNvbXBvc2l0ZWRCb3VuZHNJbmNsdWRpbmdNYXJnaW4oKSkpOwogCiAg
ICAgICAgIC8vIFdlIGhhdmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5n
LCBiZWNhdXNlIGJvdGggbWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgot
ICAgICAgICBwYWludEludG9MYXllcihncmFwaGljc0xheWVyLCAmY29udGV4dCwgZGlydHlSZWN0
LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgcGFpbnRJbnRv
TGF5ZXIoZ3JhcGhpY3NMYXllciwgY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9y
bWFsLCBwYWludGluZ1BoYXNlKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFBhaW50KCZyZW5kZXJlcigpLCBkaXJ0eVJlY3QpOwogICAgIH0gZWxzZSBpZiAoZ3JhcGhp
Y3NMYXllciA9PSBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkgewpAQCAtMjM1NCw4ICsy
MzU0LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoLXNjcm9sbENvcm5lckFuZFJlc2l6ZXIueCgpLCAtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci55
KCkpOwogICAgICAgICBMYXlvdXRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91dFJlY3QoY2xp
cCk7CiAgICAgICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyQW5kUmVzaXpl
ci5sb2NhdGlvbigpKTsKLSAgICAgICAgbV9vd25pbmdMYXllci5wYWludFNjcm9sbENvcm5lcigm
Y29udGV4dCwgSW50UG9pbnQoKSwgc25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7Ci0g
ICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRSZXNpemVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCB0
cmFuc2Zvcm1lZENsaXApOworICAgICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVy
KGNvbnRleHQsIEludFBvaW50KCksIHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOwor
ICAgICAgICBtX293bmluZ0xheWVyLnBhaW50UmVzaXplcihjb250ZXh0LCBJbnRQb2ludCgpLCB0
cmFuc2Zvcm1lZENsaXApOwogICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAjaWZu
ZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5oCmluZGV4IDI0ZWIyYmJkYmIxNDIxNWYzMjQwZTk3ZjUzZTA1ZGU5ZWI0ODY0OTEuLmQ2NmZi
ODIxNTQ4MWI1OTVlZWNhMTkzM2IyYmViZGYzNDU2YjAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaGFzVGlsZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gKG1fY2hpbGRDb250YWlubWVudExheWVyICYmIG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIp
OyB9CiAgICAgR3JhcGhpY3NMYXllciogdGlsZUNhY2hlRmxhdHRlbmluZ0xheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV91c2luZ1RpbGVkQ2FjaGVMYXllciA/IG1fY2hpbGRDb250YWlubWVudExheWVy
LmdldCgpIDogbnVsbHB0cjsgfQogCi0gICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFw
aGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJl
Y3QsIFBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKKyAgICB2b2lk
IHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UpOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB1cGRhdGVHZW9t
ZXRyeS4KICAgICB2b2lkIGFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhy
ZWFkKExheW91dFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxh
eWVyKiBjb21wb3NpdGluZ0FuY2VzdG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggODk1NTZlMzFjM2ExM2Zh
NTc0MzRkNzhjNmUyZjE4Y2EyMzRkNWY4ZC4uNmY0NWU5Njc4NWVmYzNiZjAxOTYzNjZjZmQwYTJm
NzZmZmMwZmZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTI4NjYsNyArMjg2Niw3IEBAIHZvaWQgcGFpbnRTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjCiAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QueCgpLCAtc2Nyb2xs
YmFyUmVjdC55KCkpOwogICAgIEludFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICB0
cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbGJhclJlY3QubG9jYXRpb24oKSk7Ci0gICAgc2Ny
b2xsYmFyLT5wYWludCgmY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKKyAgICBzY3JvbGxiYXIt
PnBhaW50KGNvbnRleHQsIHRyYW5zZm9ybWVkQ2xpcCk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7
CiB9CiAKQEAgLTI4ODMsNyArMjg4Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyCiAgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxDb3JuZXIueCgpLCAtc2Nyb2xsQ29ybmVyLnko
KSk7CiAgICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gcGl4ZWxTbmFwcGVkUmVjdEZv
ckludGVncmFsUG9zaXRpb25lZEl0ZW1zOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5
KHNjcm9sbENvcm5lci5sb2NhdGlvbigpKTsKLSAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgICAg
ICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHJh
bnNmb3JtZWRDbGlwKTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDQwZjVlMzJjZjUw
MmNiYmRlMGJmNTNjNDBjMzNhMjQxZjQ2NWEzNzcuLmUzY2I3OTZiZmY0NzM2ZjQ3ZGM2YTExNjZl
OGU0NDJlYjBmNDYwN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xs
YmFyKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAg
ICAgICAgbV92QmFyLT53aWR0aCgpLAogICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9w
KCkgKyBib3JkZXJCb3R0b20oKSkpOwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3Jv
bGxSZWN0KTsKLSAgICAgICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBl
ZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKKyAgICAgICAgbV92QmFyLT5wYWludChwYWludElu
Zm8uY29udGV4dCgpLCBzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogICAgIH0KIH0K
IApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgfQogCiAg
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBw
YWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgY29sb3JTcGFjZSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNl
KTsKIAogICAgIFRleHRSdW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4
cGFuc2lvbiwgaXRlbVN0eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmlj
b2RlQmlkaSgpKSwgdHJ1ZSwgVGV4dFJ1bjo6Tm9Sb3VuZGluZyk7CiAgICAgRm9udENhc2NhZGUg
aXRlbUZvbnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBpdGVtIHRleHQK
LSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCBy
b3VuZGVkSW50UG9pbnQoci5sb2NhdGlvbigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3QmlkaVRleHQoaXRlbUZvbnQsIHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChyLmxvY2F0aW9u
KCkpKTsKIH0KIAogdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGludCBsaXN0
SW5kZXgpCkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1C
YWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAg
ICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKICAgICAg
ICAgTGF5b3V0UmVjdCBpdGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQs
IGxpc3RJbmRleCk7CiAgICAgICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3Qo
cGFpbnRPZmZzZXQpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBw
ZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tD
b2xvciwgY29sb3JTcGFjZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggYTg1NWE0OGU1Mjg4MDhiMjRjZjk1YzgxNzIw
ZTBjOTkxYzRiNTg2MC4uOGJhMGQ2ZDMyMTRmNGRjNTZhY2IwMTQ4NjQ2MTg2NDA0ZjdlNWFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAt
MTE5NCwxNCArMTE5NCwxNCBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEZsb2F0UmVj
dCBtYXJrZXIgPSBnZXRSZWxhdGl2ZU1hcmtlclJlY3QoKTsKICAgICBtYXJrZXIubW92ZUJ5KGJv
eE9yaWdpbik7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
OwogCiAgICAgaWYgKGlzSW1hZ2UoKSkgewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9p
bWFnZS0+aW1hZ2UodGhpcywgbWFya2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpLCBtYXJrZXIpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0
aGlzLCBtYXJrZXIuc2l6ZSgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7
CiAgICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAg
ICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAg
ICAgICAgc2VsUmVjdC5tb3ZlQnkoYm94T3JpZ2luKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMDksMjYgKzEyMDksMjYgQEAgdm9pZCBSZW5kZXJMaXN0
TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2UKICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAg
ICAgICAgIExheW91dFJlY3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAg
ICBzZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChz
bmFwcGVkSW50UmVjdChzZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNu
YXBwZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAg
IGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3Is
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9y
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgIEVM
aXN0U3R5bGVUeXBlIHR5cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2gg
KHR5cGUpIHsKICAgICAgICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0Vs
bGlwc2UobWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGxpcHNlKG1hcmtlcik7CisgICAgICAg
ICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGNvbnRl
eHQtPmRyYXdSZWN0KG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtl
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTEzMTcsMjIgKzEzMTcsMjIgQEAgdm9pZCBSZW5kZXJMaXN0
TWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2UKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2Nh
ZGUoKTsKICAgICBUZXh0UnVuIHRleHRSdW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1
bih0aGlzLCBmb250LCBtX3RleHQsIHN0eWxlKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBpZiAoIXN0eWxlKCku
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICBtYXJrZXIubW92ZUJ5KC1ib3hP
cmlnaW4pOwogICAgICAgICBtYXJrZXIgPSBtYXJrZXIudHJhbnNwb3NlZFJlY3QoKTsKICAgICAg
ICAgbWFya2VyLm1vdmVCeShGbG9hdFBvaW50KGJveC54KCksIGJveC55KCkgLSBsb2dpY2FsSGVp
Z2h0KCkpKTsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZShtYXJrZXIueCgpLCBtYXJrZXIubWF4WSgpKTsKLSAgICAgICAgY29udGV4dC0+cm90
YXRlKHN0YXRpY19jYXN0PGZsb2F0PihkZWcycmFkKDkwLikpKTsKLSAgICAgICAgY29udGV4dC0+
dHJhbnNsYXRlKC1tYXJrZXIueCgpLCAtbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKG1hcmtlci54KCksIG1hcmtlci5tYXhZKCkpOworICAgICAgICBjb250ZXh0LnJv
dGF0ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGVnMnJhZCg5MC4pKSk7CisgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1tYXJrZXIueCgpLCAtbWFya2VyLm1heFkoKSk7CiAgICAgfQogCiAgICAgRmxv
YXRQb2ludCB0ZXh0T3JpZ2luID0gRmxvYXRQb2ludChtYXJrZXIueCgpLCBtYXJrZXIueSgpICsg
c3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQ
b2ludFRvRGV2aWNlUGl4ZWxzKExheW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCksIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKIAog
ICAgIGlmICh0eXBlID09IEFzdGVyaXNrcyB8fCB0eXBlID09IEZvb3Rub3RlcykKLSAgICAgICAg
Y29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CisgICAgICAgIGNv
bnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGNvbnN0IFVDaGFyIHN1ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0
SXRlbS52YWx1ZSgpKTsKIApAQCAtMTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFy
a2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2UKICAgICAgICAgfQogICAgICAgICB0ZXh0UnVuLnNldFRleHQoU3RyaW5nVmlldyh0b0Ry
YXcpKTsKIAotICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3Jp
Z2luKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2lu
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xzLmNwcAppbmRleCAyMTcxMzg4ZWFmZThhOGMyM2JkMzE1OTZhYzBjZWU5NDgyOGI4
YjFhLi5iNTJhNmM5YjRjZGRiNjkwMTMwY2ZiOTFiZTdmOGRmMmI2NGRjOGIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCkBAIC05MSw5
ICs5MSw5IEBAIHN0YXRpYyBGbG9hdFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVu
dENvbnRleHQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjCiAgICAgaWYgKHpvb21MZXZlbCAhPSAx
LjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgo
KSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRS
ZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRy
YW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAt
dW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRl
KHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9v
bWVkUmVjdC55KCkpOwogICAgIH0KICAgICByZXR1cm4gdW56b29tZWRSZWN0OwogfQpAQCAtMTI4
LDc2ICsxMjgsNzYgQEAgdm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RNZWRpYVNsaWRl
clRodW1iU2l6ZShSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIGJvb2wgUmVuZGVyTWVkaWFDb250cm9s
czo6cGFpbnRNZWRpYUNvbnRyb2xzUGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBwYXJ0LCBj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIHN3aXRjaCAocGFydCkgewogICAgIGNh
c2UgTWVkaWFFbnRlckZ1bGxzY3JlZW5CdXR0b246CiAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2Ny
ZWVuQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1l
bnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGVudGVyQnV0dG9uID0gYnRuLT5kaXNw
bGF5VHlwZSgpID09IE1lZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uOwotICAgICAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoZW50ZXJCdXR0b24gPyBXS01lZGlhVUlQYXJ0RnVsbHNjcmVlbkJ1dHRv
biA6IFdLTWVkaWFVSVBhcnRFeGl0RnVsbHNjcmVlbkJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChlbnRlckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0
dG9uIDogV0tNZWRpYVVJUGFydEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbjoK
ICAgICBjYXNlIE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uOgogICAgICAgICBpZiAoTWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KiBidG4gPSBzdGF0aWNf
Y2FzdDxNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqPihvLm5v
ZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxlID0gYnRuLT5kaXNwbGF5
VHlwZSgpID09IE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uOwotICAgICAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRD
YXB0aW9uc0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBh
aW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykp
OworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRp
YVVJUGFydEhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2Vk
Q2FwdGlvbnNCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIs
IGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhTXV0ZUJ1dHRvbjoKICAgICBjYXNlIE1lZGlhVW5NdXRlQnV0dG9uOgogICAgICAgICBp
ZiAoTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlh
Q29udHJvbE11dGVCdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29s
IGF1ZGlvRW5hYmxlZCA9IGJ0bi0+ZGlzcGxheVR5cGUoKSA9PSBNZWRpYU11dGVCdXR0b247Ci0g
ICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0
TXV0ZUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRVbk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAg
d2tEcmF3TWVkaWFVSVBhcnQoYXVkaW9FbmFibGVkID8gV0tNZWRpYVVJUGFydE11dGVCdXR0b24g
OiBXS01lZGlhVUlQYXJ0VW5NdXRlQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZWRpYVBhdXNlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFQbGF5QnV0dG9u
OgogICAgICAgICBpZiAoTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRp
Y19jYXN0PE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAg
ICAgICAgICBib29sIGNhblBsYXkgPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFQbGF5QnV0
dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoY2FuUGxheSA/IFdLTWVkaWFVSVBh
cnRQbGF5QnV0dG9uIDogV0tNZWRpYVVJUGFydFBhdXNlQnV0dG9uLCBwYWludEluZm8uY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAg
IHdrRHJhd01lZGlhVUlQYXJ0KGNhblBsYXkgPyBXS01lZGlhVUlQYXJ0UGxheUJ1dHRvbiA6IFdL
TWVkaWFVSVBhcnRQYXVzZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVkaWFSZXdpbmRCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdL
TWVkaWFVSVBhcnRSZXdpbmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChX
S01lZGlhVUlQYXJ0UmV3aW5kQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChX
S01lZGlhVUlQYXJ0U2Vla1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNZWRpYVNlZWtCYWNrQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdN
ZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0Ry
YXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVNsaWRlcjogewogICAgICAgICBpZiAoSFRNTE1lZGlh
RWxlbWVudCogbWVkaWFFbGVtZW50ID0gcGFyZW50TWVkaWFFbGVtZW50KG8pKSB7CiAgICAgICAg
ICAgICBGbG9hdFJlY3QgdW56b29tZWRSZWN0ID0gZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3Vy
cmVudENvbnRleHQobywgcGFpbnRJbmZvLCByKTsKLSAgICAgICAgICAgIHdrRHJhd01lZGlhU2xp
ZGVyVHJhY2socGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJl
Y3QsIG1lZGlhRWxlbWVudC0+cGVyY2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlv
bigpLCBtZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24o
KSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFj
ayhwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1l
ZGlhRWxlbWVudC0+cGVyY2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBt
ZWRpYUVsZW1lbnQtPmN1cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0
ZXJtaW5lU3RhdGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE1lZGlhU2xpZGVyVGh1bWI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRUaW1lbGluZVNsaWRlclRodW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
V0tNZWRpYVVJUGFydFRpbWVsaW5lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjoKLSAgICAgICAgd2tEcmF3TWVkaWFV
SVBhcnQoV0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdr
RHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJDb250YWluZXIsIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdr
RHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlclRodW1iOgotICAgICAgICB3a0RyYXdN
ZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXI6Ci0gICAg
ICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVy
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRl
KG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5W
b2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3Jl
ZW5Wb2x1bWVTbGlkZXJUaHVtYjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJ
UGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlh
VUlQYXJ0KFdLTWVkaWFVSVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgotICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0QmFja2dyb3VuZCwgcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdr
RHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVkaWFDdXJyZW50VGltZURpc3BsYXk6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5jcHAKaW5kZXggN2UxZmQ1YjRjNGY2N2Y4MzYxNzZhMjVkMTFkNDk5OWM3ZWY3
OGIyYi4uNTljNjNjMGEwYmMyZjVkMTJiZjFjMjRhMjVjNzY0OGY2NThkMjUzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC01
NzAsNyArNTcwLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Zmxvd1RocmVh
ZFBvcnRpb25PdmVyZmxvd1JlY3QoY29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBSZW5kZXJNdWx0
aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkKiBmbG93VGhyZWFkID0gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CkBAIC01ODgsNyAr
NTg4LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoY29sQ291bnQgPD0gMSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNM
aW5lcyhwYWludEluZm8uY29udGV4dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRp
YWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIGlmIChmbG93VGhyZWFkLT5w
cm9ncmVzc2lvbklzSW5saW5lKCkpIHsKICAgICAgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc1Jl
dmVyc2VkKCk7CkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6
cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWlu
dE9mZnNldC55KCkgKyBydWxlTG9naWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVB
ZGQ7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBydWxlQm90dG9tID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHJ1bGVUb3AgKyBjb250ZW50SGVpZ2h0KCkgOiBydWxlVG9wICsgcnVs
ZVRoaWNrbmVzczsKICAgICAgICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0
ID0gc25hcHBlZEludFJlY3QocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCAtIHJ1bGVMZWZ0
LCBydWxlQm90dG9tIC0gcnVsZVRvcCk7Ci0gICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKCpwYWludEluZm8uY29udGV4dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJveFNpZGUsIHJ1
bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOworICAgICAgICAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVj
dCwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCA9IGN1
cnJMb2dpY2FsTGVmdE9mZnNldDsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFJlbmRlck11bHRp
Q29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQbwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgY29sQ291bnQ7IGkrKykg
ewogICAgICAgICAgICAgcnVsZVJlY3QubW92ZShzdGVwKTsKICAgICAgICAgICAgIEludFJlY3Qg
cGl4ZWxTbmFwcGVkUnVsZVJlY3QgPSBzbmFwcGVkSW50UmVjdChydWxlUmVjdCk7Ci0gICAgICAg
ICAgICBkcmF3TGluZUZvckJveFNpZGUoKnBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRS
dWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7
CisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcGl4
ZWxTbmFwcGVkUnVsZVJlY3QsIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBh
bnRpYWxpYXMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA5NzllOWNmZjczYzJiZWQ5ZDA5NzM2YjhiYmM2YTE3NzBm
ZDMyNDdkLi5jODA1MWQ5MWEzZmExMmFlYWJhYWFlNmJhYzU2NGE5ZWZlNjYyMDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNzIxLDcgKzcyMSw3IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0g
ZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpLmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYg
KGhyZWYuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+
c2V0VVJMRm9yUmVjdChub2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBzbmFwcGVk
SW50UmVjdCh1cmxSZWN0KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRVUkxGb3JSZWN0
KG5vZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJl
Y3QpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDhjOThiYmE4NTQ2MzYwZmEwMmVkNWNiNWFhNzdlMjU0
YTBhZWYyOWQuLmZkMjA1MDRlYzNkNWNjZTgxYWI2MTRhYTYyZDU1YmQ3MDcxNDM0NGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc4LDEwICsx
NzgsMTAgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIGNvbXBsZXRlbHlD
bGlwcGVkT3V0ID0gdHJ1ZTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBQdXNoIGEg
Y2xpcCBpZiB3ZSBoYXZlIGEgYm9yZGVyIHJhZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0
aGUgZm9yZWdyb3VuZCBjb250ZW50IHRoYXQgZ2V0cyBwYWludGVkLgotICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2F2ZSgpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCByb3VuZGVkSW5uZXJSZWN0ID0g
RmxvYXRSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJl
Y3QsCiAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdC
b3R0b20oKSArIGJvcmRlckJvdHRvbSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBw
YWRkaW5nUmlnaHQoKSArIGJvcmRlclJpZ2h0KCksIHRydWUsIHRydWUpKTsKLSAgICAgICAgICAg
IGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHJvdW5k
ZWRJbm5lclJlY3QpOworICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZv
LmNvbnRleHQoKSwgcGFpbnRSZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAg
IHBhaW50UmVwbGFjZWQocGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAogICAgICAg
ICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkKLSAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3Rv
cmUoKTsKICAgICB9CiAgICAgICAgIAogICAgIC8vIFRoZSBzZWxlY3Rpb24gdGludCBuZXZlciBn
ZXRzIGNsaXBwZWQgYnkgYm9yZGVyLXJhZGl1cyByb3VuZGluZywgc2luY2Ugd2Ugd2FudCBpdCB0
byBydW4gcmlnaHQgdXAgdG8gdGhlIGVkZ2VzIG9mCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBS
ZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKICAgICBpZiAoZHJhd1NlbGVjdGlvblRpbnQpIHsKICAgICAgICAg
TGF5b3V0UmVjdCBzZWxlY3Rpb25QYWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsK
ICAgICAgICAgc2VsZWN0aW9uUGFpbnRpbmdSZWN0Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bGVjdGlvblBhaW50aW5nUmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25h
cHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAppbmRleCAzNzcyMGZlMzg5YzE5MzZjOGRlMjY1
ZGM2ZWM0YTFmYmNkMjA3MzNmLi42MWQwYTE3YjM4YTE5OGQyZmNkZjBlMDZkYWI0MjdlMjYyMTJk
OWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03
Niw3ICs3Niw3IEBAIHZvaWQgUmVuZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgUmVuZGVyTGF5ZXIq
IHJvb3RQYWludGluZ0xheWVyID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJl
bnQoKSA6IGxheWVyKCktPmVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKICAgICAgICAg
UmVuZGVyTGF5ZXI6OkxheWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFpbnRpbmdM
YXllciwgcGFpbnRJbmZvLnJlY3QsIFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNpemUoKSwg
MCk7CiAgICAgICAgIFJlbmRlckxheWVyOjpQYWludExheWVyRmxhZ3MgZmxhZ3MgPSBSZW5kZXJM
YXllcjo6UGFpbnRMYXllckhhdmVUcmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXll
ckFwcGxpZWRUcmFuc2Zvcm0gfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBS
ZWN0cyB8IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uOwotICAgICAg
ICBsYXllcigpLT5wYXJlbnQoKS0+cGFpbnRMYXllcihwYWludEluZm8uY29udGV4dCwgcGFpbnRp
bmdJbmZvLCBmbGFncyk7CisgICAgICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKHBh
aW50SW5mby5jb250ZXh0KCksIHBhaW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAo
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VNYXNrKQogICAgICAgICBwYWludE1hc2socGFp
bnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggYzM2NDEwZDU3MjA1MjJlMWRiOWYyNGY4MDA4
OTM2MDgwNTU5OTg0Ny4uMjc3ZGFjOGRmYTRjYzNhMzNlZWFkZDI3ZTFmMWU4MzYyYjNjNjAyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTEw
Miw5ICsxMDIsOSBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1
cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9p
ZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9s
VGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAg
ICAgICAgdXBkYXRlU2Nyb2xsYmFyUGFydHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI1Miw3ICsyNTIsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFy
dChTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxi
YXI6OnBhaW50UGFydChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFy
UGFydCBwYXJ0VHlwZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFy
OjpwYWludFBhcnQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclBh
cnQgcGFydFR5cGUsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUmVuZGVyU2Nyb2xsYmFy
UGFydCogcGFydFJlbmRlcmVyID0gbV9wYXJ0cy5nZXQocGFydFR5cGUpOwogICAgIGlmICghcGFy
dFJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmlu
ZGV4IGY2Yzg1Yzk3N2MwYjRiZmQzZWZiNjk4YWRiYmFjZGQwMDA3OTdkNDYuLmYyN2VjMDNiYmIw
OTA3ODBkNDJlMzQ3YjZjMjNhYTRkNmQ4YzA0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgUmVu
ZGVyQm94KiBvd25pbmdSZW5kZXJlcigpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludFBhcnQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyUGFydCwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQg
cGFpbnRQYXJ0KEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3Qm
KTsKIAogICAgIEludFJlY3QgYnV0dG9uUmVjdChTY3JvbGxiYXJQYXJ0KTsKICAgICBJbnRSZWN0
IHRyYWNrUmVjdChpbnQgc3RhcnRMZW5ndGgsIGludCBlbmRMZW5ndGgpOwpAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
dm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWQ3MWE4
OWIxY2NkOTg1ZDI2M2ZjMmUyYTBlNTM4Nzc4OTI1MzkwMy4uMGNiZWMwZmM5MzRmMTZlZGVmMTQ1
MGQ4NTA0NzQwNTJhN2RmMDk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAtMTU1LDIzICsxNTUsMjMgQEAgdm9pZCBSZW5kZXJT
Y3JvbGxiYXJQYXJ0OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJ
bnRSZWN0KiByZWMKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3Jv
bGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIHJlY3Qp
CiB7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0LgogICAg
IHNldExvY2F0aW9uKHJlY3QubG9jYXRpb24oKSAtIHRvTGF5b3V0U2l6ZShwYWludE9mZnNldCkp
OwogICAgIHNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0
KCkpOwogCi0gICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFz
dHlsZSgpLm9wYWNpdHkoKSkKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJs
ZWQoKSB8fCAhc3R5bGUoKS5vcGFjaXR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdl
IGRvbid0IHVzZSBSZW5kZXJMYXllcnMgZm9yIHNjcm9sbGJhciBwYXJ0cywgc28gd2UgbmVlZCB0
byBoYW5kbGUgb3BhY2l0eSBoZXJlLgogICAgIC8vIE9wYWNpdHkgZm9yIFNjcm9sbGJhckJHUGFy
dCBpcyBoYW5kbGVkIGJ5IFJlbmRlclNjcm9sbGJhclRoZW1lOjp3aWxsUGFpbnRTY3JvbGxiYXIo
KS4KICAgICBib29sIG5lZWRzVHJhbnNwYXJlbmN5TGF5ZXIgPSBtX3BhcnQgIT0gU2Nyb2xsYmFy
QkdQYXJ0ICYmIHN0eWxlKCkub3BhY2l0eSgpIDwgMTsKICAgICBpZiAobmVlZHNUcmFuc3BhcmVu
Y3lMYXllcikgewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwKHJlY3QpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoc3R5bGUoKS5vcGFjaXR5KCkpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2F2ZSgpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5bGUoKS5vcGFjaXR5
KCkpOwogICAgIH0KICAgICAKICAgICAvLyBOb3cgZG8gdGhlIHBhaW50LgpAQCAtMTg3LDggKzE4
Nyw4IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QKICAgICBwYWludChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKIAogICAgIGlmIChuZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVu
Y3lMYXllcigpOworICAgICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5k
ZXggN2E3MWZhNzM5ZjhkODUxMWM0OTRhMDA0YTQzOTMzNzJmMTM0MzFjYS4uODY1OTkxNDJhOWZj
YmFlMmM1OGU4NWIwZDBkYjE4MjdkYWQ5YWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIHBhaW50
SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlv
dXRSZWN0Jik7CisgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCiAgICAgLy8gU2Nyb2xsYmFyIHBh
cnRzIG5lZWRzIHRvIGJlIHJlbmRlcmVkIGF0IGRldmljZSBwaXhlbCBib3VuZGFyaWVzLgogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChp
c0ludGVnZXJWYWx1ZShtX21hcmdpbkJveC50b3AoKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gudG9w
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhl
bWUuY3BwCmluZGV4IDA5ZDk2NTIxOGU4NzVlZDY3NGE0YmNhMzcyZjhiOWI1ZWEyODM3OGEuLmRi
NTI4OGZkYzVlNTUyNmE0M2YwYWJlZmI5N2Q5NmNmZDRkMDg2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI1LDM1ICsx
MjUsMzUgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCit2b2lkIFJlbmRlclNj
cm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQuCi0gICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogewotICAgIGRvd25jYXN0PFJlbmRlclNj
cm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwg
c2Nyb2xsYmFyLmZyYW1lUmVjdCgpKTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNj
cm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZy
YW1lUmVjdCgpKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNj
cm9sbGJhcikucGFpbnRQYXJ0KCZjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CisgICAgZG93
bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUcmFj
a0JHUGFydCwgcmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJh
Y2tQaWVjZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8
UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVj
dCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChj
b250ZXh0LCBwYXJ0LCByZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRCdXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIGRvd25jYXN0
PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJl
Y3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQo
Y29udGV4dCwgcGFydCwgcmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNj
cm9sbGJhcikucGFpbnRQYXJ0KCZjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25j
YXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQ
YXJ0LCByZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFy
a3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmgKaW5kZXggNDdmMGY4MDMzZWIwOTRjMDRkMTk0M2FlZjY3ODQxZWY5NjQxODIw
OC4uZjdlNDE5ZDA1YTFiNDMxNDc3Y2Q1NTUyZjhjNmRjMzBkYzllOWY4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJl
Y3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Ny
b2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJy
aWRlIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1i
KHNjcm9sbGJhciwgZXZlbnQpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA0NTVmY2U4OTI5ZDA1ZjJl
YTEwMTNmNzNlN2ZlM2ViYjdkOTQ5OThlLi5iZDFhOWQ1MWQyNWIzZDg5YzQxYTA5MTAyOWE4OTM0
ZTFkZDY0NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQbwogICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5
b3V0U2l6ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNv
bnRlbnRMb2NhdGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKQEAgLTE0MSw3ICsxNDEs
NyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5U
QVRJT04pCiAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51
bShzdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2UoaW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFs
aWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1
c2VMb3dRdWFsaXR5U2NhbGluZykpOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYg
b3ZlcnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmNwcAppbmRleCBjNzBhNGQxMjAwN2E4NDI3YzI5YzI1NDYyNTdkMzVhMzA1NzMyMGE2Li40ODU1
OTVhMWI4MDY0YTYzMmY5Zjg1MzQ0ZDljZTFmOGQ2Mzk2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTc0OSw3ICs3NDksNyBAQCB2b2lkIFJlbmRlclRh
YmxlOjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcAogICAgIExheW91dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAg
ICBzdWJ0cmFjdENhcHRpb25SZWN0KHJlY3QpOwogCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlIGJsZWVkQXZvaWRhbmNlID0gZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBh
aW50SW5mby5jb250ZXh0KTsKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9p
ZGFuY2UgPSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgaWYgKCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVj
dC5sb2NhdGlvbigpLCBibGVlZEF2b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBh
aW50SW5mbywgcmVjdCwgc3R5bGUoKSwgTm9ybWFsKTsKICAgICBwYWludEJhY2tncm91bmQocGFp
bnRJbmZvLCByZWN0LCBibGVlZEF2b2lkYW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDE3ZTVhYzQ1NDBiNDczYmFlNmZhNmY5YjU3NTM2
ZTRjNDM0ZDg2NTcuLjExNWZmYzc5NzQ4NmI3OWE5ZmNjNDhjOGI3YzA4NjljNmM3Y2Q4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjAx
LDggKzEyMDEsOCBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChwYWludFJlY3Qu
bWF4WSgpICsgdGFibGUoKS0+b3V0ZXJCb3JkZXJCb3R0b20oKSA8PSBsb2NhbFJlcGFpbnRSZWN0
LnkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBpZiAoIXRhYmxlKCktPmN1cnJlbnRCb3Jk
ZXJWYWx1ZSgpIHx8IGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAg
ICBpZiAoIXRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNzQ29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZUZvckNlbGxGbG93ID0gdGhpcy0+c3R5bGVGb3JDZWxsRmxvdygpOwpAQCAtMTI0
NCw3ICsxMjQ0LDcgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVy
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAKICAgICBmb3IgKENv
bGxhcHNlZEJvcmRlciogYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7IGJvcmRlcjsgYm9y
ZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJvcmRlci0+Ym9yZGVy
VmFsdWUuaXNTYW1lSWdub3JpbmdDb2xvcigqdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkp
KQotICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIEZsb2F0
UmVjdChGbG9hdFBvaW50KGJvcmRlci0+eDEsIGJvcmRlci0+eTEpLCBGbG9hdFBvaW50KGJvcmRl
ci0+eDIsIGJvcmRlci0+eTIpKSwgYm9yZGVyLT5zaWRlLAorICAgICAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm9yZGVyLT54
MSwgYm9yZGVyLT55MSksIEZsb2F0UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55MikpLCBib3Jk
ZXItPnNpZGUsCiAgICAgICAgICAgICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBi
b3JkZXItPnN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgIH0KIH0KQEAgLTEyNzUsMTEgKzEy
NzUsMTEgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxs
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXkKICAgICAgICAgLy8gV2UgaGF2ZSB0byBj
bGlwIGhlcmUgYmVjYXVzZSB0aGUgYmFja2dyb3VuZCB3b3VsZCBwYWludAogICAgICAgICAvLyBv
biB0b3Agb2YgdGhlIGJvcmRlcnMgb3RoZXJ3aXNlLiAgVGhpcyBvbmx5IG1hdHRlcnMgZm9yIGNl
bGxzIGFuZCByb3dzLgogICAgICAgICBib29sIHNob3VsZENsaXAgPSBiYWNrZ3JvdW5kT2JqZWN0
LT5oYXNMYXllcigpICYmIChiYWNrZ3JvdW5kT2JqZWN0ID09IHRoaXMgfHwgYmFja2dyb3VuZE9i
amVjdCA9PSBwYXJlbnQoKSkgJiYgdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpOwotICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
LCBzaG91bGRDbGlwKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKHBhaW50SW5mby5jb250ZXh0KCksIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxk
Q2xpcCkgewogICAgICAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIGJvcmRlckxlZnQoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJU
b3AoKSwKICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmln
aHQoKSwgaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcGFpbnRG
aWxsTGF5ZXJzKHBhaW50SW5mbywgYywgYmdMYXllciwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50
T2Zmc2V0LCBzbmFwcGVkSW50UmVjdChmcmFtZVJlY3QoKSkuc2l6ZSgpKSwgQmFja2dyb3VuZEJs
ZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRl
eCBjOTEwYWI2ZjZhYjA2OWJhNGI2MzI1MjI0ZmVhMDAxMmM0NmY3ZTUzLi4zZTlkOGE1ZmIxY2Fi
YzkxMGQyODRkYTE1ZjNkZDcwZTRjNmFjOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50Um93R3JvdXBCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGJvb2wgYW4KICAgICByZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAg
ICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZHJhd0xpbmVGb3JC
b3hTaWRlKCpwYWludEluZm8uY29udGV4dCwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoYm9yZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsK
KyAgICBkcmF3TGluZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgc2lkZSwg
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm9yZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwg
MCwgMCwgYW50aWFsaWFzKTsKIH0KIAogaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6b2Zmc2V0TGVm
dEZvclJvd0dyb3VwQm9yZGVyKFJlbmRlclRhYmxlQ2VsbCogY2VsbCwgY29uc3QgTGF5b3V0UmVj
dCYgcm93R3JvdXBSZWN0LCB1bnNpZ25lZCByb3cpCkBAIC0xMTY5LDExICsxMTY5LDExIEBAIHZv
aWQgUmVuZGVyVGFibGVTZWN0aW9uOjpwYWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mCiB7CiAgICAgaWYgKHRhYmxlKCktPmN1cnJlbnRCb3JkZXJW
YWx1ZSgpLT5wcmVjZWRlbmNlKCkgPiBCUk9XR1JPVVApCiAgICAgICAgIHJldHVybjsKLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYm9vbCBhbnRp
YWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCk7CisgICAgYm9v
bCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCgpKTsK
ICAgICBMYXlvdXRSZWN0IHJvd0dyb3VwUmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNp
emUoKSk7CiAgICAgcm93R3JvdXBSZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQob3V0ZXJCb3JkZXJM
ZWZ0KCZzdHlsZSksIChib3JkZXJTaWRlID09IEJTUmlnaHQpID8gMCA6IG91dGVyQm9yZGVyVG9w
KCZzdHlsZSkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5k
ZXggN2EyYjk3NmNkNjk5MmJlNTJiNjAwZjYwYmRiNDA2ZjVmZTY0YzEwYy4uZGNhYzRmYTczMTZl
YzM1YjBlNjFiYzIwMGQ4MjIxZWE2MDIzZTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWUuY3BwCkBAIC0yNjcsMTIgKzI2NywxMiBAQCBib29sIFJlbmRlclRoZW1lOjpw
YWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywg
Y29ucwogICAgIC8vIElmIHBhaW50aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJlbid0IHVwZGF0
aW5nIGNvbnRyb2wgdGludHMsIHRoZW4ganVzdCBiYWlsLgogICAgIC8vIElmIHdlIGFyZSB1cGRh
dGluZyBjb250cm9sIHRpbnRzLCBqdXN0IHNjaGVkdWxlIGEgcmVwYWludCBpZiB0aGUgdGhlbWUg
c3VwcG9ydHMgdGludGluZwogICAgIC8vIGZvciB0aGF0IGNvbnRyb2wuCi0gICAgaWYgKHBhaW50
SW5mby5jb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKHBhaW50SW5m
by5jb250ZXh0KCkudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICBpZiAoY29udHJv
bFN1cHBvcnRzVGludHMoYm94KSkKICAgICAgICAgICAgIGJveC5yZXBhaW50KCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94
LnN0eWxlKCkuYXBwZWFyYW5jZSgpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgUmVuZGVyVGhl
bWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3Rh
dGVzLCBjb25zCiAgICAgY2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9u
UGFydDoKICAgICAgICAgdXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJv
bFN0YXRlcyk7Ci0gICAgICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNv
bnN0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCBkZXZpY2VQaXhl
bFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZy
YW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKKyAgICAgICAg
bV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwg
ZGV2aWNlUGl4ZWxTbmFwcGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94
LnZpZXcoKS5mcmFtZVZpZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAg
LTQxMSw3ICs0MTEsNyBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gm
IGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogCiBib29sIFJlbmRlclRo
ZW1lOjpwYWludEJvcmRlck9ubHkoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExB
VEZPUk0oSU9TKQpAQCAtNDY1LDcgKzQ2NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9y
ZGVyT25seShjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluCiAK
IGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gs
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewot
ICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChw
YWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgSW50UmVjdCBpbnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3Qo
cmVjdCk7CkBAIC0xMDUzLDggKzEwNTMsOCBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRl
clRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAg
ICAgICB0aWNrUmVnaW9uV2lkdGggPSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53
aWR0aCgpOwogICAgIH0KICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlz
dC0+b3B0aW9ucygpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Io
by5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENv
bG9yKG8uc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUg
PSBvcHRpb25zLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25F
bGVtZW50Pigqbm9kZSkpOwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVu
dCA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CkBAIC0xMDY5LDcgKzEwNjks
NyBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICAgICAgdGlja1JlY3Quc2V0WCh0
aWNrUG9zaXRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRZKHRp
Y2tQb3NpdGlvbik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aWNrUmVj
dCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwogICAg
IH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5j
cHAKaW5kZXggMTg2Yjc2MDE0OWU2YWVlNjBjMGRhY2I3NDIyZTkwNTc0Mjg3NjFiMS4uZmVmYmIy
NGI1NjQ4MjRlMzQ2MzljNTE5MDllZDNmMDZjN2QzOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC01MjYsMTYgKzUyNiwxNiBAQCBzdGF0aWMg
dm9pZCBwYWludFRvZ2dsZShjb25zdCBSZW5kZXJUaGVtZUd0ayogdGhlbWUsIEdUeXBlIHdpZGdl
dFR5cGUsIGNvbnN0IFJlbgogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0
LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCiAgICAgaWYgKHdpZGdldFR5
cGUgPT0gR1RLX1RZUEVfQ0hFQ0tfQlVUVE9OKQotICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNv
bnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54
KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtf
cmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KTsKICAgICBlbHNlCi0gICAgICAgIGd0a19yZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCBy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX29wdGlvbihj
b250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAo
dGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmplY3QpKSB7CiAgICAgICAgIEludFJlY3QgaW5kaWNh
dG9yUmVjdChyZWN0KTsKICAgICAgICAgZ2ludCBpbmRpY2F0b3JTcGFjaW5nOwogICAgICAgICBn
dGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUoY29udGV4dCwgImluZGljYXRvci1zcGFjaW5nIiwg
JmluZGljYXRvclNwYWNpbmcsIG51bGxwdHIpOwogICAgICAgICBpbmRpY2F0b3JSZWN0LmluZmxh
dGUoaW5kaWNhdG9yU3BhY2luZyk7Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwg
cGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0
LngoKSwgaW5kaWNhdG9yUmVjdC55KCksCisgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4
dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaW5kaWNhdG9y
UmVjdC54KCksIGluZGljYXRvclJlY3QueSgpLAogICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC53
aWR0aCgpLCBpbmRpY2F0b3JSZWN0LmhlaWdodCgpKTsKICAgICB9CiAKQEAgLTU5NCw4ICs1OTQs
OCBAQCBzdGF0aWMgdm9pZCByZW5kZXJCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHls
ZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbgogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9h
ZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX0RFRkFVTFQpOwogICAgIH0KIAotICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9u
UmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1l
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0
dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJl
Y3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0
dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7Cisg
ICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJl
Y3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9j
dXNlZChyZW5kZXJPYmplY3QpKSB7CiAgICAgICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7
CkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGljIHZvaWQgcmVuZGVyQnV0dG9uKFJlbmRlclRoZW1l
KiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW4KICAgICAgICAgICAg
IGJ1dHRvblJlY3QubW92ZShjaGlsZERpc3BsYWNlbWVudFgsIGNoaWxkRGlzcGxhY2VtZW50WSk7
CiAgICAgICAgIH0KIAotICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRv
blJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9u
UmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKICAgICB9CiB9CiBib29sIFJlbmRl
clRoZW1lR3RrOjpwYWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC03NDQs
NyArNzQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnQKICAgICAvLyBGSVhNRTogYWRvcHQg
c3VicGl4ZWwgdGhlbWVzLgogICAgIEludFJlY3QgcmVjdCA9IEludFJlY3Qocik7CiAKLSAgICBj
YWlyb190KiBjYWlyb0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IHN0YXRpY19jYXN0PEd0a1RleHREaXJlY3Rpb24+KGd0a1RleHREaXJlY3Rpb24ocmVuZGVy
T2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpKTsKIAogICAgIC8vIFBhaW50IHRoZSBidXR0b24u
CkBAIC04ODAsOCArODgwLDggQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0RmllbGQo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW4KICAgICAgICAgZmxh
Z3MgfD0gR1RLX1NUQVRFX0ZMQUdfRk9DVVNFRDsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRf
c3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsKIAotICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9m
cmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
LCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAg
ICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVjdCkgJiYgaXNFbmFibGVkKHJlbmRlck9iamVjdCkp
IHsKICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJpb3JGb2N1czsKQEAgLTg5MCw3ICs4OTAsNyBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlck9iamVjdCwgY29uc3QgUGFpbgogICAgICAgICBpZiAoIWludGVyaW9yRm9jdXMpIHsKICAg
ICAgICAgICAgIEludFJlY3QgZm9jdXNSZWN0KHJlY3QpOwogICAgICAgICAgICAgZm9jdXNSZWN0
LmluZmxhdGUoZm9jdXNXaWR0aCArIGZvY3VzUGFkKTsKLSAgICAgICAgICAgIGd0a19yZW5kZXJf
Zm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigp
LCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNS
ZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgZm9jdXNSZWN0LngoKSwg
Zm9jdXNSZWN0LnkoKSwgZm9jdXNSZWN0LndpZHRoKCksIGZvY3VzUmVjdC5oZWlnaHQoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTkwNCw3ICs5MDQsNyBAQCBib29sIFJlbmRlclRoZW1lR3Rr
OjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjbwogICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBpLCByKTsKIH0KIAotc3RhdGljIHZv
aWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhi
dWYqIGljb24sIGNvbnN0IEludFJlY3QmIGljb25SZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHZGtQ
aXhidWYoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNv
bnN0IEludFJlY3QmIGljb25SZWN0KQogewogICAgIEludFNpemUgaWNvblNpemUoZ2RrX3BpeGJ1
Zl9nZXRfd2lkdGgoaWNvbiksIGdka19waXhidWZfZ2V0X2hlaWdodChpY29uKSk7CiAgICAgR1Jl
ZlB0cjxHZGtQaXhidWY+IHNjYWxlZEljb247CkBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIHZv
aWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhi
dWYqIGljb24sIGNvbnMKICAgICAgICAgaWNvbiA9IHNjYWxlZEljb24uZ2V0KCk7CiAgICAgfQog
Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAg
ICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fp
cm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJvX3NldF9zb3VyY2VfcGl4YnVmKGNyLCBpY29uLCBp
Y29uUmVjdC54KCksIGljb25SZWN0LnkoKSk7CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpAQCAtMTAw
OCw3ICsxMDA4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3Vs
dHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmIHIKICAgICAgICAgZ3RrVGV4dERp
cmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSksCiAgICAgICAgIGd0a0lj
b25TdGF0ZSh0aGlzLCByZW5kZXJPYmplY3QpLAogICAgICAgICBnZXRJY29uU2l6ZUZvclBpeGVs
U2l6ZShyZWN0LmhlaWdodCgpKSk7Ci0gICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRl
eHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsKKyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8u
Y29udGV4dCgpLCBpY29uLmdldCgpLCBpY29uUmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZQogICAgICAgICBn
dGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAg
ICAgZ3RrSWNvblN0YXRlKHRoaXMsIHJlbmRlck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXpl
Rm9yUGl4ZWxTaXplKHJlY3QuaGVpZ2h0KCkpKTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludElu
Zm8uY29udGV4dCwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBh
aW50SW5mby5jb250ZXh0KCksIGljb24uZ2V0KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50
Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiB7
CiAgICAgLy8gVGhlIG90aGVyIHBhaW50IG1ldGhvZHMgZG9uJ3QgbmVlZCB0byBjaGVjayB3aGV0
aGVyIHBhaW50aW5nIGlzIGRpc2FibGVkIGJlY2F1c2UgUmVuZGVyVGhlbWUgYWxyZWFkeSBjaGVj
a3MgaXQKICAgICAvLyBiZWZvcmUgY2FsbGluZyB0aGVtLCBidXQgcGFpbnRDYXBzTG9ja0luZGlj
YXRvcigpIGlzIGNhbGxlZCBieSBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgd2hpY2ggZG9l
c24ndCBjaGVjayBpdC4KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaW50IGljb25TaXplID0gc3RkOjptaW4ocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKQEAgLTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJPYmplY3QsIGNvCiAgICAgICAgIHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gaWNvblNpemUs
CiAgICAgICAgIHJlY3QueSgpICsgKHJlY3QuaGVpZ2h0KCkgLSBpY29uU2l6ZSkgLyAyLAogICAg
ICAgICBpY29uU2l6ZSwgaWNvblNpemUpOwotICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5j
b250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJ
bmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0xMTAyLDE1ICsxMTAyLDE1IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2xp
ZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAg
aWYgKCFpc0VuYWJsZWQocmVuZGVyT2JqZWN0KSkKICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRf
c2V0X3N0YXRlKGNvbnRleHQsIEdUS19TVEFURV9GTEFHX0lOU0VOU0lUSVZFKTsKIAotICAgIGd0
a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBw
YWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVj
dC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFt
ZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBy
ZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBp
ZiAoaXNGb2N1c2VkKHJlbmRlck9iamVjdCkpIHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBm
b2N1c1BhZDsKICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsICJm
b2N1cy1saW5lLXdpZHRoIiwgJmZvY3VzV2lkdGgsICJmb2N1cy1wYWRkaW5nIiwgJmZvY3VzUGFk
LCBudWxscHRyKTsKICAgICAgICAgSW50UmVjdCBmb2N1c1JlY3QocmVjdCk7CiAgICAgICAgIGZv
Y3VzUmVjdC5pbmZsYXRlKGZvY3VzV2lkdGggKyBmb2N1c1BhZCk7Ci0gICAgICAgIGd0a19yZW5k
ZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9j
dXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBm
b2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAg
ICB9CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTEzOCw3
ICsxMTM4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICAgICAgZmxhZ3MgfD0gR1RL
X1NUQVRFX0ZMQUdfQUNUSVZFOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250
ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRl
cl9zbGlkZXIoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAg
ICBndGtfcmVuZGVyX3NsaWRlcihjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSwKICAgICAgICAgcGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RL
X09SSUVOVEFUSU9OX0hPUklaT05UQUwgOiBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogCiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKQEAgLTExNzQsOCArMTE3NCw4
IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRf
Y2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1RST1VHSCk7CiAKLSAgICBndGtfcmVuZGVy
X2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
Ci0gICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCBy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4
dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCks
IHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
ck9iamVjdCwgY29uc3QgUGEKICAgICBwcm9ncmVzc1JlY3QgPSBSZW5kZXJUaGVtZUd0azo6Y2Fs
Y3VsYXRlUHJvZ3Jlc3NSZWN0KHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NSZWN0KTsKIAogICAgIGlm
ICghcHJvZ3Jlc3NSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgZ3RrX3JlbmRlcl9hY3Rpdml0eShj
b250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dy
ZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9n
cmVzc1JlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQs
IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVj
dC54KCksIHByb2dyZXNzUmVjdC55KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1Jl
Y3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjU2LDggKzEyNTYsOCBAQCBzdGF0aWMgdm9pZCBwYWlu
dFNwaW5BcnJvd0J1dHRvbihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29u
dGV4dCwgYwogICAgIGJ1dHRvblJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyAyKTsKICAg
ICBndGtfc3R5bGVfY29udGV4dF9zZXRfanVuY3Rpb25fc2lkZXMoY29udGV4dCwgc3RhdGljX2Nh
c3Q8R3RrSnVuY3Rpb25TaWRlcz4oanVuY3Rpb24pKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dy
b3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCks
IGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0
b25SZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRv
blJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRv
blJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFt
ZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBi
dXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9u
UmVjdC5oZWlnaHQoKSk7CiAKICAgICAvLyBQYWludCBhcnJvdyBjZW50ZXJlZCBpbnNpZGUgYnV0
dG9uLgogICAgIC8vIFRoaXMgY29kZSBpcyBiYXNlZCBvbiBndGtzcGluYnV0dG9uLmMgY29kZS4K
QEAgLTEyODMsNyArMTI4Myw3IEBAIHN0YXRpYyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJl
bmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgZ2ludCBo
ZWlnaHQgPSAod2lkdGggKyAxKSAvIDI7CiAKICAgICBhcnJvd1JlY3QubW92ZSgoYXJyb3dSZWN0
LndpZHRoKCkgLSB3aWR0aCkgLyAyLCAoYXJyb3dSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDIp
OwotICAgIGd0a19yZW5kZXJfYXJyb3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCBhbmdsZSwgYXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwg
d2lkdGgpOworICAgIGd0a19yZW5kZXJfYXJyb3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYW5nbGUsIGFycm93UmVjdC54KCksIGFycm93UmVj
dC55KCksIHdpZHRoKTsKIAogICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7
CiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRnVs
bFNjcmVlblN0eWxlU2hlZXQoKQogfQogI2VuZGlmCiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVkaWFCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgY2hhciogc3ltYm9s
aWNJY29uTmFtZSwgY29uc3QgY2hhciogZmFsbGJhY2tTdG9ja0ljb25OYW1lKQorYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9i
amVjdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBjb25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5h
bWUpCiB7CiAgICAgSW50UmVjdCBpY29uUmVjdCgKICAgICAgICAgcmVjdC54KCkgKyAocmVjdC53
aWR0aCgpIC0gbV9tZWRpYUljb25TaXplKSAvIDIsCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBib29s
IFJlbmRlclRoZW1lR3RrOjpoYXNPd25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoQ29udHJvbFBh
cnQgcGFydCkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUZ1bGxzY3Jl
ZW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBwYWludE1l
ZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsICJ2aWV3LWZ1
bGxzY3JlZW4tc3ltYm9saWMiLCBHVEtfU1RPQ0tfRlVMTFNDUkVFTik7CisgICAgcmV0dXJuIHBh
aW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCAi
dmlldy1mdWxsc2NyZWVuLXN5bWJvbGljIiwgR1RLX1NUT0NLX0ZVTExTQ1JFRU4pOwogfQogCiBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCkBAIC0xNDQ2LDcgKzE0NDYsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWlu
dE1lZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIG11dGVkID0gbWVkaWFFbGVtZW50LT5t
dXRlZCgpOwotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJ
bmZvLmNvbnRleHQsIHJlY3QsCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2Jq
ZWN0LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LAogICAgICAgICBtdXRlZCA/ICJhdWRpby12
b2x1bWUtbXV0ZWQtc3ltYm9saWMiIDogImF1ZGlvLXZvbHVtZS1oaWdoLXN5bWJvbGljIiwKICAg
ICAgICAgbXV0ZWQgPyAiYXVkaW8tdm9sdW1lLW11dGVkIiA6ICJhdWRpby12b2x1bWUtaGlnaCIp
OwogfQpAQCAtMTQ2MSwxOSArMTQ2MSwxOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1l
ZGlhUGxheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9vbCBzaG93UGxheUJ1dHRvbiA9IG5vZGVIYXNDbGFz
cyhub2RlLCAicGF1c2VkIik7CiAKLSAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJP
YmplY3QsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LAorICAgIHJldHVybiBwYWludE1lZGlhQnV0
dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwKICAgICAgICAgc2hv
d1BsYXlCdXR0b24gPyAibWVkaWEtcGxheWJhY2stc3RhcnQtc3ltYm9saWMiIDogIm1lZGlhLXBs
YXliYWNrLXBhdXNlLXN5bWJvbGljIiwKICAgICAgICAgc2hvd1BsYXlCdXR0b24gPyBHVEtfU1RP
Q0tfTUVESUFfUExBWSA6IEdUS19TVE9DS19NRURJQV9QQVVTRSk7CiB9CiAKIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludElu
Zm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNlZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RP
Q0tfTUVESUFfUkVXSU5EKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmpl
Y3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJtZWRpYS1zZWVrLWJhY2t3YXJkLXN5bWJv
bGljIiwgR1RLX1NUT0NLX01FRElBX1JFV0lORCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9i
amVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29u
dGV4dCwgcmVjdCwgIm1lZGlhLXNlZWstZm9yd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJ
QV9GT1JXQVJEKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBh
aW50SW5mby5jb250ZXh0KCksIHJlY3QsICJtZWRpYS1zZWVrLWZvcndhcmQtc3ltYm9saWMiLCBH
VEtfU1RPQ0tfTUVESUFfRk9SV0FSRCk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBA
IC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZQogICAgICAgICBpY29u
ID0gZ2V0U3RvY2tTeW1ib2xpY0ljb25Gb3JXaWRnZXRUeXBlKEdUS19UWVBFX0NPTlRBSU5FUiwg
InVzZXItaW52aXNpYmxlLXN5bWJvbGljIiwgR1RLX1NUT0NLX0pVU1RJRllfRklMTCwKICAgICAg
ICAgICAgIGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkp
LCBndGtJY29uU3RhdGUodGhpcywgcmVuZGVyT2JqZWN0KSwgaWNvblJlY3Qud2lkdGgoKSk7CiAg
ICAgfQotICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBp
Y29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5n
ZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC0xNTA3LDkg
KzE1MDcsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZgogICAgIGlmICghbWVkaWFFbGVtZW50
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dDsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5z
ZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gbWVk
aWFFbGVtZW50LT5kdXJhdGlvbigpOwogICAgIGZsb2F0IHRvdGFsVHJhY2tXaWR0aCA9IHIud2lk
dGgoKTsKQEAgLTE1MjcsMTcgKzE1MjcsMTcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmYKICAg
ICAgICAgcmFuZ2VSZWN0LnNldFdpZHRoKGxlbmd0aFJhdGlvICogdG90YWxUcmFja1dpZHRoKTsK
ICAgICAgICAgaWYgKGluZGV4KQogICAgICAgICAgICAgcmFuZ2VSZWN0Lm1vdmUoc3RhcnRSYXRp
byAqIHRvdGFsVHJhY2tXaWR0aCwgMCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUp
KSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwogICAgIH0KIAotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUo
KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVk
aWFTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IG8u
c3R5bGUoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qociwg
Ym9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApAQCAtMTU1Niw5ICsxNTU2LDkgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAg
ICBpZiAoIXZvbHVtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgY29udGV4dC5zYXZlKCk7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBpbnQgcmVjdEhlaWdo
dCA9IHJlY3QuaGVpZ2h0KCk7CiAgICAgZmxvYXQgdHJhY2tIZWlnaHQgPSByZWN0SGVpZ2h0ICog
dm9sdW1lOwpAQCAtMTU2Nyw5ICsxNTY3LDkgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAg
ICB2b2x1bWVSZWN0Lm1vdmUoMCwgcmVjdEhlaWdodCAtIHRyYWNrSGVpZ2h0KTsKICAgICB2b2x1
bWVSZWN0LnNldEhlaWdodChjZWlsKHRyYWNrSGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0LT5maWxs
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21T
dHlsZShzdHlsZSkpLAorICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3Qodm9sdW1lUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNw
YWNlKCkpOwotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsK
IAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmgKaW5kZXggNGFjZDBhNmU0ZDUzZGMzOTQ0NDI5YWI4MDUzZTFiMTJmYjU1MWU1OC4u
MWI5YzBiMzM4YmQyNmJmZWQxZDA5NjdhNjdjNDkwODkxOTY5MmVmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgflJlbmRlclRoZW1lSU9TKCkgeyB9CiAKICAgICBjb25zdCBDb2xvciYg
c2hhZG93Q29sb3IoKSBjb25zdDsKLSAgICBGbG9hdFJlY3QgYWRkUm91bmRlZEJvcmRlckNsaXAo
Y29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
KTsKKyAgICBGbG9hdFJlY3QgYWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwg
Q29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCBlYzcyYWUzMzlhNjJlN2Rk
OTUwMjA3MjlhMWRiMmRmZjQxMDQzNzBmLi43MDQ3ZjNkNDNiZDFmZjZkNjI1M2I1MzIxNWZjOGFi
ZThkYWMwZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CkBAIC0zMjQsNyArMzI0LDcgQEAgY29uc3QgQ29sb3ImIFJlbmRlclRoZW1lSU9TOjpzaGFkb3dD
b2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi1GbG9hdFJlY3QgUmVuZGVyVGhl
bWVJT1M6OmFkZFJvdW5kZWRCb3JkZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCitGbG9hdFJlY3QgUmVu
ZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRCb3JkZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
Ly8gVG8gZml4IGlubmVyIGJvcmRlciBibGVlZGluZyBpc3N1ZXMgPHJkYXI6Ly9wcm9ibGVtLzk4
MTI1MDc+LCB3ZSBjbGlwIHRvIHRoZSBvdXRlciBib3JkZXIgYW5kIGFzc2VydCB0aGF0CiAgICAg
Ly8gdGhlIGJvcmRlciBpcyBvcGFxdWUgb3IgdHJhbnNwYXJlbnQsIHVubGVzcyB3ZSdyZSBjaGVj
a2VkIGJlY2F1c2UgY2hlY2tlZCByYWRpby9jaGVja2JveGVzIHNob3cgbm8gYmxlZWRpbmcuCkBA
IC0zMzIsOSArMzMyLDkgQEAgRmxvYXRSZWN0IFJlbmRlclRoZW1lSU9TOjphZGRSb3VuZGVkQm9y
ZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3MKICAgICBSb3VuZGVkUmVj
dCBib3JkZXIgPSBpc0NoZWNrZWQoYm94KSA/IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZv
cihyZWN0KSA6IHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCk7CiAKICAgICBpZiAoYm9y
ZGVyLmlzUm91bmRlZCgpKQotICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChib3JkZXIpKTsKKyAgICAgICAgY29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChib3JkZXIpKTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPmNsaXAo
Ym9yZGVyLnJlY3QoKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChib3JkZXIucmVjdCgpKTsKIAog
ICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewogICAgICAgICBBU1NFUlQoc3R5bGUudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLmFscGhhKCkgJSAyNTUgPT0g
MCk7CkBAIC0zNjcsMTMgKzM2NywxMyBAQCBzdGF0aWMgQ0dQb2ludCBzaG9ydGVuZWQoQ0dQb2lu
dCBzdGFydCwgQ0dQb2ludCBlbmQsIGZsb2F0IHdpZHRoKQogCiBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0
IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAg
IEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29u
dGV4dCwgcmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBh
aW50SW5mby5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRl
ckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAogICAgIGZsb2F0IHdpZHRo
ID0gY2xpcC53aWR0aCgpOwogICAgIGZsb2F0IGhlaWdodCA9IGNsaXAuaGVpZ2h0KCk7CiAKLSAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewogICAgICAgICBk
cmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29uY2F2ZUdyYWRp
ZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSks
IExpbmVhckludGVycG9sYXRpb24pOwogCkBAIC0zOTgsMTUgKzM5OCwxNSBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBi
b3gsIGNvbnN0IFBhaQogICAgICAgICAgICAgc2hvcnRlbmVkKGxpbmVbMl0sIGxpbmVbMV0sIGxp
bmVXaWR0aCAvIDQuMGYpCiAgICAgICAgIH07CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNr
bmVzcyhsaW5lV2lkdGgpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuN2YpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0pvaW5lZExpbmVzKHNoYWRvdywgMywg
dHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJh
d0pvaW5lZExpbmVzKHNoYWRvdywgMywgdHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7CiAKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdGQ6Om1pbihjbGlwLndp
ZHRoKCksIGNsaXAuaGVpZ2h0KCkpICogdGhpY2tuZXNzUmF0aW8pOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8g
MjU1LjBmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQo
KSkgKiB0aGlja25lc3NSYXRpbyk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBmKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdKb2luZWRMaW5l
cyhsaW5lLCAzLCB0cnVlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVk
TGluZXMobGluZSwgMywgdHJ1ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgRmxvYXRQb2ludCBi
b3R0b21DZW50ZXIoY2xpcC54KCkgKyBjbGlwLndpZHRoKCkgLyAyLjBmLCBjbGlwLm1heFkoKSk7
CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShT
aGFkZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlw
Lm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwpAQCAtNDUwLDEwICs0NTAsMTAgQEAgdm9p
ZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVy
U3R5bGUmIHN0eWxlLCBFbGVtZW4KIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0Rl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9
IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgp
KTsKKyAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJ
bmZvLmNvbnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChp
c0NoZWNrZWQoYm94KSkgewogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdy
YWRpZW50V2l0aE5hbWUoQ29uY2F2ZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBv
aW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwogCkBAIC00
NjUsMTAgKzQ2NSwxMCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SQogICAgICAgICBjbGlwLmlu
ZmxhdGVYKC1jbGlwLndpZHRoKCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAu
aW5mbGF0ZVkoLWNsaXAuaGVpZ2h0KCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdSYWlzZWRFbGxpcHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgc2hhZG93Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAogICAgICAgICBGbG9hdFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIu
MGYsIGNsaXAuaGVpZ2h0KCkgLyAyLjBmKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRp
dXMsIHJhZGl1cykpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykp
OwogICAgIH0KICAgICBGbG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lk
dGgoKSAvIDIuMCwgY2xpcC5tYXhZKCkpOwogICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4
dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9h
dFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwpAQCAt
NDgxLDE1ICs0ODEsMTUgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRUZXh0RmllbGREZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGEKICAgICBSZW5kZXJTdHls
ZSYgc3R5bGUgPSBib3guc3R5bGUoKTsKICAgICBGbG9hdFBvaW50IHBvaW50KHJlY3QueCgpICsg
c3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHJlY3QueSgpICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgo
KSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KHN0eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdChyZWN0KSkucGl4ZWxTbmFw
cGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhib3guZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0
Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KHJlY3QpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVj
dEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAg
IC8vIFRoaXMgZ3JhZGllbnQgZ2V0cyBkcmF3biBibGFjayB3aGVuIHByaW50aW5nLgogICAgIC8v
IERvIG5vdCBkcmF3IHRoZSBncmFkaWVudCBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRvcCBib3Jk
ZXIuCiAgICAgYm9vbCB0b3BCb3JkZXJJc0ludmlzaWJsZSA9ICFzdHlsZS5oYXNCb3JkZXIoKSB8
fCAhc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSB8fCBzdHlsZS5ib3JkZXJUb3BJc1RyYW5zcGFyZW50
KCk7CiAgICAgaWYgKCFib3gudmlldygpLnByaW50aW5nKCkgJiYgIXRvcEJvcmRlcklzSW52aXNp
YmxlKQotICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIGdyYWRpZW50V2l0aE5hbWUoSW5zZXRHcmFkaWVudCksIHBvaW50LCBGbG9h
dFBvaW50KENHUG9pbnRNYWtlKHBvaW50LngoKSwgcG9pbnQueSgpICsgMy4wZikpLCBMaW5lYXJJ
bnRlcnBvbGF0aW9uKTsKKyAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQocGFpbnRJbmZvLmNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgZ3JhZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwg
cG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBm
KSksIExpbmVhckludGVycG9sYXRpb24pOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjE4
LDcgKzYxOCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICBSZW5kZXJTdHlsZSYgc3R5
bGUgPSBib3guc3R5bGUoKTsKICAgICBmbG9hdCBib3JkZXJUb3BXaWR0aCA9IHN0eWxlLmJvcmRl
clRvcFdpZHRoKCk7CiAgICAgRmxvYXRSZWN0IGNsaXAocmVjdC54KCkgKyBzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpLCByZWN0LndpZHRo
KCkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJCb3R0
b21XaWR0aCgpKTsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogCiAgICAgZmxvYXQgYWRqdXN0TGVm
dCA9IDAuNTsKICAgICBmbG9hdCBhZGp1c3RSaWdodCA9IDAuNTsKQEAgLTYyOSw5ICs2MjksOSBA
QCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgewogICAgICAgICBGbG9hdFJlY3QgdGl0bGVD
bGlwKGNsaXAueCgpIC0gYWRqdXN0TGVmdCwgY2xpcC55KCkgLSBhZGp1c3RUb3AsIGNsaXAud2lk
dGgoKSAtIE1lbnVMaXN0QnV0dG9uUGFkZGluZ1JpZ2h0ICsgYWRqdXN0TGVmdCwgY2xpcC5oZWln
aHQoKSArIGFkanVzdFRvcCArIGFkanVzdEJvdHRvbSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QodGl0bGVDbGlwLAorICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KHRpdGxlQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSh2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9y
ZGVyVG9wV2lkdGgoKSksIEZsb2F0U2l6ZSgwLCAwKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSh2
YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVj
dC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHls
ZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5
bGUuYm9yZGVyQm90dG9tV2lkdGgoKSksIEZsb2F0U2l6ZSgwLCAwKSkpOwogCkBAIC02NDMsMTkg
KzY0MywxOSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAKICAgICBmbG9hdCBzZXBhcmF0b3Ig
PSBjbGlwLm1heFgoKSAtIE1lbnVMaXN0QnV0dG9uUGFkZGluZ1JpZ2h0OwogCi0gICAgYm94LmRy
YXdMaW5lRm9yQm94U2lkZSgqcGFpbnRJbmZvLmNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50
KHNlcGFyYXRvciAtIGJvcmRlclRvcFdpZHRoLCBjbGlwLnkoKSksIEZsb2F0UG9pbnQoc2VwYXJh
dG9yLCBjbGlwLm1heFkoKSkpLCBCU1JpZ2h0LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0eWxlLmJvcmRlclRvcFN0eWxlKCksIDAsIDAp
OworICAgIGJveC5kcmF3TGluZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0gYm9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxv
YXRQb2ludChzZXBhcmF0b3IsIGNsaXAubWF4WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9w
U3R5bGUoKSwgMCwgMCk7CiAKICAgICBGbG9hdFJlY3QgYnV0dG9uQ2xpcChzZXBhcmF0b3IgLSBh
ZGp1c3RUb3AsIGNsaXAueSgpIC0gYWRqdXN0VG9wLCBNZW51TGlzdEJ1dHRvblBhZGRpbmdSaWdo
dCArIGFkanVzdFRvcCArIGFkanVzdFJpZ2h0LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsg
YWRqdXN0Qm90dG9tKTsKIAogICAgIC8vIE5vdyBwYWludCB0aGUgYnV0dG9uIHBvcnRpb24uCiAg
ICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChidXR0b25DbGlwLAorICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNs
aXAsCiAgICAgICAgICAgICBGbG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0
aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBz
dHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJp
Z2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lk
dGgoKSksCiAgICAgICAgICAgICBGbG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxl
bmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgo
KSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9y
ZGVyQm90dG9tV2lkdGgoKSkpKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJl
Y3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLmZpbGxSZWN0KGJ1dHRvbkNsaXAsIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAg
ICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoaXNGb2N1c2Vk
KGJveCkgJiYgIWlzUmVhZE9ubHlDb250cm9sKGJveCkgPyBDb25jYXZlR3JhZGllbnQgOiBDb252
ZXhHcmFkaWVudCksIGJ1dHRvbkNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChidXR0b25DbGlw
LngoKSwgYnV0dG9uQ2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICB9CkBA
IC02NzAsNyArNjcwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBGbG9hdFJl
Y3QgZWxsaXBzZShidXR0b25DbGlwLngoKSArIChidXR0b25DbGlwLndpZHRoKCkgLSBjb3VudCAq
IChzaXplICsgcGFkZGluZykgKyBwYWRkaW5nKSAvIDIuMCwgYnV0dG9uQ2xpcC5tYXhZKCkgLSAx
MC4wLCBzaXplLCBzaXplKTsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBzZShl
bGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAuMGYsIDAu
MGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgICAgICBlbGxpcHNlLm1vdmUoc2l6ZSArIHBhZGRpbmcs
IDApOwogICAgICAgICB9CiAgICAgfSAgZWxzZSB7CkBAIC02ODksMTMgKzY4OSwxMyBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIHNoYWRvd1syXSA9IEZsb2F0UG9pbnQoYXJyb3db
Ml0ueCgpLCBhcnJvd1syXS55KCkgKyAxLjBmKTsKIAogICAgICAgICBmbG9hdCBvcGFjaXR5ID0g
aXNSZWFkT25seUNvbnRyb2woYm94KSA/IDAuMiA6IDAuNTsKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBzaGFk
b3csIHRydWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CiAKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93LCB0cnVlKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6d2hp
dGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdDb252ZXhQb2x5Z29uKDMsIGFycm93LCB0cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC03NTksMTMgKzc1OSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRl
clRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mCiAKICAgICAv
LyBEcmF3IHRoZSB0cmFjayBncmFkaWVudC4KICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAK
ICAgICAgICAgSW50U2l6ZSBjb3JuZXJTaXplKGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwog
ICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyKHRyYWNrQ2xpcCwgY29ybmVyU2l6
ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoaW5uZXJCb3JkZXIpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChpbm5lckJvcmRlcik7CiAKLSAgICAgICAgQ0dD
b250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKKyAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAgIElPU0dyYWRpZW50UmVmIGdyYWRpZW50ID0gcmVh
ZG9ubHkgPyBncmFkaWVudFdpdGhOYW1lKFJlYWRvbmx5U2xpZGVyVHJhY2tHcmFkaWVudCkgOiBn
cmFkaWVudFdpdGhOYW1lKFNsaWRlclRyYWNrR3JhZGllbnQpOwogICAgICAgICBpZiAoaXNIb3Jp
em9udGFsKQogICAgICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVu
dCwgdHJhY2tDbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQodHJhY2tDbGlwLngoKSwgdHJhY2tD
bGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwpAQCAtNzc1LDEzICs3NzUsMTMgQEAg
Ym9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgY29uc3QgUGFpbnRJbmZvJgogCiAgICAgLy8gRHJhdyB0aGUgdHJhY2sgYm9yZGVyLgog
ICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KTsKICAgICAgICAgaWYgKHJlYWRvbmx5KQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDE3OCwgMTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MTc4LCAxNzgsIDE3OCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoNzYsIDc2LCA3
NiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihDb2xvcig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAKICAgICAgICAgUmV0YWluUHRyPENHTXV0YWJsZVBhdGhSZWY+IHJvdW5kZWRSZWN0UGF0aCA9
IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKICAgICAgICAgQ0dQYXRoQWRkUm91bmRl
ZFJlY3Qocm91bmRlZFJlY3RQYXRoLmdldCgpLCAwLCB0cmFja0NsaXAsIGNvcm5lcldpZHRoLCBj
b3JuZXJIZWlnaHQpOwpAQCAtODEyLDEwICs4MTIsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6
YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVGh1bWJEZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9y
ZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgRmxvYXRS
ZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCks
IHJlY3QpOwogCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBGbG9hdFBvaW50IGJvdHRvbUNl
bnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAubWF4WSgpKTsKICAgICBp
ZiAoaXNQcmVzc2VkKGJveCkpCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwg
Z3JhZGllbnRXaXRoTmFtZShTbGlkZXJUaHVtYk9wYXF1ZVByZXNzZWRHcmFkaWVudCksIGNsaXAu
bG9jYXRpb24oKSwgRmxvYXRQb2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRl
cnBvbGF0aW9uKTsKQEAgLTg0NSwxOCArODQ1LDE4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJ
CiAgICAgY29uc3QgaW50IHByb2dyZXNzQmFySGVpZ2h0ID0gOTsKICAgICBjb25zdCBmbG9hdCB2
ZXJ0aWNhbE9mZnNldCA9IChyZWN0LmhlaWdodCgpIC0gcHJvZ3Jlc3NCYXJIZWlnaHQpIC8gMi4w
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8u
Y29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50
SW5mby5jb250ZXh0KCkpOwogICAgIGlmIChyZWN0LndpZHRoKCkgPCAxMCB8fCByZWN0LmhlaWdo
dCgpIDwgOSkgewogICAgICAgICAvLyBUaGUgcmVjdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0YW5k
YXJkIHByb2dyZXNzIGJhci4gV2UgY2xpcCB0byB0aGUgZWxlbWVudCdzIHJlY3QgdG8gYXZvaWQK
ICAgICAgICAgLy8gbGVha2luZyBwaXhlbHMgb3V0c2lkZSB0aGUgcmVwYWludCByZWN0LgotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChyZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwKHJlY3QpOwogICAgIH0KIAogICAgIC8vIDEpIERyYXcgdGhlIHByb2dyZXNz
IGJhciB0cmFjay4KICAgICAvLyAxLjEpIERyYXcgdGhlIHdoaXRlIGJhY2tncm91bmQgd2l0aCBn
cmV5IGdyYWRpZW50IGJvcmRlci4KLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dDsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMC42OCk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgY29udGV4dC5zZXRTdHJv
a2VUaGlja25lc3MoMC42OCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55
KCkgKyB2ZXJ0aWNhbE9mZnNldDsKICAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmlu
Z1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkpOwpAQCAtODY0LDI4ICs4NjQsMjggQEAgYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEkKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUs
IENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQt
PnNldFN0cm9rZUdyYWRpZW50KHN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAg
IGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwo
KSk7CiAKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSByZW5kZXJlci5zdHlsZSgpLmNvbG9y
U3BhY2UoKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSks
IGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAy
NTUpLCBjb2xvclNwYWNlKTsKIAogICAgIFBhdGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0
cmFja1JlY3QocmVjdC54KCkgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4y
NSwgcmVjdC53aWR0aCgpIC0gMC41LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CiAgICAgRmxv
YXRTaXplIHJvdW5kZWRDb3JuZXJSYWRpdXMoNSwgNCk7CiAgICAgdHJhY2tQYXRoLmFkZFJvdW5k
ZWRSZWN0KHRyYWNrUmVjdCwgcm91bmRlZENvcm5lclJhZGl1cyk7Ci0gICAgY29udGV4dC0+ZHJh
d1BhdGgodHJhY2tQYXRoKTsKKyAgICBjb250ZXh0LmRyYXdQYXRoKHRyYWNrUGF0aCk7CiAKICAg
ICAvLyAxLjIpIERyYXcgdG9wIGdyYWRpZW50IG9uIHRoZSB1cHBlciBoYWxmLiBJdCBpcyBzdXBw
b3NlZCB0byBvdmVybGF5IHRoZSBmaWxsIGZyb20gdGhlIGJhY2tncm91bmQgYW5kIGRhcmtlciB0
aGUgc3Ryb2tlZCBwYXRoLgogICAgIEZsb2F0UmVjdCBib3JkZXIocmVjdC54KCksIHJlY3QueSgp
ICsgdmVydGljYWxPZmZzZXQsIHJlY3Qud2lkdGgoKSwgcHJvZ3Jlc3NCYXJIZWlnaHQpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3Jk
ZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3Ju
ZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJh
ZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENv
cm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNz
QmFySGVpZ2h0IC8gMi47CiAgICAgUmVmUHRyPEdyYWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAxLjUpKTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC4wLCBDb2xvcigxMzMsIDEzMywgMTMzLCAxODgpKTsKICAgICB1cHBlckdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigxOCwgMTgsIDE4LCA1MSkpOwotICAgIGNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudCh1cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAg
IGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7
CiAKLSAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOworICAg
IGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uLCByZWN0LndpZHRoKCksIHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIAogICAgIGNvbnN0
IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlcmVy
KTsKICAgICBpZiAocmVuZGVyUHJvZ3Jlc3MuaXNEZXRlcm1pbmF0ZSgpKSB7CkBAIC04OTksMTMg
Kzg5OSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICBiYXJHcmFkaWVudC0+
YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2LCAxMTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDM2LCAxMTQsIDIxMCkpOwogICAgICAgICBi
YXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoNTcsIDE0MiwgMjQ0KSk7Ci0gICAg
ICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5v
bk51bGwoKSk7CiAKICAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBiYXJTdHJva2VHcmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQ
b3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24g
KyBwcm9ncmVzc0JhckhlaWdodCAtIDEpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCgwLjAsIENvbG9yKDk1LCAxMDcsIDE4MykpOwogICAgICAgICBiYXJTdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNSwgQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsKICAg
ICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAxMDQs
IDE2NikpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFk
aWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVu
dChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBQYXRoIGJh
clBhdGg7CiAgICAgICAgIGludCBsZWZ0ID0gcmVjdC54KCk7CkBAIC05MTMsNyArOTEzLDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICAgICAgICAgIGxlZnQgPSByZWN0Lm1heFgoKSAt
IGJhcldpZHRoOwogICAgICAgICBGbG9hdFJlY3QgYmFyUmVjdChsZWZ0ICsgMC4yNSwgdmVydGlj
YWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuMjUsIHN0ZDo6bWF4KGJhcldpZHRoIC0gMC41LCAwLjAp
LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CiAgICAgICAgIGJhclBhdGguYWRkUm91bmRlZFJl
Y3QoYmFyUmVjdCwgcm91bmRlZENvcm5lclJhZGl1cyk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdQ
YXRoKGJhclBhdGgpOworICAgICAgICBjb250ZXh0LmRyYXdQYXRoKGJhclBhdGgpOwogICAgIH0K
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTk4NCwxMCArOTg0LDEwIEBAIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNv
bnN0IFBhaW50CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHVzaEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJv
dW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKKyAg
ICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNv
bnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChib3guc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlz
RGFyaygpKQogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0
aE5hbWUoQ29udmV4R3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54
KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAgICAgZWxzZSB7CkBAIC0x
MDE0LDcgKzEwMTQsNyBAQCBjb25zdCBpbnQga011bHRpcGxlVGh1bWJuYWlsU2hyaW5rU2l6ZSA9
IDI7CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJPYmplY3QmIGJ1dHRvblJlbmRlcmVy
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgSWNvbiog
aWNvbiwgRmlsZVVwbG9hZERlY29yYXRpb25zIGZpbGVVcGxvYWREZWNvcmF0aW9ucykKIHsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAKICAgICBJbnRTaXplIGNvcm5lclNpemUoa1RodW1ibmFpbEJvcmRlckNvcm5l
clJhZGl1cywga1RodW1ibmFpbEJvcmRlckNvcm5lclJhZGl1cyk7CiAgICAgQ29sb3IgcGljdHVy
ZUZyYW1lQ29sb3IgPSBidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKTsKQEAgLTEwMzEsMTIgKzEwMzEsMTIgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFIKIAogICAgICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJh
bWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGljb24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRo
ZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJhY2tncm91bmRJbWFnZUNvbG9yID0gQ29sb3IoYnV0
dG9uUmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpLnJnYigpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5l
clNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVD
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5m
aWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdCh0
aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcjIoKnBhaW50SW5mby5jb250ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcCh0aHVtYm5haWxSZWN0KTsKKyAgICAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIocGFpbnRJbmZvLmNvbnRleHQoKSk7
CisgICAgICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cCh0aHVtYm5haWxSZWN0KTsKICAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kSW1hZ2VDb2xvci5p
c0RhcmsoKSkKICAgICAgICAgICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdy
YWRpZW50V2l0aE5hbWUoQ29udmV4R3JhZGllbnQpLCB0aHVtYm5haWxSZWN0LmxvY2F0aW9uKCks
IEZsb2F0UG9pbnQodGh1bWJuYWlsUmVjdC54KCksIHRodW1ibmFpbFJlY3QubWF4WSgpKSwgTGlu
ZWFySW50ZXJwb2xhdGlvbik7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTEwNTIsOCArMTA1Miw4
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSCiAgICAgfQogCiAgICAgLy8gRm9yZWdyb3VuZCBw
aWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJT
aXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29s
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGljb24tPnBhaW50KCpwYWludEluZm8uY29u
dGV4dCwgdGh1bWJuYWlsUmVjdCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJT
aXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29s
b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250
ZXh0KCksIHRodW1ibmFpbFJlY3QpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGRlMjJkMDBjODY3ZTQ0MDBk
ZTQ2ODMxMDZmNGY0NzYyMjNlMGZmYTIuLmZiNGU0YzgwYzg2MjkwZGNlMTZhY2FhMTlkYmZiN2Qy
ZmEzNmU5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
QEAgLTg1MCwxMSArODUwLDExIEBAIE5TQ29udHJvbFNpemUgUmVuZGVyVGhlbWVNYWM6OmNvbnRy
b2xTaXplRm9yU3lzdGVtRm9udChSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiAKIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250
ZXh0KCkpOwogCiAgICAgTlNUZXh0RmllbGRDZWxsICp0ZXh0RmllbGQgPSB0aGlzLT50ZXh0Rmll
bGQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
YWludEluZm8uY29udGV4dCgpKTsKIAogICAgIFt0ZXh0RmllbGQgc2V0RW5hYmxlZDooaXNFbmFi
bGVkKG8pICYmICFpc1JlYWRPbmx5Q29udHJvbChvKSldOwogICAgIFt0ZXh0RmllbGQgZHJhd1dp
dGhGcmFtZTpOU1JlY3QocikgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihvKV07CkBAIC04NzAsNyAr
ODcwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVS
ZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCoKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICB3
a0RyYXdCZXplbGVkVGV4dEFyZWEociwgaXNFbmFibGVkKG8pICYmICFpc1JlYWRPbmx5Q29udHJv
bChvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtOTA5LDcgKzkwOSw3IEBAIGNvbnN0IGlu
dCogUmVuZGVyVGhlbWVNYWM6OnBvcHVwQnV0dG9uUGFkZGluZyhOU0NvbnRyb2xTaXplIHNpemUp
IGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkKIHsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250
ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIHNldFBvcHVwQnV0dG9uQ2Vs
bFN0YXRlKHJlbmRlcmVyLCBJbnRTaXplKHJlY3Quc2l6ZSgpKSk7CiAKICAgICBOU1BvcFVwQnV0
dG9uQ2VsbCogcG9wdXBCdXR0b24gPSB0aGlzLT5wb3B1cEJ1dHRvbigpOwpAQCAtOTI0LDE5ICs5
MjQsMTkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8KICAgICBpZiAocmVjdC53aWR0aCgpID49
IG1pbmltdW1NZW51TGlzdFNpemUocmVuZGVyZXIuc3R5bGUoKSkpCiAgICAgICAgIGluZmxhdGVk
UmVjdCA9IGluZmxhdGVSZWN0KHJlY3QsIHNpemUsIHBvcHVwQnV0dG9uTWFyZ2lucygpLCB6b29t
TGV2ZWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgLy8gQmVmb3JlIFlvc2VtaXRlIHdlIGRpZCBu
b3Qgd2FudCB0aGUgY2VsbCB0byBldmVyIGRyYXcgb3V0c2lkZSB0aGUgZ2l2ZW4gcmVjdGFuZ2xl
LgogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEwMDAKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+Y2xpcChpbmZsYXRlZFJlY3QpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuY2xpcChpbmZsYXRlZFJlY3QpOwogI2VuZGlmCiAKICAgICBpZiAoem9vbUxldmVsICE9IDEu
MGYpIHsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgp
IC8gem9vbUxldmVsKTsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJl
Y3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJh
bnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1p
bmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUo
aW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0
ZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgcGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnRO
ZWVkc1JlcGFpbnRJZk5lY2Vzc2FyeShwb3B1cEJ1dHRvbiwgcmVuZGVyZXIsIHBhaW50SW5mbywg
aW5mbGF0ZWRSZWN0KTsKQEAgLTk2NCwxMCArOTY0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6
OnBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50
SW5mCiAgICAgaWYgKCFpczxSZW5kZXJNZXRlcj4ocmVuZGVyT2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgTlNMZXZlbEluZGljYXRvckNl
bGwqIGNlbGwgPSBsZXZlbEluZGljYXRvckZvcihkb3duY2FzdDxSZW5kZXJNZXRlcj4ocmVuZGVy
T2JqZWN0KSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTpyZWN0IGlu
Vmlldzpkb2N1bWVudFZpZXdGb3IocmVuZGVyT2JqZWN0KV07CiAgICAgW2NlbGwgc2V0Q29udHJv
bFZpZXc6bmlsXTsKQEAgLTExMzQsNyArMTEzNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
CiAgICAgdHJhY2tJbmZvLnJlc2VydmVkID0gMDsKICAgICB0cmFja0luZm8uZmlsbGVyMSA9IDA7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNl
U2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBhaW50SW5mby5jb250ZXh0LCB0cnVl
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNl
U2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHBhaW50SW5mby5jb250ZXh0KCksIHRy
dWUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0x
MTQyLDE0ICsxMTQyLDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAgSElUaGVt
ZURyYXdUcmFjaygmdHJhY2tJbmZvLCAwLCBjZ0NvbnRleHQsIGtISVRoZW1lT3JpZW50YXRpb25O
b3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgaWYgKCFyZW5kZXJQcm9ncmVzcy5zdHlsZSgp
LmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
dHJhbnNsYXRlKDIgKiBpbmZsYXRlZFJlY3QueCgpICsgaW5mbGF0ZWRSZWN0LndpZHRoKCksIDAp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKDIgKiBpbmZsYXRlZFJlY3QueCgp
ICsgaW5mbGF0ZWRSZWN0LndpZHRoKCksIDApOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnNjYWxlKEZsb2F0U2l6ZSgtMSwgMSkpOwogICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0
ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTIxMCwxMCAr
MTIxMCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGll
bnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGlmIChyLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29udGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWlu
ZXIocGFpbnRJbmZvLmNvbnRleHQpOworICAgIENvbnRleHRDb250YWluZXIgY2dDb250ZXh0Q29u
dGFpbmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIEZsb2F0
Um91bmRlZFJlY3QgYm9yZGVyID0gRmxvYXRSb3VuZGVkUmVjdChvLnN0eWxlKCkuZ2V0Um91bmRl
ZEJvcmRlckZvcihyKSk7CiAgICAgaW50IHJhZGl1cyA9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQo
KS53aWR0aCgpOwpAQCAtMTIzOSwzMyArMTIzOSwzMyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpw
YWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3Qg
UAogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IHJpZ2h0U2hhZGluZyA9IGFkb3B0Q0YoQ0dT
aGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShyLm1heFgoKSwgIHIueSgpKSwg
Q0dQb2ludE1ha2Uoci5tYXhYKCkgLSByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgp
LCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29u
dGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwg
bWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIH0KIAogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
ICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChl
bmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBi
b3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVu
Y2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJv
cmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgICAg
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRl
eHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICB9CiAKICAgICBp
ZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
ICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVu
Y2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm9y
ZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6
ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJp
Z2h0KCkpKTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7
CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIGJvdHRvbVNoYWRpbmcuZ2V0
KCkpOwogICAgIH0KIAogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250
ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNs
aXBSb3VuZGVkUmVjdChib3JkZXIpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBS
b3VuZGVkUmVjdChib3JkZXIpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVy
LmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNo
YWRpbmcuZ2V0KCkpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCByaWdo
dFNoYWRpbmcuZ2V0KCkpOwpAQCAtMTI5MiwxMCArMTI5MiwxMCBAQCBib29sIFJlbmRlclRoZW1l
TWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5k
ZXJlciwgYwogICAgIGlmIChib3VuZHMud2lkdGgoKSA8IGFycm93V2lkdGggKyBhcnJvd1BhZGRp
bmdMZWZ0ICogcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxs
Q29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0RmlsbENvbG9yKHJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Q29sb3IpLCByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBGbG9hdFBvaW50
IGFycm93MVszXTsKICAgICBhcnJvdzFbMF0gPSBGbG9hdFBvaW50KGxlZnRFZGdlLCBjZW50ZXJZ
IC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZik7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlciwgYwogICAgIGFycm93MVsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2Ug
KyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYg
LSBhcnJvd0hlaWdodCk7CiAKICAgICAvLyBEcmF3IHRoZSB0b3AgYXJyb3cKLSAgICBwYWludElu
Zm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cxLCB0cnVlKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MSwgdHJ1ZSk7CiAKICAg
ICBGbG9hdFBvaW50IGFycm93MlszXTsKICAgICBhcnJvdzJbMF0gPSBGbG9hdFBvaW50KGxlZnRF
ZGdlLCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZik7CkBAIC0xMzExLDcgKzEz
MTEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIGFycm93MlsyXSA9IEZsb2F0UG9p
bnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFy
cm93cyAvIDIuMGYgKyBhcnJvd0hlaWdodCk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gYXJy
b3cKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0
cnVlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93
MiwgdHJ1ZSk7CiAKICAgICBDb2xvciBsZWZ0U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwog
ICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1LCAyNTUsIDI1NSwgNDApOwpAQCAtMTMy
MSwxNCArMTMyMSwxNCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIGludCBsZWZ0RWRn
ZU9mU2VwYXJhdG9yID0gc3RhdGljX2Nhc3Q8aW50PihsZWZ0RWRnZSAtIGFycm93UGFkZGluZ0xl
ZnQgKiByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7IC8vIEZJWE1FOiBSb3VuZD8K
IAogICAgIC8vIERyYXcgdGhlIHNlcGFyYXRvciB0byB0aGUgbGVmdCBvZiB0aGUgYXJyb3dzCi0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxKTsgLy8gRGVsaWJlcmF0
ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBsb29rcyBuaWNlciBpZiBpdCBzdGF5cyB0aGluLgot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBv
aW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29t
IHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4uCisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VP
ZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy5tYXhZKCkpKTsKIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9p
bnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
SW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNl
cGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMubWF4WSgpKSk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRD
ZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnRJZk5lY2Vzc2FyeShOU0NlbGwKICAg
ICBib29sIHNob3VsZERyYXdGb2N1c1JpbmcgPSBpc0ZvY3VzZWQocmVuZGVyZXIpICYmIHJlbmRl
cmVyLnN0eWxlKCkub3V0bGluZVN0eWxlSXNBdXRvKCk7CiAgICAgYm9vbCBzaG91bGRVc2VJbWFn
ZUJ1ZmZlciA9IHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpICE9IDEgfHwgcGFnZS0+
cGFnZVNjYWxlRmFjdG9yKCkgIT0gMTsKICAgICBib29sIHNob3VsZERyYXdDZWxsID0gdHJ1ZTsK
LSAgICBpZiAoVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0
KGNlbGwsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LCBkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIp
LCBzaG91bGREcmF3Q2VsbCwgc2hvdWxkRHJhd0ZvY3VzUmluZywgc2hvdWxkVXNlSW1hZ2VCdWZm
ZXIsIHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpKQorICAgIGlmIChUaGVtZU1hYzo6ZHJhd0Nl
bGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRleHQo
KSwgcmVjdCwgZG9jdW1lbnRWaWV3Rm9yKHJlbmRlcmVyKSwgc2hvdWxkRHJhd0NlbGwsIHNob3Vs
ZERyYXdGb2N1c1JpbmcsIHNob3VsZFVzZUltYWdlQnVmZmVyLCBwYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKSkKICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1l
bnROZWVkc1JlcGFpbnQoKTsKIH0KIApAQCAtMTQ5MSw3ICsxNDkxLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBh
aW50SW5mbyYgcGEKICAgICAgICAgYm91bmRzLnNldFgoci54KCkgKyByLndpZHRoKCkgLyAyIC0g
em9vbWVkVHJhY2tXaWR0aCAvIDIpOwogICAgIH0KIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBsb2NhbENvbnRleHQuY2dDb250ZXh0KCk7CiAgICAgQ0dD
b2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIApAQCAtMTQ5
OSw3ICsxNDk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBwYWludFNsaWRlclRp
Y2tzKG8sIHBhaW50SW5mbywgcik7CiAjZW5kaWYKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBDR0NvbnRl
eHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5kcyk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNh
bGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAwLCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5V
TEwgfTsKQEAgLTE1MTEsNyArMTUxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xp
ZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAgICAg
ICAgIG1haW5TaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENH
UG9pbnRNYWtlKGJvdW5kcy54KCksICBib3VuZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngo
KSwgYm91bmRzLm1heFkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAK
ICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJh
ZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywg
cmFkaXVzLCByYWRpdXMpKTsKICAgICBjb250ZXh0ID0gbG9jYWxDb250ZXh0LmNnQ29udGV4dCgp
OwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsK
IApAQCAtMTUzMiw3ICsxNTMyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJU
aHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAg
PyBzbGlkZXJUaHVtYlZlcnRpY2FsKCkKICAgICAgICAgOiBzbGlkZXJUaHVtYkhvcml6b250YWwo
KTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHZhcmlvdXMgc3Rh
dGVzIHdlIHJlc3BvbmQgdG8uCiAgICAgdXBkYXRlRW5hYmxlZFN0YXRlKHNsaWRlclRodW1iQ2Vs
bCwgbyk7CkBAIC0xNTY4LDE2ICsxNTY4LDE2IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAg
ICAgaWYgKG8uc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQp
CiAgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQoYm91bmRzLmhlaWdodCgpICsgdmVydGljYWxTbGlk
ZXJIZWlnaHRQYWRkaW5nICogby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAgICAgZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAog
ICAgIEZsb2F0UmVjdCB1bnpvb21lZFJlY3QgPSBib3VuZHM7CiAgICAgaWYgKHpvb21MZXZlbCAh
PSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lk
dGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29t
ZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgp
LCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNs
YXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVu
em9vbWVkUmVjdC55KCkpOwogICAgIH0KIAogICAgIFtzbGlkZXJUaHVtYkNlbGwgZHJhd0tub2I6
dW56b29tZWRSZWN0XTsKQEAgLTE1ODgsMTIgKzE1ODgsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGEKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQogewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9
IHRoaXMtPnNlYXJjaCgpOwogCiAgICAgc2V0U2VhcmNoQ2VsbFN0YXRlKG8sIHIpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOwogCiAgICAgZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20o
KTsKIApAQCAtMTYwMiw5ICsxNjAyLDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBp
ZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVu
em9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNl
dEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55
KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZl
bCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVu
em9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9v
bUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21l
ZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgLy8gU2V0IHRoZSBz
ZWFyY2ggYnV0dG9uIHRvIG5pbCBiZWZvcmUgZHJhd2luZy4gIFRoZW4gcmVzZXQgaXQgc28gd2Ug
Y2FuIGRyYXcgaXQgbGF0ZXIuCkBAIC0xNjg1LDcgKzE2ODUsNyBAQCBib29sIFJlbmRlclRoZW1l
TWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUAogICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0U2VhcmNoQ2VsbFN0YXRl
KCppbnB1dC0+cmVuZGVyZXIoKSwgcik7CiAKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNo
ID0gdGhpcy0+c2VhcmNoKCk7CkBAIC0xNjk1LDcgKzE2OTUsNyBAQCBib29sIFJlbmRlclRoZW1l
TWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUAogICAgIGVsc2UgaWYgKFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGlzSGlnaGxp
Z2h0ZWRdKQogICAgICAgICBbW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSBzZXRIaWdobGlnaHRl
ZDpOT107CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
cGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCku
ZWZmZWN0aXZlWm9vbSgpOwogCkBAIC0xNzA2LDkgKzE3MDYsOSBAQCBib29sIFJlbmRlclRoZW1l
TWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUAogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJl
Y3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1
bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwg
dW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9h
dFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21l
ZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUo
em9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFu
c2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAg
ICBbW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxsXSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVjdCBp
blZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsKQEAgLTE3NjYsNyArMTc2Niw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvCiAgICAgaWYgKCFpbnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxv
Y2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFyY2hD
ZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRDZWxs
KiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKQEAgLTE3OTksNyArMTc5OSw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QKICAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIHNldFNlYXJjaENl
bGxTdGF0ZSgqaW5wdXQtPnJlbmRlcmVyKCksIHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwq
IHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvLCBjb25zdAogICAgIGlmICghW3NlYXJjaCBzZWFyY2hNZW51VGVtcGxhdGVdKQogICAg
ICAgICBbc2VhcmNoIHNldFNlYXJjaE1lbnVUZW1wbGF0ZTpzZWFyY2hNZW51VGVtcGxhdGUoKV07
CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5j
b250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJ
bmZvLmNvbnRleHQoKSk7CiAgICAgZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2
ZVpvb20oKTsKIAogICAgIEZsb2F0UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0
dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXQtPnJlbmRlckJveCgp
LT5jb250ZW50Qm94UmVjdCgpKSldOwpAQCAtMTgxNyw5ICsxODE3LDkgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdAogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21l
ZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAg
ICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZl
bCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0Lngo
KSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpv
b21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNp
emUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50
cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAK
ICAgICBbW3NlYXJjaCBzZWFyY2hCdXR0b25DZWxsXSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVj
dCBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsKQEAgLTE4NDMsNyArMTg0Myw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXIsCiAgICAgaWYgKCFjb250ZW50V2lkdGggfHwgIWNvbnRlbnRIZWln
aHQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKIAogICAgIExheW91dFNpemUgY29udGVudFNpemUoY29udGVudFdp
ZHRoLCBjb250ZW50SGVpZ2h0KTsKICAgICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRpb24gPSBy
ZW5kZXJCbG9jay5sb2NhdGlvbigpOwpAQCAtMTg5OSw3ICsxODk5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFs
aWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNv
bG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtMjA2MywxMCArMjA2MywxMCBAQCBib29sIFJlbmRlclRoZW1l
TWFjOjpwYWludEltYWdlQ29udHJvbHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
ciwgY29ucwogI2lmIEhBVkUoQVBQS0lUX1NFUlZJQ0VfQ09OVFJPTFNfU1VQUE9SVCkKICAgICBO
U1NlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsICpjZWxsID0gc2VydmljZXNSb2xsb3ZlckJ1dHRv
bkNlbGwoKTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
cGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7CiAKICAgICBJbnRSZWN0
IGlubmVyRnJhbWUoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpOwogICAgIFtjZWxsIGRyYXdXaXRo
RnJhbWU6aW5uZXJGcmFtZSBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKHJlbmRlcmVyKV07CkBAIC0y
NDYyLDggKzI0NjIsOCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbgogCiAgICAgQXR0YWNobWVu
dExheW91dCBsYXlvdXQoYXR0YWNobWVudCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dCgmY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDb250ZXh0KGNvbnRleHQpOwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIo
Y29udGV4dCk7CiAKICAgICBjb250ZXh0LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShwYWludFJlY3Qu
bG9jYXRpb24oKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNh
ZmFyaS5jcHAKaW5kZXggNTVjMDhkNTY1MjNlOTVmZGU3MjU2M2VjZTI0ODgxYWYxMDA5MDNjYS4u
NDc3MTkzYzEzZWU1ZmE5NjNhOTZkMTVhOGZiMjA0ODg3OGRkNTEwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0zOTIsNyArMzkyLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXpl
ID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5bGUoKSk7CiAKICAgICBJbnRSZWN0IGluZmxhdGVk
UmVjdCA9IGluZmxhdGVSZWN0KHIsIGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV0sIGNoZWNr
Ym94TWFyZ2lucyhjb250cm9sU2l6ZSkpOyAgCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhl
bWU6OkNoZWNrYm94UGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBp
bmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRU
aGVtZVBhcnQoU2FmYXJpVGhlbWU6OkNoZWNrYm94UGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWludEluZm8mIHBhaW50CiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRy
b2xTaXplRm9yRm9udChvLnN0eWxlKCkpOwogIAogICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0g
aW5mbGF0ZVJlY3QociwgcmFkaW9TaXplcygpW2NvbnRyb2xTaXplXSwgcmFkaW9NYXJnaW5zKGNv
bnRyb2xTaXplKSk7ICAgIAotICAgIHBhaW50VGhlbWVQYXJ0KFJhZGlvQnV0dG9uUGFydCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xT
aXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0b25Q
YXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3Qs
IGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CkBAIC01NzcsNyArNTc3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24o
Y29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICB9IGVsc2UK
ICAgICAgICAgcGFydCA9IFNhZmFyaVRoZW1lOjpTcXVhcmVCdXR0b25QYXJ0OwogCi0gICAgcGFp
bnRUaGVtZVBhcnQocGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBp
bmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRU
aGVtZVBhcnQocGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgaW5m
bGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtNTg1LDcgKzU4NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwCiB7
CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0
KFNhZmFyaVRoZW1lOjpUZXh0RmllbGRQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3Vz
ZWRTdGF0ZSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRGaWVsZFBhcnQs
IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXpl
KTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0ZSk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCkBAIC01OTgsMTAgKzU5OCwxMCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbgogI2lm
IGRlZmluZWQoU0FGQVJJX1RIRU1FX1ZFUlNJT04pICYmIFNBRkFSSV9USEVNRV9WRVJTSU9OID49
IDEKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgaWYgKHBhaW50SW5m
by5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0
KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHBhaW50
VGhlbWVQYXJ0KENhcHNMb2NrUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCAoVGhlbWVDb250cm9sU3RhdGUpMCk7CisgICAgcGFp
bnRUaGVtZVBhcnQoQ2Fwc0xvY2tQYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCAoVGhlbWVDb250cm9sU3RhdGUpMCk7CiAKICAg
ICByZXR1cm4gZmFsc2U7CiAjZWxzZQpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVTYWZhcmk6OnBhaW50VGV4dEFyZWEoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKIAotICAgIHBh
aW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpUZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUo
bykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4
dEFyZWFQYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlND
b250cm9sU2l6ZSkwLCBkZXRlcm1pbmVTdGF0ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNjYyLDcgKzY2Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8m
IGluCiAgICAgaWYgKHIud2lkdGgoKSA+PSBtaW5pbXVtTWVudUxpc3RTaXplKG8uc3R5bGUoKSkp
CiAgICAgICAgIGluZmxhdGVkUmVjdCA9IGluZmxhdGVSZWN0KGluZmxhdGVkUmVjdCwgc2l6ZSwg
cG9wdXBCdXR0b25NYXJnaW5zKGNvbnRyb2xTaXplKSk7CiAKLSAgICBwYWludFRoZW1lUGFydChE
cm9wRG93bkJ1dHRvblBhcnQsIGluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxh
dGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1l
UGFydChEcm9wRG93bkJ1dHRvblBhcnQsIGluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC03MjMsOSArNzIzLDkgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRpZW50cyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNv
bnMKICAgICBpZiAoci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4
dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zYXZlKCk7CiAKICAgICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kID0gRmxvYXRSb3Vu
ZGVkUmVjdChvLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihyKSk7CiAgICAgaW50IHJhZGl1
cyA9IGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7CkBAIC03NDksMzQgKzc0OSwzNCBA
QCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29ucwogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGxl
ZnRTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRN
YWtlKHIueCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLngoKSArIHJhZGl1cywgci55KCkpLCBt
YWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgUmV0YWluUHRyPENHU2hh
ZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3Bh
Y2UsIENHUG9pbnRNYWtlKHIubWF4WCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAt
IHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZl
KCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LmNsaXBSb3VuZGVkUmVjdChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAKLSAgICBwYWludEluZm8uY29u
dGV4dC0+c2F2ZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgIENHQ29u
dGV4dENsaXBUb1JlY3QoY29udGV4dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250
ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRv
cEdyYWRpZW50KSwgYm91bmQucmFkaWkoKS50b3BMZWZ0KCksIGJvdW5kLnJhZGlpKCkudG9wUmln
aHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGll
bnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJ
bnRTaXplKCksIEludFNpemUoKSkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IHRvcFNoYWRpbmcuZ2V0KCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRp
ZW50LmlzRW1wdHkoKSkgewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRv
bUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVm
dCgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0
KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90
dG9tTGVmdCgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250
ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
cmVzdG9yZSgpOwogICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250
ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3VuZCk7CiAgICAgQ0dD
b250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29u
dGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUo
KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5yZXN0b3JlKCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNzk4LDEw
ICs3OTgsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICBpZiAoYm91bmRzLndpZHRo
KCkgPCBhcnJvd1dpZHRoICsgYXJyb3dQYWRkaW5nTGVmdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLnNhdmUoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IocmVuZGVy
ZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihO
b1N0cm9rZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IoTm9TdHJva2UsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAg
RmxvYXRQb2ludCBhcnJvd1szXTsKICAgICBhcnJvd1swXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2Us
IGNlbnRlclkgLSBhcnJvd0hlaWdodCAvIDIuMGYpOwpAQCAtODA5LDcgKzgwOSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlCiAgICAgYXJyb3dbMl0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsg
YXJyb3dXaWR0aCAvIDIuMGYsIGNlbnRlclkgKyBhcnJvd0hlaWdodCAvIDIuMGYpOwogCiAgICAg
Ly8gRHJhdyB0aGUgYXJyb3cKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHln
b24oMywgYXJyb3csIHRydWUpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBv
bHlnb24oMywgYXJyb3csIHRydWUpOwogCiAgICAgQ29sb3IgbGVmdFNlcGFyYXRvckNvbG9yKDAs
IDAsIDAsIDQwKTsKICAgICBDb2xvciByaWdodFNlcGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUs
IDQwKTsKQEAgLTgxOSwxNyArODE5LDE3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlCiAgICAg
aW50IGxlZnRFZGdlT2ZTZXBhcmF0b3IgPSBzdGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJy
b3dQYWRkaW5nTGVmdCk7IC8vIEZJWE1FOiBSb3VuZD8KIAogICAgIC8vIERyYXcgdGhlIHNlcGFy
YXRvciB0byB0aGUgbGVmdCBvZiB0aGUgYXJyb3dzCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5
bGUoU29saWRTdHJva2UpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihs
ZWZ0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgp
KSwKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2lu
dChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkp
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9y
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5k
cy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBh
cmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2Us
IGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKIAot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5yZXN0b3JlKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05MzUsMTAgKzkzNSwxMCBA
QCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJgogICAgIGVsc2UgaWYgKG8uc3R5bGUoKS5hcHBlYXJh
bmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KQogICAgICAgICBib3VuZHMuc2V0UmVjdChJbnRS
ZWN0KHIueCgpICsgci53aWR0aCgpIC8gMiAtIHRyYWNrV2lkdGggLyAyLCByLnkoKSwgdHJhY2tX
aWR0aCwgci5oZWlnaHQoKSkpOwogCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29sb3JTcGFj
ZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xvclNwYWNlUmVmKCk7CiAKLSAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgIENH
Q29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzLnJlY3QoKSk7CiAKICAgICBzdHJ1Y3Qg
Q0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAwLCBUcmFja0dyYWRpZW50SW50
ZXJwb2xhdGUsIE5VTEwgfTsKQEAgLTk0OSw5ICs5NDksOSBAQCBib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJ
bmZvJgogICAgIGVsc2UKICAgICAgICAgbWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0Ny
ZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMu
cmVjdCgpLnkoKSksIENHUG9pbnRNYWtlKGJvdW5kcy5yZWN0KCkueCgpLCBib3VuZHMucmVjdCgp
Lm1heFkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwUm91bmRlZFJlY3QoYm91bmRzKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGlu
Zyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICAKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC05NjcsNyArOTY3LDcgQEAgY29uc3QgZmxvYXQgdmVydGljYWxT
bGlkZXJIZWlnaHRQYWRkaW5nID0gMC4xZjsKIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50
U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5
KCkpOwotICAgIHBhaW50VGhlbWVQYXJ0KFNsaWRlclRodW1iUGFydCwgcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBOU1NtYWxsQ29udHJvbFNpemUsIGRldGVybWluZVN0
YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChTbGlkZXJUaHVtYlBhcnQsIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIE5TU21hbGxDb250cm9sU2l6ZSwgZGV0ZXJt
aW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTkwLDcgKzk5MCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFy
eSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFBhcnQs
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgY29udHJvbFNpemVGcm9t
UmVjdChyLCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFp
bnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgY29udHJvbFNpemVGcm9tUmVjdChyLCBzZWFyY2hG
aWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29ucwogCiAgICAgSW50
UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNo
RmllbGRDYW5jZWxCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmll
bGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFy
aVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNo
UmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIApAQCAtMTEwNiw3ICsxMTA2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmpl
Y3QKIAogICAgIEludFJlY3Qgc2VhcmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJp
VGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2Vh
cmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBh
aW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFy
dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29u
dHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTMwLDcgKzExMzAsNyBA
QCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbgogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAg
ICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFy
dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250
cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWlu
ZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRS
ZXN1bHRzQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwg
c2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNp
emVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCAxNjM1YTc0ZTU4
OGI1OGNkOWQ0OTE0MTRmMWNmYzg3YjNlZWJiY2E1Li43MTQ3ODg5YjVjODg2NTA2YjI5ZjkwOTZj
MGQwZGI5Y2UyMGM4MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVdpbi5jcHAKQEAgLTYyMiw3ICs2MjIsNyBAQCBUaGVtZURhdGEgUmVuZGVyVGhlbWVXaW46Omdl
dFRoZW1lRGF0YShjb25zdCBSZW5kZXJPYmplY3QmIG8sIENvbnRyb2xTdWJQYXJ0IHN1YgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBIQU5ETEUgdGhlbWUsIGNvbnN0
IFRoZW1lRGF0YSYgdGhlbWVEYXRhLCBjb25zdCBJbnRSZWN0JiByKQorc3RhdGljIHZvaWQgZHJh
d0NvbnRyb2woR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8s
IEhBTkRMRSB0aGVtZSwgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEsIGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgYm9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHRoZW1lKQpAQCAt
Njc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBIQU5ETEUKICAgICAgICAgfQogICAgIH0K
IAotICAgIGlmICghYWxwaGFCbGVuZCAmJiAhY29udGV4dC0+aXNJblRyYW5zcGFyZW5jeUxheWVy
KCkpCisgICAgaWYgKCFhbHBoYUJsZW5kICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXll
cigpKQogICAgICAgICBESUJQaXhlbERhdGE6OnNldFJHQkFCaXRtYXBBbHBoYSh3aW5kb3dzQ29u
dGV4dC5oZGMoKSwgciwgMjU1KTsKIH0KIApAQCAtNzQ2LDcgKzc0Niw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVXaW46OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgUGFpbnRJbmZvCiAgICAgICAgIHBhcnQgPSBURlBfVEVYVEZJRUxEOwogICAgIH0KIAotICAg
IGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJlciwgdGhlbWUsIFRoZW1lRGF0
YShwYXJ0LCBkZXRlcm1pbmVTdGF0ZShyZW5kZXJlcikpLCBJbnRSZWN0KHJlY3QpKTsKKyAgICBk
cmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgpLCByZW5kZXJlciwgdGhlbWUsIFRoZW1lRGF0
YShwYXJ0LCBkZXRlcm1pbmVTdGF0ZShyZW5kZXJlcikpLCBJbnRSZWN0KHJlY3QpKTsKICAgICAK
ICAgICByZXR1cm4gcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGRvd25jYXN0PFJlbmRl
ckJveD4ocmVuZGVyZXIpLCBwYWludEluZm8sIEZsb2F0UmVjdChyZWN0KSk7CiB9CkBAIC04MDgs
NyArODA4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29y
YXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIsIGMKICAgICAgICAgYnV0dG9uUmVjdC5z
ZXRXaWR0aChidXR0b25SZWN0LndpZHRoKCkgKyB2aXN0YU1lbnVMaXN0QnV0dG9uT3V0c2V0KTsK
ICAgICB9CiAKLSAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCwgcmVuZGVyZXIsIG1l
bnVMaXN0VGhlbWUoKSwgZ2V0VGhlbWVEYXRhKHJlbmRlcmVyKSwgYnV0dG9uUmVjdCk7CisgICAg
ZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVuZGVyZXIsIG1lbnVMaXN0VGhlbWUo
KSwgZ2V0VGhlbWVEYXRhKHJlbmRlcmVyKSwgYnV0dG9uUmVjdCk7CiAKICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC04OTIsNyArODkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFAKIAogICAg
IHN0YXRpYyBJbWFnZSogY2FuY2VsSW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2Uo
InNlYXJjaENhbmNlbCIpLmxlYWtSZWYoKTsKICAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbFByZXNz
ZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsUHJlc3Nl
ZCIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGlzUHJlc3Nl
ZChvKSA/IGNhbmNlbFByZXNzZWRJbWFnZSA6IGNhbmNlbEltYWdlLCBvLnN0eWxlKCkuY29sb3JT
cGFjZSgpLCBib3VuZHMpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKGlzUHJl
c3NlZChvKSA/IGNhbmNlbFByZXNzZWRJbWFnZSA6IGNhbmNlbEltYWdlLCBvLnN0eWxlKCkuY29s
b3JTcGFjZSgpLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTQwLDcgKzk0
MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3Jh
dGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvCiAgICAgYm91bmRzLnNldFkocGFyZW50Qm94
LnkoKSArIChwYXJlbnRCb3guaGVpZ2h0KCkgLSBib3VuZHMuaGVpZ2h0KCkgKyAxKSAvIDIpOwog
ICAgIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllciIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+ZHJhd0ltYWdlKG1hZ25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgp
LCBib3VuZHMpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25pZmllcklt
YWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtOTc1LDcgKzk3NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKICAgICBib3Vu
ZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAtIGJvdW5kcy5oZWln
aHQoKSArIDEpIC8gMik7CiAKICAgICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmllckltYWdlID0gSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1bHRzIikubGVha1Jl
ZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8u
c3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTM5LDE0ICsxMTM5LDE0IEBAIGJvb2wgUmVu
ZGVyVGhlbWVXaW46OnBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3Qs
IGNvbnN0IFBhaW50SW5mCiAgICAgaW50IHJlbWFpbmluZyA9IHN0YXRpY19jYXN0PGludD4oKDEu
MCAtIGVsZW1lbnQtPnZhbHVlUmF0aW8oKSkgKiBzdGF0aWNfY2FzdDxkb3VibGU+KHJlY3Quc2l6
ZSgpLndpZHRoKCkpKTsKIAogICAgIC8vIERyYXcgdGhlIGJhY2tncm91bmQKLSAgICBkcmF3Q29u
dHJvbChwYWludEluZm8uY29udGV4dCwgcmVuZGVyT2JqZWN0LCBwcm9ncmVzc0JhclRoZW1lKCks
IHRoZW1lLCByZWN0KTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgpLCByZW5k
ZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwgdGhlbWUsIHJlY3QpOwogCiAgICAgLy8gRHJh
dyB0aGUgcHJvZ3Jlc3MgcG9ydGlvbgogICAgIEludFJlY3QgY29tcGxldGVkUmVjdChyZWN0KTsK
ICAgICBjb21wbGV0ZWRSZWN0LmNvbnRyYWN0KHJlbWFpbmluZywgMCk7CiAKICAgICB0aGVtZS5t
X3BhcnQgPSBQUF9GSUxMOwotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5k
ZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwgdGhlbWUsIGNvbXBsZXRlZFJlY3QpOworICAg
IGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NC
YXJUaGVtZSgpLCB0aGVtZSwgY29tcGxldGVkUmVjdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IDVmN2NlMWNlNzY5
ZGMxNzZlNzRiYTcwNjY0MjM5YTZmOGFiOTRhODcuLmU5MzU1YWE5YzE1Zjk5ZTBmYzMxODFlNmQx
ZmI0NTRiOTZjODczODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWRlby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNw
cApAQCAtMTgwLDExICsxODAsMTEgQEAgdm9pZCBSZW5kZXJWaWRlbzo6cGFpbnRSZXBsYWNlZChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgIExh
eW91dFJlY3QgY29udGVudFJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwogICAgIGNvbnRlbnRSZWN0
Lm1vdmVCeShwYWludE9mZnNldCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKICAgICBib29sIGNsaXAgPSAhY29udGVudFJlY3QuY29udGFpbnMocmVjdCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlw
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgY2xp
cCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJlY3QpOwor
ICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQ
b3N0ZXIpCiAgICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggOGYwYjZlNjE5NGUwNzUyZDY2NzNjOTIx
ZTlkYzJmYjYwNzNkYjNmMy4uMDRhMDhkNWRlZDAzYmQzZTVkMzdkOTdhYWMxZTYzNjJkOTAzZTVk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNTE3LDcgKzUx
Nyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogICAgIC8vIFRoaXMgYXZvaWRzIHBhaW50aW5n
IGdhcmJhZ2UgYmV0d2VlbiBjb2x1bW5zIGlmIHRoZXJlIGlzIGEgY29sdW1uIGdhcC4KICAgICBp
ZiAoZnJhbWVWaWV3KCkucGFnaW5hdGlvbigpLm1vZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0
ZWQgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykpCi0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFz
ZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJh
Y2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIHBhaW50T2JqZWN0
KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQpAQCAtNjEzLDEyICs2MTMsMTIgQEAgdm9pZCBS
ZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYpCiAgICAgICAgIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0g
ZnJhbWVWaWV3KCkuZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgQ29sb3IgYmFj
a2dyb3VuZENvbG9yID0gKGJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlICYmIGRvY3Vt
ZW50QmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgPyBkb2N1bWVudEJhY2tncm91bmRDb2xvciA6
IGZyYW1lVmlldygpLmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGJhY2tncm91
bmRDb2xvci5hbHBoYSgpKSB7Ci0gICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91
c09wZXJhdG9yID0gcGFpbnRJbmZvLmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDb3B5KTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwYWludElu
Zm8ucmVjdCwgYmFja2dyb3VuZENvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3Bl
cmF0b3IpOworICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9
IHBhaW50SW5mby5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsK
KyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJbmZvLnJlY3Qs
IGJhY2tncm91bmRDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsZWFyUmVj
dChwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsZWFy
UmVjdChwYWludEluZm8ucmVjdCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGFjN2M4ODgyY2ZjNTgyMzYxMzUwYWNjYzk4NzEzZjEx
OGJjMWIyNTMuLjk5NGNiMGMyY2Y2ZmZlNzgyODY3ZjUyZDFmMmNhOTM0NzA0MmVjZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0yMjgsMTQgKzIyOCwx
NCBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgIC8vIFdoZW4gcGFpbnRpbmcgd2lkZ2V0
cyBpbnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHggYW5kIHR5IGFyZSByZWxhdGl2ZSB0byB0aGUg
ZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLAogICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhp
cyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290
LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCiAgICAgaWYgKCF3aWRnZXRQYWludE9m
ZnNldC5pc1plcm8oKSkgewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdp
ZGdldFBhaW50T2Zmc2V0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUo
d2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRP
ZmZzZXQpOwogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY29sc2lu
Zy9pbnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBwaXhl
bCBzbmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBl
ZEludFJlY3QocGFpbnRSZWN0KSk7CisgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250
ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOwogCiAgICAgaWYgKCF3aWRnZXRQYWlu
dE9mZnNldC5pc1plcm8oKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgt
d2lkZ2V0UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0
ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKGlzPEZyYW1lVmlldz4oKm1fd2lkZ2V0
KSkgewogICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4o
Km1fd2lkZ2V0KTsKQEAgLTI3NSwyNiArMjc1LDI2IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhhdmUg
YSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5kIGNv
bnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZl
KCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBGbG9hdFJv
dW5kZWRSZWN0IHJvdW5kZWRJbm5lclJlY3QgPSBGbG9hdFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0
Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCiAgICAgICAgICAgICBwYWRkaW5nVG9w
KCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9tKCksIHBhZGRp
bmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKSwg
dHJ1ZSwgdHJ1ZSkpOwotICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8uY29u
dGV4dCwgYm9yZGVyUmVjdCwgcm91bmRlZElubmVyUmVjdCk7CisgICAgICAgIGNsaXBSb3VuZGVk
SW5uZXJSZWN0KHBhaW50SW5mby5jb250ZXh0KCksIGJvcmRlclJlY3QsIHJvdW5kZWRJbm5lclJl
Y3QpOwogICAgIH0KIAogICAgIGlmIChtX3dpZGdldCkKICAgICAgICAgcGFpbnRDb250ZW50cyhw
YWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1
cygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRy
YW5zcGFyZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVk
KCkgJiYgIWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0
aW9uUmVjdCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCi0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25S
ZWN0KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CiAgICAgfQogCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVz
aXplKCkpCi0gICAgICAgIGxheWVyKCktPnBhaW50UmVzaXplcihwYWludEluZm8uY29udGV4dCwg
cm91bmRlZEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQpLCBwYWludEluZm8ucmVjdCk7Cisg
ICAgICAgIGxheWVyKCktPnBhaW50UmVzaXplcihwYWludEluZm8uY29udGV4dCgpLCByb3VuZGVk
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBhaW50SW5mby5yZWN0KTsKIH0KIAogdm9p
ZCBSZW5kZXJXaWRnZXQ6OnNldE92ZXJsYXBUZXN0UmVzdWx0KGJvb2wgaXNPdmVybGFwcGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDM5Zjk3OWQ2
MzM1ZjM5OGM5ZDc4YjQxMzRmODNhZmViZWViMDdjYTEuLmM5ZjBhMDgyNTg1MmE0NWE0NDkzYWZl
NzMyY2E2YWQzN2MyMWY2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5l
U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQogICAg
ICAgICAgICAgICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRv
UGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsKICAg
ICAgICAgICAgICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVkICYmIGdhcFJlY3Qud2lkdGgo
KSA+IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHBhaW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0
eSgpID09IFZJU0lCTEUpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRl
eHQtPmZpbGxSZWN0KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9u
QmFja2dyb3VuZENvbG9yKCksIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCku
ZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFZpc2libGVTZWxlY3Rpb24gbWF5IGJlIG5v
bi1jb250aWd1b3VzLCBzZWUgY29tbWVudCBhYm92ZS4KICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LnVuaXRlQ2VudGVyKGdhcFJlY3QpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApp
bmRleCA1OWQxYTdkZTU2NzQ3MTI3YjMwMzQ1NzU4YWMyNmE2ZjFjYzE2MWEyLi5mMWM2YjEwZTdi
ZGRjMjMwMTZhYzA2NTI1YWZhMjRmOTM5MTNhM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3Qg
TGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBib29sIGRlYnVnQm9yZGVyc0Vu
YWJsZWQgPSBmbG93LmZyYW1lKCkuc2V0dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3Jk
ZXJzRW5hYmxlZCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gKnBhaW50SW5m
by5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0KCk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgp
OwogICAgIFRleHRQYWludFN0eWxlIHRleHRQYWludFN0eWxlID0gY29tcHV0ZVRleHRQYWludFN0
eWxlKGZsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbyk7CiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIHRleHRQYWludFN0eWxlLnN0cm9rZVdpZHRo
ID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwCmluZGV4IDdhYTU0ZmI4YzIxM2QwMzhlMTk4MzFiZDkyNTExMGExODdj
ZTRlNGYuLmI2ZGU3OWU4YjI0NjU5OWZkMmE0NTkyNGM3Njk0YTIxN2E4OGIxOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
Y3BwCkBAIC05NSwzMyArOTUsMzMgQEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVu
ZGVyRmxleGlibGVCb3g6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAKLSAgICBpZiAo
aW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBo
YXNlRm9yZWdyb3VuZCkKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
IHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFp
bnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwg
MCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRo
aWNrbmVzcygxLjBmKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1
KSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRq
dXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhl
bFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwotICAgIGlu
Zm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBw
aXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSksIEludFBv
aW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwg
YWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOwot
ICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkp
LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdp
ZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0
KCkpKTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIElu
dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSAr
IHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xp
bmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkg
KyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwor
ICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkp
LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdp
ZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0
KCkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRI
ZWlnaHQoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVk
T2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRIZWlnaHQoKSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRP
ZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7CiAgICAgCiAgICAgaW50IHRv
cFN0YXJ0ID0gcGFkZGluZ1RvcCgpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4
dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAg
ICAKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSwgSW50UG9pbnQoYWRq
dXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xp
bmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVs
U25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQp
KTsKICAgICAKICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRvSW50KGJhc2VsaW5lUG9zaXRpb24o
QWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSkpOwogICAgIAotICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZVNS
R0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwgMCks
IENvbG9yU3BhY2VTUkdCKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBv
aW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJh
c2VsaW5lKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSk7CisgICAg
aW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoREVCVUdfTUFUSF9M
QVlPVVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggNTFmMTY4ZWFlYmY2YTJkOGIzZGRmYjdhMDQx
NWE3NzQyNDgyZDMwNS4uNTE5YmIzODg4OTYzMjY1Mzg1Njk2ODI4ZWEwYzZiN2YwNjVkMmQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEZy
YWN0aW9uOjpsYXlvdXQoKQogdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVuZGVy
TWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKLSAgICBpZiAoaW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNv
bnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9y
ZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgUmVuZGVyQm94KiBkZW5vbWluYXRvcldyYXBwZXIgPSBsYXN0Q2hpbGRC
b3goKTsKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBh
aW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAKICAg
ICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91bmRlZEludFBvaW50KHBhaW50T2Zm
c2V0ICsgbG9jYXRpb24oKSArIGRlbm9taW5hdG9yV3JhcHBlci0+bG9jYXRpb24oKSArIExheW91
dFBvaW50KDAsIG1fbGluZVRoaWNrbmVzcyAvIDIpKTsKICAgICAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICAKLSAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhtX2xpbmVUaGlja25lc3MpOwotICAgIGluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvciksIENvbG9yU3BhY2VTUkdCKTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGFkanVz
dGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSArIGRlbm9taW5hdG9yV3JhcHBlci0+b2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkpKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KG1fbGluZVRoaWNrbmVzcyk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlU1JHQik7Cisg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRlZElu
dFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgZGVub21pbmF0b3JX
cmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKIH0KIAog
T3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNZW5jbG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTE1lbmNsb3NlLmNwcAppbmRleCAxNzQ2OGMxMTk5MzA0YTcwZDY3Yjc1MDBiZTJkYjc0
MDc1ZDQyZTc1Li5iODZlMzYyOWE2Yjc4ZTQwNGE1ZmJhZGU0NDc4ZDJlNDc0NTQ3NjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNs
b3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3Nl
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAog
ewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAKLSAg
ICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQor
ICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAh
PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTWF0aE1MTWVuY2xvc2VFbGVtZW50KiBtZW5j
bG9zZSA9IGRvd25jYXN0PE1hdGhNTE1lbmNsb3NlRWxlbWVudD4oZWxlbWVudCgpKTsKQEAgLTEx
NCwyMyArMTE0LDIzIEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgICAgIGludCBoYWxm
Ym94V2lkdGggPSByZWN0LndpZHRoKCkgLyAyOwogICAgICAgICBpbnQgaGFsZmJveEhlaWdodCA9
IHJlY3QuaGVpZ2h0KCkgLyAyOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJv
a2VUaGlja25lc3MoMSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8u
Y29udGV4dCgpKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEp
OworICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Cisg
ICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAg
ICAgLy8gVE9ETyBhZGQgc3VwcG9ydCBmb3Igbm90YXRpb24gdmFsdWUgdXBkaWFnb25hbGFycm93
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0NjYKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBub3RhdGlvbmFsVmFsdWVTaXplOyBpKyspIHsKICAgICAg
ICAgICAgIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAidXBkaWFnb25hbHN0cmlrZSIpCi0gICAg
ICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3AgKyBi
b3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCkpOworICAgICAgICAgICAg
ICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGJveEhlaWdo
dCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wKSk7CiAgICAgICAgICAgICBlbHNlIGlm
IChub3RhdGlvblZhbHVlc1tpXSA9PSAiZG93bmRpYWdvbmFsc3RyaWtlIikKLSAgICAgICAgICAg
ICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCksIEludFBvaW50
KGxlZnQgKyBib3hXaWR0aCwgdG9wICsgYm94SGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgaW5m
by5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQobGVmdCAr
IGJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0
aW9uVmFsdWVzW2ldID09ICJ2ZXJ0aWNhbHN0cmlrZSIpCi0gICAgICAgICAgICAgICAgaW5mby5j
b250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3ApLCBJbnRQ
b2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKKyAgICAgICAgICAg
ICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdpZHRo
LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJob3Jpem9udGFsc3Ry
aWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCAr
IGhhbGZib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShJbnRQb2ludChsZWZ0LCB0b3AgKyBoYWxmYm94SGVpZ2h0KSwgSW50UG9pbnQobGVmdCArIGJv
eFdpZHRoLCB0b3AgKyBoYWxmYm94SGVpZ2h0KSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub3Rh
dGlvblZhbHVlc1tpXSA9PSAiY2lyY2xlIikgewotICAgICAgICAgICAgICAgIGluZm8uY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3RWxsaXBzZShyZWN0KTsKKyAgICAg
ICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5k
cmF3RWxsaXBzZShyZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobm90YXRpb25WYWx1ZXNb
aV0gPT0gImxvbmdkaXYiKQogICAgICAgICAgICAgICAgIGlzRGVmYXVsdExvbmdEaXYgPSB0cnVl
OwogICAgICAgICB9CkBAIC0xNDQsOSArMTQ0LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9z
ZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtaWR4UG9pbnQgPSBzdHlsZSgpLnBh
ZGRpbmdMZWZ0KCkudmFsdWUoKTsKICAgICAgICAgICAgIHJvb3QuYWRkQmV6aWVyQ3VydmVUbyhG
bG9hdFBvaW50KGxlZnQsIHRvcCksIEZsb2F0UG9pbnQobGVmdCArIG1pZHhQb2ludCwgdG9wICsg
aGFsZmJveEhlaWdodCksIEZsb2F0UG9pbnQobGVmdCwgdG9wICsgYm94SGVpZ2h0KSk7Ci0gICAg
ICAgICAgICBpbmZvLmNvbnRleHQtPnN0cm9rZVBhdGgocm9vdCk7CisgICAgICAgICAgICBpbmZv
LmNvbnRleHQoKS5zdHJva2VQYXRoKHJvb3QpOwogICAgICAgICAgICAgaWYgKGlzRGVmYXVsdExv
bmdEaXYpCi0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChs
ZWZ0LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGggKyBtaWR4UG9pbnQsIHRvcCkpOwor
ICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRv
cCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCArIG1pZHhQb2ludCwgdG9wKSk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IDkzOGY2YmM4ZTBkMGY1OWM0NzMyYzk5
MzFjODU4MjMyMWNlY2U3ZGEuLjNjZmViMjFjYThkMjU3ZjNlZmU1MGFhMWU5Y2RjMTdlNDkyMmMx
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0xNzk3LDEyICsxNzk3LDEyIEBAIExheW91dFJlY3Qg
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50R2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBH
bHlwaERhdGEmIGRhCiAgICAgfQogCiAgICAgLy8gQ2xpcHBpbmcgdGhlIGVuY2xvc2luZyBJbnRS
ZWN0IGF2b2lkcyBhbnkgcG90ZW50aWFsIGlzc3VlcyBhdCBqb2luZWQgZWRnZXMuCi0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgIGlu
Zm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgIGluZm8uY29udGV4dCgpLmNsaXAo
Y2xpcEJvdW5kcyk7CiAKICAgICBHbHlwaEJ1ZmZlciBidWZmZXI7CiAgICAgYnVmZmVyLmFkZChk
YXRhLmdseXBoLCBkYXRhLmZvbnQsIGFkdmFuY2VGb3JHbHlwaChkYXRhKSk7Ci0gICAgaW5mby5j
b250ZXh0LT5kcmF3R2x5cGhzKHN0eWxlKCkuZm9udENhc2NhZGUoKSwgKmRhdGEuZm9udCwgYnVm
ZmVyLCAwLCAxLCBvcmlnaW4pOworICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoc3R5bGUo
KS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdpbik7CiAKICAg
ICByZXR1cm4gZ2x5cGhQYWludFJlY3Q7CiB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTE9wZXJhdG9yOjpmaWxsV2l0aFZlcnRpY2FsRXh0ZW5zaW9uR2x5cGgoUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdAogICAgIGlmIChmcm9tLnkoKSA9PSB0by55KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5j
b250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5j
b250ZXh0KCkpOwogCiAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgo
bV9zdHJldGNoeURhdGEuZXh0ZW5zaW9uKCkpOwogCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lk
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaWxsV2l0aFZlcnRpY2FsRXh0ZW5zaW9uR2x5cGgoUGFp
bnRJbmZvJiBpbmZvLCBjb25zdAogICAgIExheW91dFJlY3QgY2xpcEJvdW5kcyA9IGluZm8ucmVj
dDsKICAgICBjbGlwQm91bmRzLnNoaWZ0WUVkZ2VUbyhmcm9tLnkoKSk7CiAgICAgY2xpcEJvdW5k
cy5zaGlmdE1heFlFZGdlVG8odG8ueSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPmNsaXAoY2xpcEJv
dW5kcyk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAgIC8vIFRy
aW1taW5nIG1heSByZW1vdmUgdXAgdG8gdHdvIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIGV4
dGVuZGVyIGdseXBoLCBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHR3byBwaXhlbHMuCiAgICAgZmxvYXQg
b2Zmc2V0VG9HbHlwaFRvcCA9IGdseXBoQm91bmRzLnkoKSArIDI7CkBAIC0xODU2LDE0ICsxODU2
LDE0IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoSG9yaXpvbnRhbEV4dGVu
c2lvbkdseXBoKFBhaW50SW5mbyYgaW5mbywgY29uCiAgICAgaWYgKGZyb20ueCgpID09IHRvLngo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBDbGlwcGluZyB0aGUgZXh0ZW5kZXIg
cmVnaW9uIGhlcmUgYWxsb3dzIHVzIHRvIGRyYXcgdGhlIGJvdHRvbSBleHRlbmRlciBnbHlwaCBp
bnRvIHRoZQogICAgIC8vIHJlZ2lvbnMgb2YgdGhlIGJvdHRvbSBnbHlwaCB3aXRob3V0IHdvcnJ5
aW5nIGFib3V0IG92ZXJkcmF3IChoYWlyeSBwaXhlbHMpIGFuZCBzaW1wbGlmaWVzIGxhdGVyIGNs
aXBwaW5nLgogICAgIExheW91dFJlY3QgY2xpcEJvdW5kcyA9IGluZm8ucmVjdDsKICAgICBjbGlw
Qm91bmRzLnNoaWZ0WEVkZ2VUbyhmcm9tLngoKSk7CiAgICAgY2xpcEJvdW5kcy5zaGlmdE1heFhF
ZGdlVG8odG8ueCgpKTsKLSAgICBpbmZvLmNvbnRleHQtPmNsaXAoY2xpcEJvdW5kcyk7CisgICAg
aW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAgIC8vIFRyaW1taW5nIG1heSBy
ZW1vdmUgdXAgdG8gdHdvIHBpeGVscyBmcm9tIHRoZSBsZWZ0IG9mIHRoZSBleHRlbmRlciBnbHlw
aCwgc28gd2UgbW92ZSBpdCBsZWZ0IGJ5IHR3byBwaXhlbHMuCiAgICAgZmxvYXQgb2Zmc2V0VG9H
bHlwaExlZnQgPSAtMjsKQEAgLTE4ODUsMTEgKzE4ODUsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxP
cGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQKIHsKICAgICBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQp
OwogCi0gICAgaWYgKGluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklT
SUJMRSB8fCBtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd05vcm1hbCkKKyAgICBpZiAoaW5m
by5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBtX3N0cmV0
Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd05vcm1hbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgIGlu
Zm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgIGlmIChtX3N0cmV0Y2h5RGF0
YS5tb2RlKCkgPT0gRHJhd1NpemVWYXJpYW50KSB7CiAgICAgICAgIEFTU0VSVChtX3N0cmV0Y2h5
RGF0YS52YXJpYW50KCkuZ2x5cGgpOwpAQCAtMTg5OCw3ICsxODk4LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQKICAgICAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JUb3BMZWZ0ID0gY2VpbGVk
SW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKICAgICAgICAgRmxvYXRSZWN0IGds
eXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKICAg
ICAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4ob3BlcmF0b3JUb3BMZWZ0LngoKSwgb3Bl
cmF0b3JUb3BMZWZ0LnkoKSAtIGdseXBoQm91bmRzLnkoKSk7Ci0gICAgICAgIGluZm8uY29udGV4
dC0+ZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICptX3N0cmV0Y2h5RGF0YS52YXJp
YW50KCkuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbik7CisgICAgICAgIGluZm8u
Y29udGV4dCgpLmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqbV9zdHJldGNoeURh
dGEudmFyaWFudCgpLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3BlcmF0b3JPcmlnaW4pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXggZGYx
NGE4OThkNjVjYzg5ZGNjYzJkNjFmYTVhMGJkOTA3ZmVkMjEyYS4uYjY5MmY3NDY5ZWY2NjM5Mzlh
YTM2Mjg5NGM4NjU2M2VhMDBiNDlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcApA
QCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpjb21w
dXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsCiAKIHZvaWQgUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rp
c2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
c3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0aERhdGEoKSkgewpAQCAtMTI5
LDEzICsxMjksMTMgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBGbG9hdFBvaW50IGRp
cExlZnRQb2ludChzdGFydFggLSBnUmFkaWNhbERpcExlZnRQb2ludFhGcm9udCAqIGZyb250V2lk
dGgsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcmFkaWNhbERpcExlZnRQb2ludFlQb3MpOwog
ICAgIEZsb2F0UG9pbnQgbGVmdEVuZChzdGFydFggLSBmcm9udFdpZHRoLCBkaXBMZWZ0UG9pbnQu
eSgpICsgZ1JhZGljYWxMZWZ0RW5kWVNoaWZ0RW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkp
OwogCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhp
Y2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0
cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldExpbmVKb2luKE1pdGVySm9pbik7
Ci0gICAgaW5mby5jb250ZXh0LT5zZXRNaXRlckxpbWl0KHN0eWxlKCkuZm9udFNpemUoKSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsTGluZVRoaWNrbmVz
c0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRMaW5lSm9pbihNaXRlckpvaW4pOwor
ICAgIGluZm8uY29udGV4dCgpLnNldE1pdGVyTGltaXQoc3R5bGUoKS5mb250U2l6ZSgpKTsKIAog
ICAgIFBhdGggcm9vdDsKIApAQCAtMTQ3LDkgKzE0Nyw5IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFk
aWNhbE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWluCiAgICAgLy8gZHJhdyB0byBlbmQKICAgICByb290LmFkZExpbmVUbyhsZWZ0RW5kKTsKIAot
ICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChyb290KTsKKyAgICBpbmZvLmNvbnRleHQoKS5z
dHJva2VQYXRoKHJvb3QpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBtYXNrU3Rh
dGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIG1h
c2tTdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIEJ1aWxkIGEgbWFzayB0byBk
cmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSByb290LgogICAgIFBhdGggbWFzazsKQEAgLTE1OSwx
NyArMTU5LDE3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgbWFzay5hZGRMaW5lVG8o
ZGlwTGVmdFBvaW50KTsKICAgICBtYXNrLmFkZExpbmVUbyhGbG9hdFBvaW50KDIgKiBkaXBMZWZ0
UG9pbnQueCgpIC0gbGVmdEVuZC54KCksIDIgKiBkaXBMZWZ0UG9pbnQueSgpIC0gbGVmdEVuZC55
KCkpKTsKIAotICAgIGluZm8uY29udGV4dC0+Y2xpcChtYXNrKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5jbGlwKG1hc2spOwogCiAgICAgLy8gRHJhdyB0aGUgdGhpY2sgcGFydCBvZiB0aGUgcm9vdC4K
LSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbFRoaWNrTGluZVRo
aWNrbmVzc0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRM
aW5lQ2FwKFNxdWFyZUNhcCk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KGdSYWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zZXRMaW5lQ2FwKFNxdWFyZUNhcCk7CiAKICAgICBQYXRoIGxpbmU7
CiAgICAgbGluZS5tb3ZlVG8oYm90dG9tUG9pbnQpOwogICAgIGxpbmUuYWRkTGluZVRvKGRpcExl
ZnRQb2ludCk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnN0cm9rZVBhdGgobGluZSk7CisgICAgaW5m
by5jb250ZXh0KCkuc3Ryb2tlUGF0aChsaW5lKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggZWJlMmQz
NzM1N2NkMWU4NjliMWM5ZWMzYmVjMTAxZGMxMWI5YjJhZS4uYWM0YTE1ZGQ4NGE0OTM0NDJmMzQ1
OWM1YTQ1MDIxMzE0YTAxNzVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxSb290OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFp
bnRPZmZzZXQpOwogICAgIAotICAgIGlmIChpc0VtcHR5KCkgfHwgaW5mby5jb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBp
ZiAoaXNFbXB0eSgpIHx8IGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IGJhc2UgPSBiYXNlV3JhcHBlcigpOwpAQCAtMzI4LDE2ICszMjgsMTYgQEAgdm9pZCBSZW5kZXJN
YXRoTUxSb290OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZHJhdyB0aGUgcmFkaWNhbCBs
aW5lLgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250
ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250
ZXh0KCkpOwogCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobV9ydWxlVGhp
Y2tuZXNzKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsK
LSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9ydWxlVGhpY2tuZXNzKTsKKyAgICBpbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgLy8gVGhlIHByZWZlcnJlZCB3
aWR0aCBvZiB0aGUgcmFkaWNhbCBpcyBzb21ldGltZXMgaW5jb3JyZWN0LCBzbyB3ZSBkcmF3IGEg
c2xpZ2h0bHkgbG9uZ2VyIGxpbmUgdG8gZW5zdXJlIGl0IHRvdWNoZXMgdGhlIHJhZGljYWwgc3lt
Ym9sIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzI2KS4KICAg
ICBMYXlvdXRVbml0IHNpemVFcnJvciA9IHJhZGljYWwtPnRyYWlsaW5nU3BhY2VFcnJvcigpOwog
ICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRP
ZmZzZXQgKyBsb2NhdGlvbigpICsgYmFzZS0+bG9jYXRpb24oKSArIExheW91dFBvaW50KC1zaXpl
RXJyb3IsIC0obV92ZXJ0aWNhbEdhcCArIG1fcnVsZVRoaWNrbmVzcyAvIDIpKSk7Ci0gICAgaW5m
by5jb250ZXh0LT5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQo
TGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBiYXNlLT5vZmZzZXRXaWR0aCgp
ICsgc2l6ZUVycm9yLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBiYXNlLT5vZmZzZXRXaWR0aCgpICsgc2l6
ZUVycm9yLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ck1hdGhNTFJvb3RXcmFwcGVyPiBSZW5kZXJNYXRoTUxSb290V3JhcHBlcjo6Y3JlYXRlQW5vbnlt
b3VzV3JhcHBlcihSZW5kZXJNYXRoTUxSb290KiByZW5kZXJPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDU4ZWI5ZTI0MDY3NmExMTRkYzFiOTc2
ODc3NTYzNDJiMzkyZmI5NjkuLjY5MjIyODE5MThjNDgzMWU3Mjk5NTNiNjIwMjkxMjg4MjhkNTE4
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODIs
OCArMTgyLDggQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hh
cGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Qu
c2l6ZSgpKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAgICAgICBHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRS
ZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRS
ZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAogICAgICAgICBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVk
SW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAg
ICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRl
eCBhMWYxMDMwMDRhYjc4YmMzMjcxNTc3YzBmMTBlZDQ2M2I4ODUzZGE1Li5iMTM3NGUwOGIxMDg0
MzRkYWRlNTMyZDRkZjEyMGRmNzczNDFkNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBWZWN0
b3I8RmxvYXRTaXplPiBOaW5lUGllY2VJbWFnZTo6Y29tcHV0ZU5vbkludHJpbnNpY1RpbGVTY2Fs
ZXMoKQogICAgIHJldHVybiBWZWN0b3I8RmxvYXRTaXplPihNYXhQaWVjZSwgRmxvYXRTaXplKDEs
IDEpKTsKIH0KIAotdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IExheW91dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBMYXlvdXRTaXpl
JiBzb3VyY2UsICBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Is
IENvbXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAordm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91dFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBMYXlvdXRTaXplJiBzb3VyY2UsICBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAogewogICAgIFN0
eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBpbWFnZSgpOwogICAgIEFTU0VSVChzdHlsZUltYWdlICYm
IHN0eWxlSW1hZ2UtPmlzTG9hZGVkKCkpOwpAQCAtMjM4LDEzICsyMzgsMTMgQEAgdm9pZCBOaW5l
UGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFJlbmRl
ckVsZW1lbnQqIHJlbmQKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0Nv
cm5lclBpZWNlKHBpZWNlKSkgewotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1h
Z2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3Vy
Y2VSZWN0c1twaWVjZV0sIG9wKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3Vy
Y2VSZWN0c1twaWVjZV0sIG9wKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gaXNIb3Jpem9udGFsUGllY2UocGllY2Up
ID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPihob3Jpem9udGFsUnVsZSgpKSA6IEltYWdl
OjpTdHJldGNoVGlsZTsKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gaXNWZXJ0aWNh
bFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpUaWxlUnVsZT4odmVydGljYWxSdWxl
KCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNl
XSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBv
cCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwg
Y29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwg
dGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCA0YmVm
MWFmODdjZTRkNTMzMjkzZDAwZTMxODU0NTM0OWRhZDFkMDdmLi45YzMyZTVjYWE0MjFlYzdmYjJh
NDk5YzM2YTc5ODUyNDZkY2ViNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4gY29tcHV0ZUludHJpbnNpY1RpbGVTY2FsZXMoY29uc3Qg
VmVjdG9yPEZsb2F0UmVjdD4mIGRlc3RpbmF0aW9uUmVjdHMsIGNvbnN0IFZlY3RvcjxGbG9hdFJl
Y3Q+JiBzb3VyY2VSZWN0cywgRU5pbmVQaWVjZUltYWdlUnVsZSBoUnVsZSwgRU5pbmVQaWVjZUlt
YWdlUnVsZSB2UnVsZSk7CiAgICAgc3RhdGljIFZlY3RvcjxGbG9hdFNpemU+IGNvbXB1dGVOb25J
bnRyaW5zaWNUaWxlU2NhbGVzKCk7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCos
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IExheW91dFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzb3VyY2UsIGJvb2wgaW50cmluc2ljU291cmNl
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3BlcmF0b3IpIGNvbnN0OworICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRl
clN0eWxlJiwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUm
IHNvdXJjZSwgYm9vbCBpbnRyaW5zaWNTb3VyY2UsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBD
b21wb3NpdGVPcGVyYXRvcikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgRGF0YVJlZjxOaW5lUGll
Y2VJbWFnZURhdGE+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA4MjA3ZGY0MTliZjJhYzFiMTgwZmQ5OGZj
YjFiODBjNTJlOWY3NTE0Li4zOGVmYjJjOTk0YzZjZTM5ZDJiYjBlMjk5MDg2NjdkNTRmOWUwYzky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6OnNl
bGZXaWxsUGFpbnQoKQogCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNwZWM6IGdyb3Vw
cyB3L28gY2hpbGRyZW4gc3RpbGwgbWF5IHJlbmRlciBmaWx0ZXIgY29udGVudC4KQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5m
byhwYWludEluZm8pOwogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAg
ICAgICAgLy8gTGV0IHRoZSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciBzdWJjbGFzcyBjbGlw
IGlmIG5lY2Vzc2FyeQogICAgICAgICBhcHBseVZpZXdwb3J0Q2xpcChjaGlsZFBhaW50SW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlw
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNw
cAppbmRleCBjYjZkOWMzN2M4NjNiNzNlZGYzZjk1MGZlMDhiZWI4MTNjMDYxYzM1Li5mYWUzNzFh
ZWNmZGU4MWVhYjc3YmU0OTRmMTM5OTg2NTRlYmE3MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKQEAgLTkzLDE2ICs5MywxNiBA
QCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVyKCkKICAgICAg
ICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnkoKSwg
TGVuZ3RoTW9kZUhlaWdodCkpOwogfQogCi12b2lkIFJlbmRlclNWR0VsbGlwc2U6OmZpbGxTaGFw
ZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0VsbGlwc2U6
OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKG1f
dXNlUGF0aEZhbGxiYWNrKSB7CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29u
dGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29udGV4dC0+ZmlsbEVsbGlwc2Uo
bV9maWxsQm91bmRpbmdCb3gpOworICAgIGNvbnRleHQuZmlsbEVsbGlwc2UobV9maWxsQm91bmRp
bmdCb3gpOwogfQogCi12b2lkIFJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5z
dmdTdHlsZSgpLmhhc1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEwLDcg
KzExMCw3IEBAIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUo
Y29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29udGV4dC0+c3Ryb2tlRWxs
aXBzZShtX2ZpbGxCb3VuZGluZ0JveCk7CisgICAgY29udGV4dC5zdHJva2VFbGxpcHNlKG1fZmls
bEJvdW5kaW5nQm94KTsKIH0KIAogYm9vbCBSZW5kZXJTVkdFbGxpcHNlOjpzaGFwZURlcGVuZGVu
dFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAppbmRleCBiNTg3ZDFhYjMzMTQ3
MDMyMzJmNWQwZTA5YzE3OGNiNTVhOWNiNTI2Li45YTZmYzEyY2RlZGFiYTE1NTI1YzQ0ZGJhODkz
ZThjZjU5ZTZiNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0VsbGlwc2UuaApAQCAtNDIsOCArNDIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlz
RW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRl
clNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9r
ZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
c2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRS
dWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcAppbmRleCA0Njk4OTA3ZGY5OGU2OTIzMTU2NDI2ZDE2MjUyNGQwMGE3YjQw
ZmY1Li5iODc5MWFlNDAyMzQwNGUyY2JjMTMyZjVkZGExNDI2OWUwZDJhNzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgUmVuZGVy
U1ZHRm9yZWlnbk9iamVjdDo6Zm9yZWlnbk9iamVjdEVsZW1lbnQoKSBjb25zdAogCiB2b2lkIFJl
bmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VG
b3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGls
ZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3Jt
KGxvY2FsVHJhbnNmb3JtKCkpOwogCiAgICAgaWYgKFNWR1JlbmRlclN1cHBvcnQ6OmlzT3ZlcmZs
b3dIaWRkZW4oKnRoaXMpKQotICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1f
dmlld3BvcnQpOworICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdw
b3J0KTsKIAogICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dDsKICAgICBp
ZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDUwMjE2Nzk4
MTEzM2RjZmNhNmUxZTZlMjU0ODdhMzk1ZTNhYWQ1Y2YuLmI4YTE5NmU5NTEzNzAxZDU2YWJlYTZi
OTJjZmFkNGVkMzAzYWMzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFn
ZTo6bGF5b3V0KCkKIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCiAgICAgICAgIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCAhaW1hZ2VSZXNvdXJjZSgpLmhhc0ltYWdlKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTQwLDE0ICsxNDAsMTQgQEAgdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjaGlsZFBhaW50SW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY2hp
bGRQYWludEluZm8uY29udGV4dCgpKTsKICAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9y
bShtX2xvY2FsVHJhbnNmb3JtKTsKIAogICAgIGlmIChjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlRm9yZWdyb3VuZCkgewogICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRl
cmluZ0NvbnRleHQoKnRoaXMsIGNoaWxkUGFpbnRJbmZvKTsKIAogICAgICAgICBpZiAocmVuZGVy
aW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChzdHls
ZSgpLnN2Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJpbmcoKSA9PSBCUl9TVEFUSUMgICYmIHJlbmRl
cmluZ0NvbnRleHQuYnVmZmVyRm9yZWdyb3VuZChtX2J1ZmZlcmVkRm9yZWdyb3VuZCkpCisgICAg
ICAgICAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLmJ1ZmZlcmVkUmVuZGVyaW5nKCkgPT0gQlJf
U1RBVElDICYmIHJlbmRlcmluZ0NvbnRleHQuYnVmZmVyRm9yZWdyb3VuZChtX2J1ZmZlcmVkRm9y
ZWdyb3VuZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBwYWludEZv
cmVncm91bmQoY2hpbGRQYWludEluZm8pOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVuZGVy
U1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIAogICAgIGlt
YWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0
LCBzcmNSZWN0KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRl
QnVmZmVyZWRGb3JlZ3JvdW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1BhdGguY3BwCmluZGV4IDhlNDBkOGJlOTUyNzhmMjllNjZlNzZiNjE2N2U2NGMwZGM0
OTI1ZDYuLjFkMDEzYWQ3YzFlMGU4YzQwMTQwMDg2OGEyNzI1OTNhYmFjYTJkMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNjQsMTcg
KzY0LDE3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tl
Qm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBzdHJva2VCb3VuZGluZ0JveDsKIH0KIAot
c3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewotICAgIGlmIChHcmFkaWVudCogZ3JhZGllbnQgPSBjb250ZXh0LT5zdHJva2VHcmFk
aWVudCgpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50KTsKLSAg
ICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC0+c3Ryb2tlUGF0dGVybigpKQot
ICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CisgICAgaWYgKEdyYWRp
ZW50KiBncmFkaWVudCA9IGNvbnRleHQuc3Ryb2tlR3JhZGllbnQoKSkKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50KTsKKyAgICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0
ZXJuID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbFBh
dHRlcm4oKnBhdHRlcm4pOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KGNvbnRleHQtPnN0cm9rZUNvbG9yKCksIGNvbnRleHQtPnN0cm9rZUNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbnRleHQuc3Ryb2tlQ29sb3IoKSwgY29udGV4
dC5zdHJva2VDb2xvclNwYWNlKCkpOwogfQogCi12b2lkIFJlbmRlclNWR1BhdGg6OnN0cm9rZVNo
YXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUGF0aDo6
c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICgh
c3R5bGUoKS5zdmdTdHlsZSgpLmhhc1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtOTAsMTMgKzkwLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkp
CiAgICAgICAgIG5vblNjYWxpbmdUcmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3Jt
KCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQs
IHRydWUpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
LCB0cnVlKTsKICAgICB1c2VTdHJva2VTdHlsZVRvRmlsbChjb250ZXh0KTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgdXNlUGF0aCA9IHplcm9MZW5ndGhMaW5lY2FwUGF0aChtX3plcm9MZW5ndGhM
aW5lY2FwTG9jYXRpb25zW2ldKTsKICAgICAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkK
ICAgICAgICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1c2VQYXRoLCBub25T
Y2FsaW5nVHJhbnNmb3JtKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFBhdGgoKnVzZVBhdGgpOwor
ICAgICAgICBjb250ZXh0LmZpbGxQYXRoKCp1c2VQYXRoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKaW5kZXggMDhkODkxMTllYmJh
YzE5YjE1ZTA2YWZlY2M3YzVlZTM0MmMwNDkyOS4uYmJkMjJkYzViMGNiOWI4NWMxMmU4MTBiZWIw
NDQ0MWMyOWQ4NzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVV
cGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHJv
a2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYp
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRTdHJva2VaZXJvTGVuZ3RoU3VicGF0aCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAK
aW5kZXggMDNmYmJiOWQ1MDg5M2MyNTY3ODU1Y2JlMWEyM2IyNmE2MjFhMjg4Ny4uY2JjODhmN2Y2
NjkwYTk1Y2VlOWIzNjMxNzFkMjk1NmU3OGYwNjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUmVu
ZGVyU1ZHUmVjdDo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBS
ZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAor
dm9pZCBSZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogICAgIGlmIChtX3VzZVBhdGhGYWxsYmFjaykgewogICAgICAgICBSZW5kZXJTVkdT
aGFwZTo6ZmlsbFNoYXBlKGNvbnRleHQpOwpAQCAtMTA5LDE4ICsxMDksMTggQEAgdm9pZCBSZW5k
ZXJTVkdSZWN0OjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAg
IC8vIHNoYWRvdyBkcmF3aW5nIG1ldGhvZCwgd2hpY2ggZHJhd3MgYW4gZXh0cmEgc2hhZG93Lgog
ICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBzd2l0Y2hpbmcgb2ZmIHRoZSBleHRyYSBz
aGFkb3cuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
ODk5Ci0gICAgaWYgKGNvbnRleHQtPmhhc1NoYWRvdygpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNs
ZWFyU2hhZG93KCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94
KTsKKyAgICBpZiAoY29udGV4dC5oYXNTaGFkb3coKSkgeworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJT
aGFkb3coKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChtX2ZpbGxCb3VuZGluZ0JveCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KG1f
ZmlsbEJvdW5kaW5nQm94KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94
KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZWN0OjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5o
YXNWaXNpYmxlU3Ryb2tlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2
b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkg
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnRleHQtPnN0cm9rZVJlY3Qo
bV9maWxsQm91bmRpbmdCb3gsIHN0cm9rZVdpZHRoKCkpOworICAgIGNvbnRleHQuc3Ryb2tlUmVj
dChtX2ZpbGxCb3VuZGluZ0JveCwgc3Ryb2tlV2lkdGgoKSk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZH
UmVjdDo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKaW5kZXgg
OTcwMzAxYWE3OWY1YzNkZTJlYjMyODZkMzBkMTNmNWRlYjQxNDg5Zi4uMDI2ZWU2MzA5YjU5MWVj
MWYwYzM1Y2Q2MzIxNTc5NTI3OTJlNGVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZWN0LmgKQEAgLTQ4LDggKzQ4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sg
PyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgp
OyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRl
bnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBXaW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA4Yjlh
NjI4OWUyODIwNWM5MGIxZTA0ZTNjN2Q0OGJkNWExODVmYTU4Li41ZTQ3NzViZTBiNmEwMDRjNmY1
YzYyNmFjMzQxYTMyYjkxZTU3ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC02OSwxMCArNjks
MTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmQKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZU1vZGUsIHJlc291cmNlTW9kZSA9PSBBcHBseVRvRGVmYXVs
dE1vZGUpOwogCi0gICAgcmV0dXJuIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQocmVuZGVyZXIsIHJl
bmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCksIHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENv
b3JkaW5hdGVzKCksIGNvbnRleHQpOworICAgIHJldHVybiBhcHBseUNsaXBwaW5nVG9Db250ZXh0
KHJlbmRlcmVyLCByZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgpLCByZW5kZXJlci5yZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlcygpLCAqY29udGV4dCk7CiB9CiAKLWJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhbmltYXRlZExvY2FsVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgb2Jq
ZWN0Qm91bmRpbmdCb3gpCiB7CiAgICAgLy8gSWYgdGhlIGN1cnJlbnQgY2xpcC1wYXRoIGdldHMg
Y2xpcHBlZCBpdHNlbGYsIHdlIGhhdmUgdG8gZmFsbGJhY2sgdG8gbWFza2luZy4KICAgICBpZiAo
IXN0eWxlKCkuc3ZnU3R5bGUoKS5jbGlwcGVyUmVzb3VyY2UoKS5pc0VtcHR5KCkpCkBAIC0xMjMs
MTIgKzEyMywxMSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDbGlw
cGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgLy8gVGhlIFNWRyBzcGVj
aWZpY2F0aW9uIHdhbnRzIHVzIHRvIGNsaXAgZXZlcnl0aGluZywgaWYgY2xpcC1wYXRoIGRvZXNu
J3QgaGF2ZSBhIGNoaWxkLgogICAgIGlmIChjbGlwUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIGNs
aXBQYXRoLmFkZFJlY3QoRmxvYXRSZWN0KCkpOwotICAgIGNvbnRleHQtPmNsaXBQYXRoKGNsaXBQ
YXRoLCBjbGlwUnVsZSk7CisgICAgY29udGV4dC5jbGlwUGF0aChjbGlwUGF0aCwgY2xpcFJ1bGUp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6
YXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxv
YXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjph
cHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ2xpcHBlck1hc2tJbWFnZSYgY2xpcHBl
ck1hc2tJbWFnZSA9IGFkZFJlbmRlcmVyVG9DbGlwcGVyKHJlbmRlcmVyKTsKICAgICBib29sIHNo
b3VsZENyZWF0ZUNsaXBwZXJNYXNrSW1hZ2UgPSAhY2xpcHBlck1hc2tJbWFnZTsKQEAgLTE0NSwx
NyArMTQ0LDE1IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5n
VG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjCiAgICAgICAgIGlmICghY2xpcHBl
ck1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBHcmFwaGlj
c0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlck1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBBU1NFUlQobWFza0NvbnRleHQpOwotCi0gICAgICAgIG1hc2tDb250ZXh0LT5jb25jYXRD
VE0oYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIG1hc2tDb250
ZXh0LmNvbmNhdENUTShhbmltYXRlZExvY2FsVHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBjbGlw
UGF0aCBjYW4gYWxzbyBiZSBjbGlwcGVkIGJ5IGFub3RoZXIgY2xpcFBhdGguCiAgICAgICAgIGF1
dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5k
ZXJlcigqdGhpcyk7CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcjsK
ICAgICAgICAgYm9vbCBzdWNjZWVkZWQ7CiAgICAgICAgIGlmIChyZXNvdXJjZXMgJiYgKGNsaXBw
ZXIgPSByZXNvdXJjZXMtPmNsaXBwZXIoKSkpIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqbWFza0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1hc2tDb250ZXh0KTsKIAogICAgICAgICAg
ICAgaWYgKCFjbGlwcGVyLT5hcHBseUNsaXBwaW5nVG9Db250ZXh0KCp0aGlzLCBvYmplY3RCb3Vu
ZGluZ0JveCwgcmVwYWludFJlY3QsIG1hc2tDb250ZXh0KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xODAsMTQgKzE3NywxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmCiB7
CiAgICAgQVNTRVJUKGNsaXBwZXJNYXNrSW1hZ2UpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBt
YXNrQ29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQobWFz
a0NvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0NvbnRleHQgPSBjbGlwcGVyTWFz
a0ltYWdlLT5jb250ZXh0KCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWFza0NvbnRlbnRUcmFu
c2Zvcm1hdGlvbjsKICAgICBpZiAoY2xpcFBhdGhFbGVtZW50KCkuY2xpcFBhdGhVbml0cygpID09
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewogICAgICAg
ICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54
KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3Jt
YXRpb24uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJv
dW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENUTShtYXNr
Q29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgbWFza0NvbnRleHQuY29uY2F0Q1RNKG1h
c2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogICAgIC8vIFN3aXRjaCB0byBhIHBh
aW50IGJlaGF2aW9yIHdoZXJlIGFsbCBjaGlsZHJlbiBvZiB0aGlzIDxjbGlwUGF0aD4gd2lsbCBi
ZSByZW5kZXJlZCB1c2luZyBzcGVjaWFsIGNvbnN0cmFpbnRzOgpAQCAtMjI2LDcgKzIyMiw3IEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Uo
Y29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKICAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNTVkdTaGFw
ZSgpICYmICFyZW5kZXJlci0+aXNTVkdUZXh0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBtYXNrQ29udGV4dC0+c2V0RmlsbFJ1bGUobmV3Q2xpcFJ1bGUpOworICAgICAgICBt
YXNrQ29udGV4dC5zZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7CiAKICAgICAgICAgLy8gSW4gdGhl
IGNhc2Ugb2YgYSA8dXNlPiBlbGVtZW50LCB3ZSBvYnRhaW5lZCBpdHMgcmVuZGVyZXJlIGFib3Zl
LCB0byByZXRyaWV2ZSBpdHMgY2xpcFJ1bGUuCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcGFzcyB0
aGUgPHVzZT4gcmVuZGVyZXIgaXRzZWxmIHRvIHJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKCkg
dG8gYXBwbHkgaXQncyB4L3kvdHJhbnNmb3JtL2V0Yy4gdmFsdWVzIHdoZW4gcmVuZGVyaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmgKaW5kZXggNDQxNWI5NGIxM2E2MmRiNmZiYTYzY2QwNjJmZGQ0Yzg2Njk2YjQ1
Yy4uYjc3MDQ5NjUzZGFjZjQ1ZmMwMWU1MzZkOTYwZDU0YTE5NmY0ZWY4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBjbGlwUGF0aCBjYW4gYmUgY2xp
cHBlZCB0b28sIGJ1dCBkb24ndCBoYXZlIGEgYm91bmRpbmdCb3ggb3IgcmVwYWludFJlY3QuIFNv
IHdlIGNhbid0IGNhbGwKICAgICAvLyBhcHBseVJlc291cmNlIGRpcmVjdGx5IGFuZCB1c2UgdGhl
IHJlY3RzIGZyb20gdGhlIG9iamVjdCwgc2luY2UgdGhleSBhcmUgZW1wdHkgZm9yIFJlbmRlclNW
R1Jlc291cmNlcwogICAgIC8vIEZJWE1FOiBXZSBtYWRlIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQg
cHVibGljIGJlY2F1c2Ugd2UgY2Fubm90IGNhbGwgYXBwbHlSZXNvdXJjZSBvbiBIVE1MIGVsZW1l
bnRzIChpdCBhc3NlcnRzIG9uIFJlbmRlck9iamVjdDo6b2JqZWN0Qm91bmRpbmdCb3gpCi0gICAg
Ym9vbCBhcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQqKTsKKyAgICBib29sIGFwcGx5
Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJl
c291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2
aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBDbGlwcGVyUmVzb3VyY2VUeXBlOyB9CkBAIC02NCw3ICs2NCw3IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIjsgfQogCi0gICAgYm9vbCBwYXRo
T25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UmVjdCYpOworICAgIGJvb2wgcGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBib29s
IGRyYXdDb250ZW50SW50b01hc2tJbWFnZShjb25zdCBDbGlwcGVyTWFza0ltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCk7CiAgICAgdm9pZCBjYWxjdWxhdGVDbGlwQ29u
dGVudFJlcGFpbnRSZWN0KCk7CiAgICAgQ2xpcHBlck1hc2tJbWFnZSYgYWRkUmVuZGVyZXJUb0Ns
aXBwZXIoY29uc3QgUmVuZGVyT2JqZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGUzMTg2NWQ4
MDNjMTNkMTUwYjU3MWI2MWRlMDc4NjFiMDIxNzExZmMuLjA0ZWFkMWE4YmVhNjRhNGFmMzYzMDZh
ZmU3NTkxNmI5ZDA3Yzg4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xOTgsMTMgKzE5OCwxMiBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIC8vIFNldCB0aGUgcmVuZGVyaW5nIG1vZGUg
ZnJvbSB0aGUgcGFnZSdzIHNldHRpbmdzLgogICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0UmVu
ZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogc291cmNl
R3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKHNv
dXJjZUdyYXBoaWNDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHNvdXJjZUdyYXBoaWND
b250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4dCgpOwogICAKICAgICBmaWx0ZXJEYXRhLT5z
b3VyY2VHcmFwaGljQnVmZmVyID0gV1RGOjptb3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRl
ckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAKLSAgICBjb250ZXh0ID0gc291cmNlR3Jh
cGhpY0NvbnRleHQ7CisgICAgY29udGV4dCA9ICZzb3VyY2VHcmFwaGljQ29udGV4dDsKIAogICAg
IEFTU0VSVCghbV9maWx0ZXIuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAgICAgbV9maWx0ZXIuc2V0
KCZyZW5kZXJlciwgV1RGOjptb3ZlKGZpbHRlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmlu
ZGV4IGNiY2ExMDNlZjMwNTY5NzllZjQ2NWMyYjU3YjUzMzdhOThiNWQ3NGUuLmFjZWEyMzBjOWQ5
MjVjMzQ2ZTgwZDQyOGQ5OTgyYzU4Nzk1Y2Q4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAt
NjUsMTYgKzY1LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRl
eHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29uCiAgICAgaWYgKCFtYXNrSW1h
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0lt
YWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrSW1hZ2VD
b250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1h
Z2UtPmNvbnRleHQoKTsKICAgICBBU1NFUlQobWFza0ltYWdlKTsKICAgICBzYXZlZENvbnRleHQg
PSBjb250ZXh0OwotICAgIGNvbnRleHQgPSBtYXNrSW1hZ2VDb250ZXh0OworICAgIGNvbnRleHQg
PSAmbWFza0ltYWdlQ29udGV4dDsKICAgICBpbWFnZUJ1ZmZlciA9IFdURjo6bW92ZShtYXNrSW1h
Z2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9y
bSBjbGlwVG9UZXh0TWFzayhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlbmRl
ck9iamVjdCogb2JqZWN0LCBib29sIGJvdW5kaW5nQm94TW9kZSwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBncmFkaWVudFRyYW5zZm9ybSkKK3N0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNs
aXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2Jq
ZWN0KiBvYmplY3QsIGJvb2wgYm91bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGdyYWRpZW50VHJhbnNmb3JtKQogewogICAgIGF1dG8qIHRleHRSb290QmxvY2sgPSBSZW5kZXJT
VkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoKm9iamVjdCk7CiAgICAgQVNTRVJU
KHRleHRSb290QmxvY2spOwpAQCAtMjA3LDcgKzIwNiw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdy
YXBoCiAgICAgICAgICAgICBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9ybShncmFkaWVudFRyYW5z
Zm9ybSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCB0YXJnZXRSZWN0OwotICAgICAgICAgICAg
Z3JhZGllbnREYXRhLT5ncmFkaWVudC0+c2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjbGlwVG9U
ZXh0TWFzayhjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIsIGdy
YWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJ
TkdCT1gsIGdyYWRpZW50VHJhbnNmb3JtKSk7CisgICAgICAgICAgICBncmFkaWVudERhdGEtPmdy
YWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1RleHRNYXNrKCpjb250ZXh0
LCBtX2ltYWdlQnVmZmVyLCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIsIGdyYWRpZW50VW5pdHMoKSA9
PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gsIGdyYWRpZW50
VHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRp
ZW50RGF0YS0+Z3JhZGllbnQpOwogCiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0YXJn
ZXRSZWN0KTsKQEAgLTIyMSwxMyArMjIwLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudDo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoCiAg
ICAgICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgq
cGF0aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgICAgICBzaGFw
ZS0+ZmlsbFNoYXBlKGNvbnRleHQpOworICAgICAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUo
KmNvbnRleHQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRv
U3Ryb2tlTW9kZSkgewogICAgICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICAgICAgY29u
dGV4dC0+c3Ryb2tlUGF0aCgqcGF0aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAg
ICAgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICAg
ICAgc2hhcGUtPnN0cm9rZVNoYXBlKCpjb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
cmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFya2VyLmNwcAppbmRleCA4YzNiZGIzNDc1MTA0MDY5NjdiZTY4MzU2MTczMGMwMmY5ZTBmYWE2
Li42OWU1ZGIxNmZmMTFkNjFjMDA0YzVjYjViMDEwZTUwMjkxNmI2MDA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2Vy
LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpyZW1v
dmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYgY2xpZW50LCBib29sCiB2b2lkIFJlbmRl
clNWR1Jlc291cmNlTWFya2VyOjphcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mIHBhaW50SW5m
bykKIHsKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykp
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAobV92aWV3cG9ydCk7CiB9CiAKIEZsb2F0UmVjdCBSZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlcjo6bWFya2VyQm91bmRhcmllcyhjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIG1hcmtlclRyYW5zZm9ybWF0aW9uKSBjb25zdApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmRyYXcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGluZm8o
cGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmlu
Zm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGlu
Zm8uY29udGV4dCgpKTsKICAgICBpbmZvLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAg
UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChpbmZvLCBJbnRQb2ludCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKaW5kZXggNTMwZGEzZDZmYWVkNGM3NWM3YWVmYWFmYjBjNDBlZDE1ODdjOGM1NS4uYWQz
N2Q0N2M5ODQ2YWMwMDUzZGE1MmM1NGRkOWFmNGMzMWQ1Y2YwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAK
QEAgLTgwLDE0ICs4MCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGlmICghbWFz
a2VyRGF0YS0+bWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb250ZXh0LCBhYnNvbHV0ZVRyYW5zZm9y
bSwgcmVwYWludFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgbWlzc2luZ01hc2tlckRhdGEp
OworICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKCpjb250ZXh0LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgcmVwYWludFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgbWlz
c2luZ01hc2tlckRhdGEpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbmRlclNWR1Jl
c291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2Vy
RGF0YSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1h
Z2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQobWFza0ltYWdlQ29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250
ZXh0KCk7CiAKICAgICAvLyBFdmVudHVhbGx5IGFkanVzdCB0aGUgbWFzayBpbWFnZSBjb250ZXh0
IGFjY29yZGluZyB0byB0aGUgdGFyZ2V0IG9iamVjdEJvdW5kaW5nQm94LgogICAgIEFmZmluZVRy
YW5zZm9ybSBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uOwpAQCAtOTUsNyArOTQsNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSogbWFza2VyRGF0YSwgQwogICAgICAgICBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3gg
PSBvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAgICAgIG1hc2tDb250ZW50VHJhbnNm
b3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdC
b3gueSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi5zY2FsZU5vblVuaWZv
cm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkp
OwotICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zv
cm1hdGlvbik7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuY29uY2F0Q1RNKG1hc2tDb250ZW50
VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGNvbnRlbnQgaW50byB0
aGUgSW1hZ2VCdWZmZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggNGJjMGQ5NTEyYjI5MGM3Mjdk
N2E3N2M4YjI0NTg0OTk5YzFmNjliZS4uOWY5NWRkMjZiMzFiMGRlOTQ4ODVlMzk1NDM2N2FiZmE0
MjRkODBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTg5LDEzICsxODksMTMgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
LCBHcmFwaGljc0NvbnRleHQKICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAg
c2hhcGUtPmZpbGxTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUo
KmNvbnRleHQpOwogICAgIH0KICAgICBpZiAocmVzb3VyY2VNb2RlICYgQXBwbHlUb1N0cm9rZU1v
ZGUpIHsKICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRo
KCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBzaGFwZS0+c3Ry
b2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRl
eHQpOwogICAgIH0KIAogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKQEAgLTIzNywxNiArMjM3LDE1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
OjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiB0aWxlSW1hZ2VDb250ZXh0
ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKHRpbGVJbWFnZUNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4
dCgpOwogCiAgICAgLy8gVGhlIGltYWdlIGJ1ZmZlciByZXByZXNlbnRzIHRoZSBmaW5hbCByZW5k
ZXJlZCBzaXplLCBzbyB0aGUgY29udGVudCBoYXMgdG8gYmUgc2NhbGVkICh0byBhdm9pZCBwaXhl
bGF0aW9uKS4KLSAgICB0aWxlSW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY2xhbXBlZEFi
c29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVzLndpZHRoKCksCisg
ICAgdGlsZUltYWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUoY2xhbXBlZEFic29sdXRlVGlsZUJv
dW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVzLndpZHRoKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLmhl
aWdodCgpIC8gdGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkpKTsKIAogICAgIC8vIEFwcGx5IHRpbGUg
aW1hZ2UgdHJhbnNmb3JtYXRpb25zLgogICAgIGlmICghdGlsZUltYWdlVHJhbnNmb3JtLmlzSWRl
bnRpdHkoKSkKLSAgICAgICAgdGlsZUltYWdlQ29udGV4dC0+Y29uY2F0Q1RNKHRpbGVJbWFnZVRy
YW5zZm9ybSk7CisgICAgICAgIHRpbGVJbWFnZUNvbnRleHQuY29uY2F0Q1RNKHRpbGVJbWFnZVRy
YW5zZm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVudFRyYW5zZm9ybWF0aW9uOwog
ICAgIGlmIChhdHRyaWJ1dGVzLnBhdHRlcm5Db250ZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAK
aW5kZXggZjUwMWFiZjQ0YjIxNDE2NzlhNmI3YTY5OGVmYjE3MTg1YmU1NzAyOS4uZmI4OGZjOGI0
YjI4Yjc4NTlkZDhmMjE1YjkwMjUxZDdlMGQyODNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNw
cApAQCAtODEsMTMgKzgxLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjpw
b3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250CiAgICAgICAgIGlm
IChwYXRoKQogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFBhdGgoKnBhdGgpOwogICAgICAgICBl
bHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoY29udGV4dCk7Cisg
ICAgICAgICAgICBzaGFwZS0+ZmlsbFNoYXBlKCpjb250ZXh0KTsKICAgICB9CiAgICAgaWYgKHJl
c291cmNlTW9kZSAmIEFwcGx5VG9TdHJva2VNb2RlKSB7CiAgICAgICAgIGlmIChwYXRoKQogICAg
ICAgICAgICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqcGF0aCk7CiAgICAgICAgIGVsc2UgaWYgKHNo
YXBlKQotICAgICAgICAgICAgc2hhcGUtPnN0cm9rZVNoYXBlKGNvbnRleHQpOworICAgICAgICAg
ICAgc2hhcGUtPnN0cm9rZVNoYXBlKCpjb250ZXh0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDM0YzdmNjg4NmY1
MWIyMTMyNTllOGRkY2NiZmViZDBhZDIwZDNkZTAuLmMyZmFhYTI1ZTE0MzJmNjBmNzg5MThiMGY4
NTc1ZTQ1MjdhOGE0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFp
bnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERvbid0IHBhaW50LCBpZiB0aGUgY29udGV4dCBl
eHBsaWNpdGx5IGRpc2FibGVkIGl0LgotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU1ZHIG91dGxpbmVzIGFyZSBwYWludGVk
IGR1cmluZyBQYWludFBoYXNlRm9yZWdyb3VuZC4KQEAgLTI1NywxOCArMjU3LDE4IEBAIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50CiAKICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgUGFpbnRJbmZv
IGJlY2F1c2UgYXBwbHlUcmFuc2Zvcm0gd2lsbCBtb2RpZnkgdGhlIGRhbWFnZSByZWN0LgogICAg
IFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAgIGNoaWxkUGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKKyAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwog
CiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwCiAgICAgaWYgKHNob3VsZEFwcGx5
Vmlld3BvcnRDbGlwKCkpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoc25h
cHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgY3VycmVudFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50KCkpKSk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKHNuYXBwZWRJbnRSZWN0KG92ZXJmbG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIGN1cnJlbnRS
ZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSkpOwogCiAgICAgLy8gQ29udmVydCBmcm9tIGNvbnRh
aW5lciBvZmZzZXRzIChodG1sIHJlbmRlcmVycykgdG8gYSByZWxhdGl2ZSB0cmFuc2Zvcm0gKHN2
ZyByZW5kZXJlcnMpLgogICAgIC8vIFRyYW5zZm9ybSBmcm9tIG91ciBwYWludCBjb250YWluZXIn
cyBjb29yZGluYXRlIHN5c3RlbSB0byBvdXIgbG9jYWwgY29vcmRzLgogICAgIEludFBvaW50IGFk
anVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQpOwogICAgIGNo
aWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRpb24o
YWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSAqIGxvY2Fs
VG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKSk7CiAKLSAgICAvLyBTVkdSZW5kZXJpbmdDb250ZXh0IG11
c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB3ZSByZXN0b3JlIHRoZSBjaGlsZFBhaW50SW5mby5jb250
ZXh0LCBiZWNhdXNlIGEgZmlsdGVyIG1heSBoYXZlCisgICAgLy8gU1ZHUmVuZGVyaW5nQ29udGV4
dCBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgd2UgcmVzdG9yZSB0aGUgY2hpbGRQYWludEluZm8u
Y29udGV4dCgpLCBiZWNhdXNlIGEgZmlsdGVyIG1heSBoYXZlCiAgICAgLy8gY2hhbmdlZCB0aGUg
Y29udGV4dCBhbmQgaXQgaXMgb25seSByZXZlcnRlZCB3aGVuIHRoZSBTVkdSZW5kZXJpbmdDb250
ZXh0IGRlc3RydWN0b3IgZmluaXNoZXMgYXBwbHlpbmcgdGhlIGZpbHRlci4KICAgICB7CiAgICAg
ICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dDsKQEAgLTI4NSw3ICsyODUs
NyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludAogICAgICAgICB9CiAgICAgfQogCi0gICAgY2hp
bGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQoKS5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6d2lsbEJlRGVzdHJveWVk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAK
aW5kZXggYTE5Y2RiYjZjNWIxN2MzYjdlZWM4NjZjZDQ1NTVhZjY2NjU2MGViMC4uOTc3NTk4ZThj
NmU2OWVjM2NjMzFjNDQzYmU4NmM3MzIzNDE4MmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTkyLDEyICs5MiwxMiBAQCBib29s
IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gcGF0aCgpLmlzRW1w
dHkoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgocGF0aCgp
KTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hh
cGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
IHsKICAgICBBU1NFUlQobV9wYXRoKTsKICAgICBQYXRoKiB1c2VQYXRoID0gbV9wYXRoLmdldCgp
OwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9r
ZSgpKQogICAgICAgICB1c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgodXNlUGF0aCwgbm9u
U2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpKTsKIAotICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoKnVz
ZVBhdGgpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aCgqdXNlUGF0aCk7CiB9CiAKIGJvb2wgUmVu
ZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpCkBAIC0yMjUsOCArMjI1LDkgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2hvdWxk
R2VuZXJhdGVNYXJrZXJQb3NpdGlvbnMoKSBjb25zdAogICAgIHJldHVybiByZXNvdXJjZXMtPm1h
cmtlclN0YXJ0KCkgfHwgcmVzb3VyY2VzLT5tYXJrZXJNaWQoKSB8fCByZXNvdXJjZXMtPm1hcmtl
ckVuZCgpOwogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFJlbmRlclNWR1No
YXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQm
IG9yaWdpbmFsQ29udGV4dCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSAmb3Jp
Z2luYWxDb250ZXh0OwogICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7CiAgICAgaWYgKFJlbmRlclNW
R1Jlc291cmNlKiBmaWxsUGFpbnRpbmdSZXNvdXJjZSA9IFJlbmRlclNWR1Jlc291cmNlOjpmaWxs
UGFpbnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGZhbGxiYWNrQ29sb3IpKSB7CiAgICAgICAg
IGlmIChmaWxsUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGNv
bnRleHQsIEFwcGx5VG9GaWxsTW9kZSkpCkBAIC0yNDAsOCArMjQxLDkgQEAgdm9pZCBSZW5kZXJT
VkdTaGFwZTo6ZmlsbFNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXgKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBl
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9p
ZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBH
cmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSAmb3JpZ2luYWxDb250ZXh0OwogICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7CiAg
ICAgaWYgKFJlbmRlclNWR1Jlc291cmNlKiBzdHJva2VQYWludGluZ1Jlc291cmNlID0gUmVuZGVy
U1ZHUmVzb3VyY2U6OnN0cm9rZVBhaW50aW5nUmVzb3VyY2UoKnRoaXMsIHN0eWxlLCBmYWxsYmFj
a0NvbG9yKSkgewogICAgICAgICBpZiAoc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNv
dXJjZSgqdGhpcywgc3R5bGUsIGNvbnRleHQsIEFwcGx5VG9TdHJva2VNb2RlKSkKQEAgLTI1NSwx
MiArMjU3LDEyIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250CiAgICAgfQogfQogCi12b2lkIFJl
bmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lk
IFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNv
bnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Y29udGV4dCwgZmFsc2UpOwogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpIHsKICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIG5vblNjYWxpbmdUcmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tl
VHJhbnNmb3JtKCk7CiAgICAgICAgIGlmICghc2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dChu
b25TY2FsaW5nVHJhbnNmb3JtLCBzdGF0ZVNhdmVyKSkKQEAgLTI3NSwxMCArMjc3LDEwIEBAIHZv
aWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VNYXJrZXJzKFBhaW50SW5mbyYgY2hpbGRQYWlu
dEluZm8pCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaW50T3JkZXIuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgc3dpdGNoIChwYWludE9yZGVyLmF0KGkpKSB7CiAgICAgICAgIGNhc2Ug
UGFpbnRUeXBlRmlsbDoKLSAgICAgICAgICAgIGZpbGxTaGFwZShzdHlsZSgpLCBjaGlsZFBhaW50
SW5mby5jb250ZXh0KTsKKyAgICAgICAgICAgIGZpbGxTaGFwZShzdHlsZSgpLCBjaGlsZFBhaW50
SW5mby5jb250ZXh0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFpbnRU
eXBlU3Ryb2tlOgotICAgICAgICAgICAgc3Ryb2tlU2hhcGUoY2hpbGRQYWludEluZm8uY29udGV4
dCk7CisgICAgICAgICAgICBzdHJva2VTaGFwZShjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFpbnRUeXBlTWFya2VyczoKICAgICAg
ICAgICAgIGlmICghbV9tYXJrZXJQb3NpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjkwLDcgKzI5Miw3
IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VNYXJrZXJzKFBhaW50SW5mbyYgY2hp
bGRQYWludEluZm8pCiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0
LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZAogICAgICAgICB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoKTsKQEAgLTI5OCw3ICszMDAsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICByZXR1cm47CiAK
ICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGlsZFBhaW50SW5mby5jb250
ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKG1fbG9jYWxUcmFuc2Zv
cm0pOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKSB7CkBAIC0zMDcsNyArMzA5LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgaWYgKHJlbmRl
cmluZ0NvbnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBT
VkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgICAgICAg
ICBpZiAoc3ZnU3R5bGUuc2hhcGVSZW5kZXJpbmcoKSA9PSBTUl9DUklTUEVER0VTKQotICAgICAg
ICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyhmYWxz
ZSk7CisgICAgICAgICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLnNldFNob3VsZEFu
dGlhbGlhcyhmYWxzZSk7CiAKICAgICAgICAgICAgIGZpbGxTdHJva2VNYXJrZXJzKGNoaWxkUGFp
bnRJbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5oCmluZGV4IDYxMWJmZDE0YjlkZDY0OGMyZjFkNzM0MmI4YWJmMjlhMmJlYWVl
YTIuLjE0YzMxY2NmYzYwNDM2OWU4NjBlZGExN2YxNTY0OWI4N2I2ZTZmZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTU0LDggKzU0LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBv
dmVycmlkZSBmaW5hbCB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biBtX25lZWRzQm91bmRhcmllc1VwZGF0ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Ry
YW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9
IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNv
bnN0OwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0ID0gMDsKIAogICAgIGJv
b2wgaGFzUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5nZXQoKTsgfQpAQCAtMTE0LDkgKzEx
NCw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1hcmtlclJlY3QoZmxvYXQgc3Ryb2tlV2lk
dGgpIGNvbnN0OwogICAgIHZvaWQgcHJvY2Vzc01hcmtlclBvc2l0aW9ucygpOwogCi0gICAgdm9p
ZCBmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqKTsKLSAgICB2
b2lkIHN0cm9rZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0Kik7Ci0g
ICAgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGZpbGxTaGFw
ZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc3Ryb2tl
U2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2b2lkIHN0
cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZvaWQgZmlsbFN0cm9rZU1hcmtlcnMo
UGFpbnRJbmZvJik7CiAgICAgdm9pZCBkcmF3TWFya2VycyhQYWludEluZm8mKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggNGUwOGYz
ZjlhYTI0ZmQxOGJkMjJjOGM1OThiYjlhZDllZWZkNDk2OS4uOTJiNzFlOWM2NDg1MTA4Y2UyYzdi
ZjM0NzU0MGM4N2E2MmQ2NWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQp
IGNvbnMKIAogdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlRm9yZWdyb3VuZApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAg
IHJldHVybjsKIAogICAgIFBhaW50SW5mbyBibG9ja0luZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmJsb2NrSW5mby5jb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoYmxvY2tJbmZvLmNvbnRleHQo
KSk7CiAgICAgYmxvY2tJbmZvLmFwcGx5VHJhbnNmb3JtKGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KSk7CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGJsb2NrSW5mbywgTGF5b3V0UG9pbnQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lci5jcHAKaW5kZXggMDI3MDNkM2RmOTYwNmM4Y2JiYWZiOWE1ZWQ1MDA1
ODZjMjJmZDhkNS4uNzgzN2ViNTI0ZWUyNWMyNGJhOGZhZjAzZGIwZGY3ZWNjZmFiNWE1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBSZW5kZXJTVkdWaWV3
cG9ydENvbnRhaW5lcjo6ZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpCiB2b2lkIFJlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mIHBhaW50
SW5mbykKIHsKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhp
cykpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXAobV92aWV3cG9ydCk7CiB9CiAKIHZvaWQgUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OmNhbGNWaWV3cG9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcAppbmRleCBkMWY0YzVjM2VhZjlm
M2I5MTI4ZjNjM2I5OTczMjM3MjBmM2U2ZmIzLi5kODliY2ZlNmUzZjZjMDVkM2IwZGM5ZjRmZGI0
NzJmYjhlNDE1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lRmxvd0JveC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
dm9pZCBTVkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZv
JiBwYWludEluZm8pCiB7CiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7Ci0g
ICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKTsKKyAgICBB
U1NFUlQoIXBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKTsKIAogICAgIFBh
aW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwogICAgIGZvciAoSW5saW5lQm94KiBj
aGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkg
ewpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
U2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVk
KCkpOwogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0KHJlbmRlcmVy
KCksIHBhaW50SW5mbywgU1ZHUmVuZGVyaW5nQ29udGV4dDo6U2F2ZUdyYXBoaWNzQ29udGV4dCk7
CiAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRl
eCA4M2IxNzVkZmM1NDg0ZWE1ZWIxNWRjMjk2MWI4MmMwNmNhY2M0ZWM4Li5lZjhmMThlZWNlY2Fi
YTkxNjI1NGJiNzNmMjE2NDAzNzMyZmE1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTIyMCwxMyArMjIwLDEzIEBAIHZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvKQogICAgICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50
Q29vcmRpbmF0ZXMoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQ
b3NpdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgICAgICBmcmFnbWVudC5idWlsZEZyYWdtZW50VHJhbnNmb3JtKGZyYWdtZW50VHJhbnNmb3Jt
KTsKICAgICAgICAgaWYgKCFmcmFnbWVudFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKKyAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3Jt
KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKGJhY2tncm91bmRD
b2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZp
bGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3Rh
cnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9y
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZp
bGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChm
cmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5
bGUpLCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgbV9w
YWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9EZWZhdWx0TW9kZTsKICAgICB9CkBAIC0yODgs
MTcgKzI4OCwxNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICBTVkdUZXh0RnJh
Z21lbnQmIGZyYWdtZW50ID0gbV90ZXh0RnJhZ21lbnRzLmF0KGkpOwogICAgICAgICBBU1NFUlQo
IW1fcGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgZnJh
Z21lbnQuYnVpbGRGcmFnbWVudFRyYW5zZm9ybShmcmFnbWVudFRyYW5zZm9ybSk7CiAgICAgICAg
IGlmICghZnJhZ21lbnRUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQotICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNvbmNhdENUTShmcmFnbWVudFRyYW5zZm9ybSk7CisgICAgICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNvbmNhdENUTShmcmFnbWVudFRyYW5zZm9ybSk7CiAKICAgICAg
ICAgLy8gU3BlYzogQWxsIHRleHQgZGVjb3JhdGlvbnMgZXhjZXB0IGxpbmUtdGhyb3VnaCBzaG91
bGQgYmUgZHJhd24gYmVmb3JlIHRoZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tlZDsgdGh1cywg
dGhlIHRleHQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZXNlIGRlY29yYXRpb25zLgogICAgICAg
ICBpbnQgZGVjb3JhdGlvbnMgPSBzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwogICAg
ICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKLSAgICAgICAg
ICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVGV4dERlY29yYXRpb25VbmRl
cmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8u
Y29udGV4dCgpLCBUZXh0RGVjb3JhdGlvblVuZGVybGluZSwgZnJhZ21lbnQpOwogICAgICAgICBp
ZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lKQotICAgICAgICAgICAgcGFp
bnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBm
cmFnbWVudCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQo
KSwgVGV4dERlY29yYXRpb25PdmVybGluZSwgZnJhZ21lbnQpOwogCiAgICAgICAgIGF1dG8gcGFp
bnRPcmRlciA9IHN0eWxlLnN2Z1N0eWxlKCkucGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaW50T3JkZXIuc2l6ZSgpOyArK2kpIHsK
QEAgLTMwNywxMyArMzA3LDEzIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAg
ICAgICAgaWYgKCFoYXNGaWxsKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0ZpbGxNb2RlIHwgQXBw
bHlUb1RleHRNb2RlOwotICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4
dCwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRT
ZWxlY3RlZFRleHRPbmx5KTsKKyAgICAgICAgICAgICAgICBwYWludFRleHQocGFpbnRJbmZvLmNv
bnRleHQoKSwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwg
cGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgUGFpbnRUeXBlU3Ryb2tlOgogICAgICAgICAgICAgICAgIGlmICghaGFzVmlzaWJs
ZVN0cm9rZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
bV9wYWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9TdHJva2VNb2RlIHwgQXBwbHlUb1RleHRN
b2RlOwotICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCwgJnN0eWxl
LCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRl
eHRPbmx5KTsKKyAgICAgICAgICAgICAgICBwYWludFRleHQocGFpbnRJbmZvLmNvbnRleHQoKSwg
JnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxl
Y3RlZFRleHRPbmx5KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
UGFpbnRUeXBlTWFya2VyczoKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMyMiw3ICsz
MjIsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAgICAgIC8vIFNwZWM6IExpbmUt
dGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJv
a2VkOyB0aHVzLCB0aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0aGUgdGV4
dC4KICAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkK
LSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVGV4dERlY29y
YXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9u
KHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gsIGZyYWdtZW50
KTsKIAogICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2Rl
OwogICAgIH0KQEAgLTM3OSwxNCArMzc5LDEyIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cmVs
ZWFzZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QKIAog
Ym9vbCBTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIFRleHRS
dW4mIHRleHRSdW4sIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBib29sIGFjcXVpcmVkUmVz
b3VyY2UgPSBhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBzY2FsaW5nRmFjdG9yLCBw
YXJlbnQoKS0+cmVuZGVyZXIoKSwgc3R5bGUpOwotICAgIGlmICghYWNxdWlyZWRSZXNvdXJjZSkK
KyAgICBpZiAoIWFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxpbmdGYWN0b3Is
IHBhcmVudCgpLT5yZW5kZXJlcigpLCBzdHlsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
I2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgLy8gU1ZHIEZvbnRzIG5lZWQgYWNjZXNzIHRvIHRo
ZSBwYWludGluZyByZXNvdXJjZSB1c2VkIHRvIGRyYXcgdGhlIGN1cnJlbnQgdGV4dCBjaHVuay4K
LSAgICBUZXh0UnVuOjpSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0ID0gdGV4dFJ1
bi5yZW5kZXJpbmdDb250ZXh0KCk7Ci0gICAgaWYgKHJlbmRlcmluZ0NvbnRleHQpCisgICAgaWYg
KGF1dG8qIHJlbmRlcmluZ0NvbnRleHQgPSB0ZXh0UnVuLnJlbmRlcmluZ0NvbnRleHQoKSkKICAg
ICAgICAgc3RhdGljX2Nhc3Q8U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQqPihyZW5kZXJpbmdD
b250ZXh0KS0+c2V0QWN0aXZlUGFpbnRpbmdSZXNvdXJjZShtX3BhaW50aW5nUmVzb3VyY2UpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGV4dFJ1bik7CkBAIC00OTksNyArNDk3LDcgQEAgc3Rh
dGljIGlubGluZSBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZmluZFJlbmRlcmVyRGVmaW5pbmluZ1Rl
eHREZWNvcmF0aW9uKElubGluZUYKICAgICByZXR1cm4gKnJlbmRlcmVyOwogfQogCi12b2lkIFNW
R0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21l
bnQpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYgZnJhZ21lbnQpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS50ZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCgpID09IFRleHREZWNvcmF0aW9uTm9uZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNTI3LDcgKzUyNSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9u
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24KICAgICB9CiB9CiAKLXZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JiBmcmFnbWVudCwgUmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25SZW5kZXJl
cikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiBmcmFnbWVudCwgUmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25S
ZW5kZXJlcikKIHsKICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiAgICAgQVNTRVJU
KG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKQEAgLTU0OSwx
MSArNTQ3LDExIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0
eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlCiAgICAgZmxvYXQgd2lkdGggPSBm
cmFnbWVudC53aWR0aDsKICAgICBjb25zdCBGb250TWV0cmljcyYgc2NhbGVkRm9udE1ldHJpY3Mg
PSBzY2FsZWRGb250LmZvbnRNZXRyaWNzKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBpZiAoc2NhbGluZ0ZhY3RvciAhPSAxKSB7CiAgICAg
ICAgIHdpZHRoICo9IHNjYWxpbmdGYWN0b3I7CiAgICAgICAgIGRlY29yYXRpb25PcmlnaW4uc2Nh
bGUoc2NhbGluZ0ZhY3Rvciwgc2NhbGluZ0ZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSgxIC8gc2NhbGluZ0ZhY3RvciwgMSAvIHNjYWxpbmdGYWN0b3IpKTsKKyAgICAg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5n
RmFjdG9yKSk7CiAgICAgfQogCiAgICAgZGVjb3JhdGlvbk9yaWdpbi5tb3ZlKDAsIC1zY2FsZWRG
b250TWV0cmljcy5mbG9hdEFzY2VudCgpICsgcG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9uKGRl
Y29yYXRpb24sIHNjYWxlZEZvbnRNZXRyaWNzLCB0aGlja25lc3MpKTsKQEAgLTU2MSwxMSArNTU5
LDEyIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGgu
YWRkUmVjdChGbG9hdFJlY3QoZGVjb3JhdGlvbk9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCB0aGlj
a25lc3MpKSk7CiAKLSAgICBpZiAoYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgc2Nh
bGluZ0ZhY3RvciwgZGVjb3JhdGlvblJlbmRlcmVyLCAmZGVjb3JhdGlvblN0eWxlKSkKLSAgICAg
ICAgcmVsZWFzZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgJnBhdGgpOworICAgIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dFB0ciA9ICZjb250ZXh0OworICAgIGlmIChhY3F1aXJlUGFpbnRpbmdS
ZXNvdXJjZShjb250ZXh0UHRyLCBzY2FsaW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsICZk
ZWNvcmF0aW9uU3R5bGUpKQorICAgICAgICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0
UHRyLCAmcGF0aCk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNo
YWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFRleHRS
dW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBzdGFydFBv
c2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4
dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBpbnQg
c3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKQogewogICAgIGZsb2F0IHNjYWxpbmdGYWN0
b3IgPSByZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rv
cik7CkBAIC01ODMsMjQgKzU4MiwyNSBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4
dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bAogCiAgICAg
RmxvYXRSZWN0IHNoYWRvd1JlY3QoRmxvYXRQb2ludCh0ZXh0T3JpZ2luLngoKSwgdGV4dE9yaWdp
bi55KCkgLSBzY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKSksIHRleHRTaXpl
KTsKIAorICAgIEdyYXBoaWNzQ29udGV4dCogdXNlZENvbnRleHQgPSAmY29udGV4dDsKICAgICBk
byB7Ci0gICAgICAgIGlmICghcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhj
b250ZXh0LCBzY2FsaW5nRmFjdG9yLCB0ZXh0UnVuLCBzdHlsZSkpCisgICAgICAgIGlmICghcHJl
cGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyh1c2VkQ29udGV4dCwgc2NhbGluZ0Zh
Y3RvciwgdGV4dFJ1biwgc3R5bGUpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgewot
ICAgICAgICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dBcHBsaWVyKCpjb250ZXh0LCBzaGFkb3cs
IHNoYWRvd1JlY3QpOworICAgICAgICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dBcHBsaWVyKCp1
c2VkQ29udGV4dCwgc2hhZG93LCBzaGFkb3dSZWN0KTsKIAogICAgICAgICAgICAgaWYgKCFzaGFk
b3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2F2
ZSgpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBzY2FsaW5nRmFj
dG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOworICAgICAgICAgICAgICAgIHVzZWRDb250ZXh0LT5z
YXZlKCk7CisgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBzY2Fs
aW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOwogCi0gICAgICAgICAgICBzY2FsZWRGb250
LmRyYXdUZXh0KGNvbnRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4
dHJhT2Zmc2V0KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHNj
YWxlZEZvbnQuZHJhd1RleHQoKnVzZWRDb250ZXh0LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgc2hh
ZG93QXBwbGllci5leHRyYU9mZnNldCgpLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiAK
ICAgICAgICAgICAgIGlmICghc2hhZG93QXBwbGllci5kaWRTYXZlQ29udGV4dCgpKQotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgICAgICAgICB1c2VkQ29udGV4
dC0+cmVzdG9yZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzdG9yZUdyYXBoaWNzQ29udGV4
dEFmdGVyVGV4dFBhaW50aW5nKGNvbnRleHQsIHRleHRSdW4pOworICAgICAgICByZXN0b3JlR3Jh
cGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmcodXNlZENvbnRleHQsIHRleHRSdW4pOwogCiAg
ICAgICAgIGlmICghc2hhZG93KQogICAgICAgICAgICAgYnJlYWs7CkBAIC02MDksNyArNjA5LDcg
QEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWwKICAgICB9IHdoaWxlIChzaGFkb3cpOwogfQogCi12
b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBT
VkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNl
bGVjdGVkVGV4dE9ubHkpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHNlbGVj
dGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBib29sIGhhc1NlbGVj
dGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpCiB7CiAgICAgQVNTRVJUKHN0eWxlKTsK
ICAgICBBU1NFUlQoc2VsZWN0aW9uU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCAyM2MwNzY5ZmU5ZmE3NzYyOGJlZDAxZWEz
Y2IwYzc5ZTVhYWNmYjY4Li4xN2VjZWYzYWNhOTQ1ZjcxYjJlNWZjODQ2YTkzMTVkMmZmY2ExMTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
aApAQCAtNzcsMTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBwcmVwYXJlR3JhcGhpY3ND
b250ZXh0Rm9yVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBmbG9hdCBzY2FsaW5nRmFj
dG9yLCBUZXh0UnVuJiwgUmVuZGVyU3R5bGUqKTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0Nv
bnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQqJiwgVGV4dFJ1biYpOwogCi0g
ICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiwgVGV4dERlY29yYXRpb24s
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYpOwotICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0
eWxlKEdyYXBoaWNzQ29udGV4dCosIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKLSAgICB2b2lk
IHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCosIFJlbmRlclN0eWxlKiwgVGV4
dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5k
UG9zaXRpb24pOwotICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlclN0
eWxlKiwgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQm
LCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAgIHZv
aWQgcGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmKTsKKyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShH
cmFwaGljc0NvbnRleHQmLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50Jiwg
UmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25SZW5kZXJlcik7CisgICAgdm9pZCBwYWlu
dFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJTdHlsZSosIFRleHRSdW4m
LCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0
aW9uKTsKKyAgICB2b2lkIHBhaW50VGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJTdHlsZSos
IFJlbmRlclN0eWxlKiBzZWxlY3Rpb25TdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgYm9v
bCBoYXNTZWxlY3Rpb24sIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKIAogICAgIHZpcnR1
YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91
dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyMTJh
MTY2ZWMwY2YyMDc2ZmJjNzNiMTEzNGFlOGJiYmQ2NjM3M2YwLi5mYjlhMDNjNTk1ZTYzNjA2OTZh
ZTFiM2ZkNWZiMjE0Y2YzNjRmMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU2LDE5ICs1NiwyMCBAQCBTVkdS
ZW5kZXJpbmdDb250ZXh0Ojp+U1ZHUmVuZGVyaW5nQ29udGV4dCgpCiAKICAgICBpZiAobV9yZW5k
ZXJpbmdGbGFncyAmIEVuZEZpbHRlckxheWVyKSB7CiAgICAgICAgIEFTU0VSVChtX2ZpbHRlcik7
Ci0gICAgICAgIG1fZmlsdGVyLT5wb3N0QXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgbV9wYWlu
dEluZm8tPmNvbnRleHQsIEFwcGx5VG9EZWZhdWx0TW9kZSwgMCwgMCk7Ci0gICAgICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0ID0gbV9zYXZlZENvbnRleHQ7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dFB0ciA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOworICAgICAgICBtX2ZpbHRl
ci0+cG9zdEFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIGNvbnRleHRQdHIsIEFwcGx5VG9EZWZh
dWx0TW9kZSwgMCwgMCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCptX3NhdmVk
Q29udGV4dCk7CiAgICAgICAgIG1fcGFpbnRJbmZvLT5yZWN0ID0gbV9zYXZlZFBhaW50UmVjdDsK
ICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJpbmdGbGFncyAmIEVuZE9wYWNpdHlMYXllcikKLSAg
ICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAg
IGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kU2hhZG93TGF5ZXIpCi0gICAgICAgIG1fcGFpbnRJ
bmZvLT5jb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBtX3BhaW50SW5m
by0+Y29udGV4dCgpLmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICBpZiAobV9yZW5kZXJp
bmdGbGFncyAmIFJlc3RvcmVHcmFwaGljc0NvbnRleHQpCi0gICAgICAgIG1fcGFpbnRJbmZvLT5j
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkucmVzdG9y
ZSgpOwogfQogCiB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0Nv
bnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBOZWVk
c0dyYXBoaWNzQ29udGV4dFNhdmUgbmVlZHNHcmFwaGljc0NvbnRleHRTYXZlKQpAQCAtODUsNyAr
ODYsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRl
bnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogCiAgICAgLy8gV2UgbmVlZCB0byBzYXZl
IC8gcmVzdG9yZSB0aGUgY29udGV4dCBldmVuIGlmIHRoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQu
CiAgICAgaWYgKG5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9PSBTYXZlR3JhcGhpY3NDb250ZXh0
KSB7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IFJl
c3RvcmVHcmFwaGljc0NvbnRleHQ7CiAgICAgfQogCkBAIC0xMTEsMjQgKzExMiwyNCBAQCB2b2lk
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIFBhaQogCiAgICAgaWYgKG9wYWNpdHkgPCAxIHx8IHNoYWRvdyB8fCBo
YXNCbGVuZE1vZGUgfHwgaXNvbGF0ZU1hc2tGb3JCbGVuZGluZyB8fCBoYXNJc29sYXRpb24pIHsK
ICAgICAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gbV9yZW5kZXJlci0+cmVwYWludFJlY3RJ
bkxvY2FsQ29vcmRpbmF0ZXMoKTsKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmNsaXAo
cmVwYWludFJlY3QpOworICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmNsaXAocmVwYWlu
dFJlY3QpOwogCiAgICAgICAgIGlmIChvcGFjaXR5IDwgMSB8fCBoYXNCbGVuZE1vZGUgfHwgaXNv
bGF0ZU1hc2tGb3JCbGVuZGluZyB8fCBoYXNJc29sYXRpb24pIHsKIAogICAgICAgICAgICAgaWYg
KGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jb21wb3NpdGVPcGVyYXRp
b24oKSwgc3R5bGUuYmxlbmRNb2RlKCkpOworICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5j
b250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY29t
cG9zaXRlT3BlcmF0aW9uKCksIHN0eWxlLmJsZW5kTW9kZSgpKTsKIAotICAgICAgICAgICAgbV9w
YWludEluZm8tPmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisgICAg
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3Bh
Y2l0eSk7CiAKICAgICAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUpCi0gICAgICAgICAgICAgICAg
bV9wYWludEluZm8tPmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BhaW50SW5mby0+
Y29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAg
ICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9w
YWludEluZm8tPmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFs
KTsKIAogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBFbmRPcGFjaXR5TGF5ZXI7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoc2hhZG93KSB7Ci0gICAgICAgICAgICBtX3BhaW50SW5m
by0+Y29udGV4dC0+c2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngoKSksIHJv
dW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigp
LCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQt
PmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29u
dGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5kVG9JbnQoc2hhZG93LT54KCkpLCByb3VuZFRv
SW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVn
aW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0g
RW5kU2hhZG93TGF5ZXI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDcsNyArMTQ4LDcgQEAgdm9p
ZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBQYWkKICAgICAgICAgICAgIHJlZmVyZW5jZUJveC5zZXRIZWlnaHQo
dmlld3BvcnRTaXplLmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZWZl
cmVuY2VCb3ggPSByZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgpOwotICAgICAgICBtX3BhaW50
SW5mby0+Y29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVm
ZXJlbmNlQm94KSwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5j
b250ZXh0KCkuY2xpcFBhdGgoY2xpcFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNl
Qm94KSwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CiAgICAgfQogCiAgICAgYXV0byogcmVzb3VyY2Vz
ID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKCptX3JlbmRl
cmVyKTsKQEAgLTE2MSwyNiArMTYyLDM1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJl
cGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAKICAg
ICBpZiAoIWlzUmVuZGVyaW5nTWFzaykgewogICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIqIG1hc2tlciA9IHJlc291cmNlcy0+bWFza2VyKCkpIHsKLSAgICAgICAgICAgIGlmICgh
bWFza2VyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgbV9wYWludEluZm8tPmNv
bnRleHQsIEFwcGx5VG9EZWZhdWx0TW9kZSkpCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHRQdHIgPSAmbV9wYWludEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJvb2wg
cmVzdWx0ID0gbWFza2VyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgY29udGV4
dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5zZXRD
b250ZXh0KCpjb250ZXh0UHRyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAgIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlciogY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpOwogICAgIGlmICghY2xpcFBh
dGhPcGVyYXRpb24gJiYgY2xpcHBlcikgewotICAgICAgICBpZiAoIWNsaXBwZXItPmFwcGx5UmVz
b3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBtX3BhaW50SW5mby0+Y29udGV4dCwgQXBwbHlUb0Rl
ZmF1bHRNb2RlKSkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gJm1fcGFp
bnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gY2xpcHBlci0+YXBwbHlS
ZXNvdXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIGNvbnRleHRQdHIsIEFwcGx5VG9EZWZhdWx0TW9k
ZSk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCpjb250ZXh0UHRyKTsKKyAgICAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFp
c1JlbmRlcmluZ01hc2spIHsKICAgICAgICAgbV9maWx0ZXIgPSByZXNvdXJjZXMtPmZpbHRlcigp
OwogICAgICAgICBpZiAobV9maWx0ZXIpIHsKLSAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0g
bV9wYWludEluZm8tPmNvbnRleHQ7CisgICAgICAgICAgICBtX3NhdmVkQ29udGV4dCA9ICZtX3Bh
aW50SW5mby0+Y29udGV4dCgpOwogICAgICAgICAgICAgbV9zYXZlZFBhaW50UmVjdCA9IG1fcGFp
bnRJbmZvLT5yZWN0OwogICAgICAgICAgICAgLy8gUmV0dXJuIHdpdGggZmFsc2UgaGVyZSBtYXkg
bWVhbiB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZHJhdyB0aGUgY29udGVudAogICAgICAgICAgICAg
Ly8gKGJlY2F1c2UgaXQgd2FzIGVpdGhlciBkcmF3biBiZWZvcmUgb3IgZW1wdHkpIGJ1dCB3ZSBz
dGlsbCBuZWVkIHRvIGFwcGx5IHRoZSBmaWx0ZXIuCiAgICAgICAgICAgICBtX3JlbmRlcmluZ0Zs
YWdzIHw9IEVuZEZpbHRlckxheWVyOwotICAgICAgICAgICAgaWYgKCFtX2ZpbHRlci0+YXBwbHlS
ZXNvdXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRv
RGVmYXVsdE1vZGUpKQorICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0g
Jm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IG1fZmls
dGVyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlU
b0RlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCpjb250
ZXh0UHRyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgLy8gU2luY2Ugd2UncmUgY2FjaGluZyB0aGUgcmVzdWx0aW5nIGJp
dG1hcCBhbmQgZG8gbm90IGludmFsaWRhdGUgaXQgb24gcmVwYWludCByZWN0CkBAIC0yNTQsOSAr
MjY0LDggQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJh
bnNmb3JtOwogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSkudHJhbnNsYXRlKC1wYWludFJlY3Qu
bG9jYXRpb24oKSkubXVsdGlwbHkoYWJzb2x1dGVUcmFuc2Zvcm0pOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0KiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIEFTU0VS
VChpbWFnZUNvbnRleHQpOwotICAgIGltYWdlQ29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7
CisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpOworICAgIGltYWdlQ29udGV4dC5jb25jYXRDVE0odHJhbnNmb3JtKTsKIAogICAgIHJldHVy
biBpbWFnZUJ1ZmZlcjsKIH0KQEAgLTI3NCwxMSArMjgzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBHcmFwaGljc0NvbnRleHQqIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFn
ZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogCiAgICAgLy8gQ29tcGVuc2F0ZSBy
b3VuZGluZyBlZmZlY3RzLCBhcyB0aGUgYWJzb2x1dGUgdGFyZ2V0IHJlY3QgaXMgdXNpbmcgZmxv
YXRpbmctcG9pbnQgbnVtYmVycyBhbmQgdGhlIGltYWdlIGJ1ZmZlciBzaXplIGlzIGludGVnZXIu
Ci0gICAgaW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUodW5jbGFtcGVkU2l6ZS53aWR0aCgp
IC8gdGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNsYW1wZWRTaXplLmhlaWdodCgpIC8gdGFyZ2V0UmVj
dC5oZWlnaHQoKSkpOworICAgIGltYWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUodW5jbGFtcGVk
U2l6ZS53aWR0aCgpIC8gdGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNsYW1wZWRTaXplLmhlaWdodCgp
IC8gdGFyZ2V0UmVjdC5oZWlnaHQoKSkpOwogCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQpA
QCAtMjg2LDcgKzI5NCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiB2b2lkIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFn
ZSwgUmVuZGVyRWxlbWVudCYgaXRlbSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdWJ0cmVlQ29u
dGVudFRyYW5zZm9ybWF0aW9uKQogewogICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgQVNTRVJUKGlt
YWdlLT5jb250ZXh0KCkpOwogCiAgICAgUGFpbnRJbmZvIGluZm8oaW1hZ2UtPmNvbnRleHQoKSwg
TGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCksIFBhaW50UGhhc2VGb3JlZ3JvdW5kLCBQYWludEJl
aGF2aW9yTm9ybWFsKTsKIApAQCAtMzAwLDE4ICszMDcsMTcgQEAgdm9pZCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIFJl
bmRlckUKICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBzYXZlZENvbnRlbnRUcmFuc2Zvcm1h
dGlvbjsKIH0KIAotdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVU
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCit2b2lkIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwg
Ym9vbCBzYWZlVG9DbGVhcikKIHsKLSAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGlt
YWdlQnVmZmVyKTsKIAogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRhcmdldFJlY3QgPSBjYWxjdWxh
dGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAg
Ly8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRp
bmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNv
IHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0
ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKGFic29s
dXRlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgY29udGV4dC0+Y2xpcFRvSW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7Ci0gICAgY29udGV4dC0+Y29u
Y2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKKyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0
ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOworICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7CisgICAgY29udGV4dC5jb25jYXRD
VE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywg
d2l0aCBvYmplY3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8g
dXNlIGluIGNhY2hpbmcgdGhlCiAgICAgLy8gcmVzdWx0aW5nIGltYWdlIGJ1ZmZlciBhcyB0aGUg
cGFyZW50IHJlc291cmNlIGFscmVhZHkgY2FjaGVzIHRoZSByZXN1bHQuCkBAIC0zMzUsNyArMzQx
LDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKIAogICAgIC8vIEludmFsaWRhdGUgYW4gZXhp
c3RpbmcgYnVmZmVyIGlmIHRoZSBzY2FsZSBpcyBub3QgY29ycmVjdC4KICAgICBpZiAoaW1hZ2VC
dWZmZXIpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG1fcGFpbnRJbmZv
LT5jb250ZXh0LT5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmlj
ZVNjYWxlKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZp
Y2VTY2FsZSk7CiAgICAgICAgIEludFNpemUgZXhwYW5kZWRCb3VuZGluZ0JveCA9IGV4cGFuZGVk
SW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBJbnRTaXplIGJ1ZmZlclNpemUo
c3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRpbmdCb3gud2lkdGgoKSAqIHRyYW5z
Zm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0Jv
eC5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKICAgICAgICAgaWYgKGJ1ZmZlclNp
emUgIT0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpKQpAQCAtMzQ0LDE3ICszNTAsMTcgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5k
IHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewot
ICAgICAgICBpZiAoKGltYWdlQnVmZmVyID0gbV9wYWludEluZm8tPmNvbnRleHQtPmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIHRydWUp
KSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZmZXJlZFJlbmRlcmluZ0NvbnRl
eHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICAgICAgYnVmZmVyZWRSZW5kZXJp
bmdDb250ZXh0LT50cmFuc2xhdGUoLWJvdW5kaW5nQm94LngoKSwgLWJvdW5kaW5nQm94LnkoKSk7
CisgICAgICAgIGlmICgoaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dCgpLmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIHRy
dWUpKSkgeworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBidWZmZXJlZFJlbmRlcmluZ0Nv
bnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgICAgICAgICAgYnVmZmVyZWRSZW5k
ZXJpbmdDb250ZXh0LnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgp
KTsKICAgICAgICAgICAgIFBhaW50SW5mbyBidWZmZXJlZEluZm8oKm1fcGFpbnRJbmZvKTsKLSAg
ICAgICAgICAgIGJ1ZmZlcmVkSW5mby5jb250ZXh0ID0gYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0
OworICAgICAgICAgICAgYnVmZmVyZWRJbmZvLnNldENvbnRleHQoYnVmZmVyZWRSZW5kZXJpbmdD
b250ZXh0KTsKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNWR0ltYWdlPigqbV9yZW5kZXJl
cikucGFpbnRGb3JlZ3JvdW5kKGJ1ZmZlcmVkSW5mbyk7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJv
dW5kaW5nQm94KTsKKyAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDlhMjNjMjUxMjNiODdlYzI5Y2ZkYTBjZWM3ZWMy
NDU2NTk4NDNkOGEuLjQ2Mzg0YzQ4ZWEwZjhhZTRhODhiNjVjMTI3ZTE4ZGNmMWZjM2NmYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXIqLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgc3Rh
dGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CisgICAg
c3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CiAK
ICAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9udFNpemVTY2FsaW5nRmFjdG9yKGNv
bnN0IFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY2FsY3VsYXRl
VHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uc3QgUmVuZGVyT2Jq
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5l
Qm94LmNwcAppbmRleCBkMWE3ODM4OWExNTY0YzQ0YWUxMjZkNGQxZWFhMWUwNjQ5N2VjYmIzLi44
YjgwMTRiNjAxM2ZmY2JjMGJkMDA0NjMxYTgzZDUwNmVmMDhjNWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgUmVuZGVyU1ZHVGV4dCYgU1ZHUm9vdElubGluZUJveDo6cmVuZGVyU1ZHVGV4dCgpCiB2
b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQsIExheW91dFVuaXQpCiB7CiAgICAg
QVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7Ci0gICAgQVNTRVJUKCFwYWludEluZm8u
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKTsKKyAgICBBU1NFUlQoIXBhaW50SW5mby5jb250
ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKTsKIAogICAgIGJvb2wgaXNQcmludGluZyA9IHJlbmRl
clNWR1RleHQoKS5kb2N1bWVudCgpLnByaW50aW5nKCk7CiAgICAgYm9vbCBoYXNTZWxlY3Rpb24g
PSAhaXNQcmludGluZyAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0
aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZGQzZjI4NTU3ZTA2MjczODZkMDVj
YmYzZWMwZjZmOTdmNTU2N2U1YS4uZmQ2OWZhNDg5Mjk1YjAyZGIwMGNiZjVkYmUzNzAyNWM2MWM4
MDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVu
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2MiwxMyArMjYyLDEzIEBAIHN0ZDo6
dW5pcXVlX3B0cjxHbHlwaFRvUGF0aFRyYW5zbGF0b3I+IFNWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVHbHlwaFRvCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHR2x5cGhU
b1BhdGhUcmFuc2xhdG9yPih0ZXh0UnVuLCBnbHlwaEJ1ZmZlciwgcG9pbnQsICpzdmdGb250RGF0
YSwgKmZvbnRFbGVtZW50LCBmcm9tLCBudW1HbHlwaHMsIHNjYWxlLCBpc1ZlcnRpY2FsVGV4dCk7
CiB9CiAKLXZvaWQgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlwaEJ1ZmZl
ciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkgY29uc3QKK3ZvaWQgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBH
bHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBhdXRvIGFjdGl2ZVBhaW50aW5nUmVzb3Vy
Y2UgPSB0aGlzLT5hY3RpdmVQYWludGluZ1Jlc291cmNlKCk7CiAgICAgaWYgKCFhY3RpdmVQYWlu
dGluZ1Jlc291cmNlKSB7CiAgICAgICAgIC8vIFRPRE86IFdlJ3JlIG9ubHkgc3VwcG9ydGluZyBz
aW1wbGUgZmlsbGVkIEhUTUwgdGV4dCBzbyBmYXIuCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
U29saWRDb2xvciogc29saWRQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnNo
YXJlZFNvbGlkUGFpbnRpbmdSZXNvdXJjZSgpOwotICAgICAgICBzb2xpZFBhaW50aW5nUmVzb3Vy
Y2UtPnNldENvbG9yKGNvbnRleHQtPmZpbGxDb2xvcigpKTsKKyAgICAgICAgc29saWRQYWludGlu
Z1Jlc291cmNlLT5zZXRDb2xvcihjb250ZXh0LmZpbGxDb2xvcigpKTsKICAgICAgICAgYWN0aXZl
UGFpbnRpbmdSZXNvdXJjZSA9IHNvbGlkUGFpbnRpbmdSZXNvdXJjZTsKICAgICB9CiAKQEAgLTI3
NywxNSArMjc3LDE2IEBAIHZvaWQgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGCiAKICAgICBBU1NFUlQoYWN0
aXZlUGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3Vy
Y2VNb2RlID0gY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVTdHJva2UgPyBB
cHBseVRvU3Ryb2tlTW9kZSA6IEFwcGx5VG9GaWxsTW9kZTsKLSAgICBmb3IgKGF1dG8gdHJhbnNs
YXRvciA9IGNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcigqZm9udCwgbnVsbHB0ciwgZ2x5cGhC
dWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOyB0cmFuc2xhdG9yLT5jb250YWluc01vcmVQ
YXRocygpOyB0cmFuc2xhdG9yLT5hZHZhbmNlKCkpIHsKKyAgICBHcmFwaGljc0NvbnRleHQqIHVz
ZWRDb250ZXh0ID0gJmNvbnRleHQ7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNb2RlIHJlc291cmNl
TW9kZSA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVTdHJva2UgPyBBcHBs
eVRvU3Ryb2tlTW9kZSA6IEFwcGx5VG9GaWxsTW9kZTsKKyAgICBmb3IgKGF1dG8gdHJhbnNsYXRv
ciA9IGNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcihmb250LCBudWxscHRyLCBnbHlwaEJ1ZmZl
ciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7IHRyYW5zbGF0b3ItPmNvbnRhaW5zTW9yZVBhdGhz
KCk7IHRyYW5zbGF0b3ItPmFkdmFuY2UoKSkgewogICAgICAgICBQYXRoIGdseXBoUGF0aCA9IHRy
YW5zbGF0b3ItPnBhdGgoKTsKLSAgICAgICAgaWYgKGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPmFw
cGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBzdHlsZSwgY29udGV4dCwgcmVzb3VyY2VNb2Rl
KSkgewotICAgICAgICAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4dC0+c3Ryb2tl
VGhpY2tuZXNzKCk7CisgICAgICAgIGlmIChhY3RpdmVQYWludGluZ1Jlc291cmNlLT5hcHBseVJl
c291cmNlKGVsZW1lbnRSZW5kZXJlciwgc3R5bGUsIHVzZWRDb250ZXh0LCByZXNvdXJjZU1vZGUp
KSB7CisgICAgICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRo
aWNrbmVzcygpOwogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRl
cmVyKCkpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJv
a2VUaGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigpKS5z
Y2FsaW5nRmFjdG9yKCkpOwotICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9z
dEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJjZU1vZGUsICZn
bHlwaFBhdGgsIG51bGxwdHIpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tu
ZXNzKHN0cm9rZVRoaWNrbmVzcyk7CisgICAgICAgICAgICAgICAgdXNlZENvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVU
ZXh0PihyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOworICAgICAgICAgICAgYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCB1c2VkQ29u
dGV4dCwgcmVzb3VyY2VNb2RlLCAmZ2x5cGhQYXRoLCBudWxscHRyKTsKKyAgICAgICAgICAgIHVz
ZWRDb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA1MDFiOWM4ZmYxMDUyNGE0OThhNmZl
Nzc3Y2I2OTk5Nzc0MWVkYzA0Li45ZDg1ZmJlN2JhYTllZDQ5NzUxODI2ODZiZTNiMWU5MTdhMDY0
OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFjdGl2ZVBhaW50aW5nUmVzb3VyY2UoUmVuZGVyU1ZHUmVzb3VyY2UqIG9iamVjdCkg
eyBtX2FjdGl2ZVBhaW50aW5nUmVzb3VyY2UgPSBvYmplY3Q7IH0KIAogICAgIHZpcnR1YWwgR2x5
cGhEYXRhIGdseXBoRGF0YUZvckNoYXJhY3Rlcihjb25zdCBGb250Q2FzY2FkZSYsIFdpZHRoSXRl
cmF0b3ImLCBVQ2hhcjMyIGNoYXJhY3RlciwgYm9vbCBtaXJyb3IsIGludCBjdXJyZW50Q2hhcmFj
dGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCwgU3RyaW5nJiBub3JtYWxpemVkU3BhY2VzU3Ry
aW5nQ2FjaGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBp
bnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5
cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IHRvLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBmbG9hdCBmbG9hdFdpZHRoVXNpbmdTVkdGb250KGNvbnN0IEZv
bnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGludCYgY2hhcnNDb25zdW1lZCwgU3RyaW5nJiBn
bHlwaE5hbWUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseVNWR0tlcm5p
bmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBmcm9tKSBj
b25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggOTYxZTE5ODllNTcyYmJiNzJhNmUzZWU5YmFhMjQwOGExZTY1ODRiOC4uMDgx
NTNjMWE5M2ZhMzZmMjVlMzA2OTY5NjE4NzUzMWZiYTBjNTkwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgSW50U2l6ZSBTVkdJ
bWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoMzAwLCAxNTAp
OwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKQEAgLTE4NCwx
NCArMTg0LDE0IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKQogfQogI2VuZGlmCiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRh
aW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgU1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IHpvb21lZENvbnRhaW5lclJlY3QgPSBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluZXJTaXplKTsKICAgICB6b29tZWRDb250YWluZXJS
ZWN0LnNjYWxlKHpvb20pOwogCiAgICAgLy8gVGhlIEltYWdlQnVmZmVyIHNpemUgbmVlZHMgdG8g
YmUgc2NhbGVkIHRvIG1hdGNoIHRoZSBmaW5hbCByZXNvbHV0aW9uLgotICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBGbG9hdFNpemUgaW1hZ2VCdWZmZXJT
Y2FsZSA9IEZsb2F0U2l6ZSh0cmFuc2Zvcm0ueFNjYWxlKCksIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSk7CiAgICAgQVNTRVJUKGltYWdl
QnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgU1ZHSW1hZ2U6
OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRTaXplCiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIu
CiAgICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgp
LCBjb250YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJl
Y3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5v
cm1hbCk7Ci0gICAgaWYgKGNvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNrKCkpCisgICAgaWYgKGNv
bnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1h
Z2UoRG9udENvcHlCYWNraW5nU3RvcmUsIFVuc2NhbGVkKTsKQEAgLTIxNywxMSArMjE3LDExIEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgQWZmaW5lVHJhbnNmb3JtIHVuc2NhbGVkUGF0
dGVyblRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICB1bnNjYWxlZFBhdHRlcm5UcmFu
c2Zvcm0uc2NhbGUoMSAvIGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgMSAvIGltYWdlQnVmZmVy
U2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgY29udGV4dC0+c2V0RHJhd0x1bWluYW5jZU1hc2soZmFs
c2UpOworICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwogICAgIGltYWdl
LT5kcmF3UGF0dGVybihjb250ZXh0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2Rl
KTsKIH0KIAotdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yMjksMTUgKzIyOSwxNSBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbAogICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lVmlldygpOwog
ICAgIEFTU0VSVCh2aWV3KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOwotICAgIGNvbnRleHQtPmNsaXAoZW5jbG9zaW5nSW50UmVjdChk
c3RSZWN0KSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKIAot
ICAgIGZsb2F0IGFscGhhID0gY29udGV4dC0+YWxwaGEoKTsKKyAgICBmbG9hdCBhbHBoYSA9IGNv
bnRleHQuYWxwaGEoKTsKICAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lM
YXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9
IEJsZW5kTW9kZU5vcm1hbCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWly
ZXNUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKGFscGhhKTsKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIGNvbnRleHQuYmVn
aW5UcmFuc3BhcmVuY3lMYXllcihhbHBoYSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgfQog
CiAgICAgRmxvYXRTaXplIHNjYWxlKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpOwpAQCAtMjQ3LDggKzI0Nyw4IEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgRmxvYXRTaXplIHRvcExlZnRPZmZzZXQoc3Jj
UmVjdC5sb2NhdGlvbigpLngoKSAqIHNjYWxlLndpZHRoKCksIHNyY1JlY3QubG9jYXRpb24oKS55
KCkgKiBzY2FsZS5oZWlnaHQoKSk7CiAgICAgRmxvYXRQb2ludCBkZXN0T2Zmc2V0ID0gZHN0UmVj
dC5sb2NhdGlvbigpIC0gdG9wTGVmdE9mZnNldDsKIAotICAgIGNvbnRleHQtPnRyYW5zbGF0ZShk
ZXN0T2Zmc2V0LngoKSwgZGVzdE9mZnNldC55KCkpOwotICAgIGNvbnRleHQtPnNjYWxlKHNjYWxl
KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkZXN0T2Zmc2V0LngoKSwgZGVzdE9mZnNldC55KCkp
OworICAgIGNvbnRleHQuc2NhbGUoc2NhbGUpOwogCiAgICAgdmlldy0+cmVzaXplKGNvbnRhaW5l
clNpemUoKSk7CiAKQEAgLTI1OCwxMCArMjU4LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
CiAgICAgaWYgKHZpZXctPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHZpZXctPmxheW91dCgpOwog
Ci0gICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQtPmNsaXBCb3Vu
ZHMoKSwgZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSkpOworICAgIHZpZXctPnBhaW50KGNvbnRl
eHQsIGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZW5jbG9zaW5nSW50UmVjdChz
cmNSZWN0KSkpOwogCiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXll
cikKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgY29u
dGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggNmRmNWExYTRlOGUy
YjU0NDQyMTViNzc1ZTE0NTAwZjVjYmZhNDcwNC4uZmFlOGQwYzgzZTkyNGE2NzRmMDExMjE2Yjgy
ZTVlYjNiZjIwNDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAg
LTkxLDkgKzkxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFNWR0ltYWdl
KEltYWdlT2JzZXJ2ZXImLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0U2l6ZSwgZmxv
YXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWlu
ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3Bh
Y2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsK
KyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVy
YXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKIAogICAgIFNWR1NWR0VsZW1lbnQq
IHJvb3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCAxMDUzNTQ4MTg3MjlmNzg1ODRmZmEz
N2VlYmE1YjEzMDExMGU2NTk4Li4xOWM0NzFiMmM4OTI0MGMzNWRjZjZlZDliZjYxNmUzOGY2MTU2
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JD
b250YWluZXI6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBGbG9hdFNpemUocm91bmRlZEludFNp
emUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwogfQogCi12b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVy
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LAordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAg
ICBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96
b29tLCBkc3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
KTsKIH0KIAotdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKIHsKICAgICBtX2ltYWdlLT5zZXRTcGFjZVNpemUoc3BhY2VTaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRl
eCBhNGVlYWE5Zjc2M2I2ZjNlNjBjMGYzYzFhOTcwNjNlM2JhYjAyYjIwLi45NzY5NWZkYThmNmI5
ZWMwZGM3Yjg5OWYyMDk1ZDlmYTAzNTE2MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNp
Y1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25z
dCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBi
b29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCmluZGV4IDE1Njc0NDMyMmI4NDg4YmYzOGVhNGMzZWRjZWIwNjI4YmJlNTM4MDMuLmYw
NzI1MThmNDQxNzUxMWM3OTEzOTBlOTk2MjdmNWI1ZDE3ZTQ4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgaWYg
KHJlbmRlcmVyKSB7CiAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFu
c2Zvcm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpOwotICAgICAgICByZXN1bHRJbWFn
ZS0+Y29udGV4dCgpLT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgICAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAg
ICAgU1ZHRWxlbWVudCogY29udGV4dE5vZGUgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJl
ci0+ZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGNvbnRleHROb2RlLT5oYXNSZWxhdGl2ZUxlbmd0
aHMoKSkgewpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHJlZmVyZW5jaW5nIGFuIGVsZW1lbnQg
d2l0aCBwZXJjZW50YWdlIHVuaXRzLCBlZy4gPHJlY3Qgd2l0aD0iMzAlIj4gdGhvc2UgdmFsdWVz
IHdlcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgdmlld3BvcnQuCiAgICAgICAgICAgICAvLyBCdWls
ZCB1cCBhIHRyYW5zZm9ybWF0aW9uIHRoYXQgbWFwcyBmcm9tIHRoZSB2aWV3cG9ydCBzcGFjZSB0
byB0aGUgZmlsdGVyIHByaW1pdGl2ZSBzdWJyZWdpb24uCiAgICAgICAgICAgICBpZiAobGVuZ3Ro
Q29udGV4dC5kZXRlcm1pbmVWaWV3cG9ydCh2aWV3cG9ydFNpemUpKQotICAgICAgICAgICAgICAg
IHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmNvbmNhdENUTShtYWtlTWFwQmV0d2VlblJlY3RzKEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIGRlc3RSZWN0KSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5jb25jYXRDVE0obWFrZU1hcEJldHdlZW5S
ZWN0cyhGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWV3cG9ydFNpemUpLCBkZXN0UmVjdCkpOwog
ICAgICAgICB9CiAKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRUcmFuc2Zvcm1hdGlv
bjsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgp
LT5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHNyY1JlY3QpOworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKG1faW1hZ2Uu
Z2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9p
ZCBGRUltYWdlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3Ry
aW5nRXh0cmFzLm1tCmluZGV4IDUxMmFmNDE5NGNiMjUxMzgxOGQ5MTEyMzQ5MWY2ZDIwZTQ4YWY4
YjQuLjAwMjVhZTI5MzAyMTdhMmFlNjYyZmYwNGQ2YTBiNjRjOWI0YmRkYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtMTAyLDcgKzEw
Miw3IEBAIC0gKHZvaWQpX3dlYl9kcmF3QXRQb2ludDooTlNQb2ludClwb2ludCBmb250OihOU0Zv
bnQgKilmb250IHRleHRDb2xvcjooTlNDb2xvciAqCiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9y
VXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdy
ZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07CiAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAq
IDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICB3ZWJD
b3JlRm9udC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQu
eCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CisgICAgICAgIHdlYkNv
cmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50Lngs
IChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOwogCiAgICAgICAgIGlmICgh
ZmxpcHBlZCkKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5tbQppbmRleCAxMjc4MDIwYjg1YzU4YjJlYjNhODc4YzNiMDNiMzFkM2Zl
OWZkM2RhLi5jZmNjZDNjZDY0OTI2NTIxOTc2YzZiZjE4NTZiNmU4ZmI0NTNkZDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQpAQCAtNDgyLDcgKzQ4Miw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250
ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAg
ICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2
aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxl
Y3Rpb25Pbmx5KTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXRvRmxvYXRT
aXplKHJlY3QubG9jYXRpb24oKSkpOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgt
dG9GbG9hdFNpemUocmVjdC5sb2NhdGlvbigpKSk7CiAgICAgZnJhbWVWaWV3LT5wYWludENvbnRl
bnRzKGJ1ZmZlci0+Y29udGV4dCgpLCByb3VuZGVkSW50UmVjdChyZWN0KSk7CiAKICAgICBmcmFt
ZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA0MWQwMDgxNjMzNzAyNzRkMWY1
NWM1OWE2NTcwODZjZjk1NGJmYmM0Li4wYjMyMTIwN2MzMjNlNGRhMDA5MzBlOWM4MDRlMGQyMzhh
OTRjZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTY0NCw5ICs2
NDQsOSBAQCAtICh2b2lkKV9kcmF3UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09M
KWNvbnRlbnRzT25seQogICAgIH0KICAgICAKICAgICBpZiAoY29udGVudHNPbmx5KQotICAgICAg
ICB2aWV3LT5wYWludENvbnRlbnRzKCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsK
KyAgICAgICAgdmlldy0+cGFpbnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJl
Y3QpKTsKICAgICBlbHNlCi0gICAgICAgIHZpZXctPnBhaW50KCZjb250ZXh0LCBlbmNsb3NpbmdJ
bnRSZWN0KHJlY3QpKTsKKyAgICAgICAgdmlldy0+cGFpbnQoY29udGV4dCwgZW5jbG9zaW5nSW50
UmVjdChyZWN0KSk7CiAKICAgICBpZiAoc2hvdWxkRmxhdHRlbikKICAgICAgICAgdmlldy0+c2V0
UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggYzRjMzYxOTllZDll
OWZkYzc2NmVmZTA4NDU3Mzc5YzcyODVlYjMyZS4uMTZjM2E0NzlhNTIzZTFiYmM0ZmE3NzVlYTkw
OWRiMDhkMTBjMmM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgUGx1
Z2luQ29udHJvbGxlclByb3h5OjpwYWludCgpCiAgICAgaWYgKG1fcGx1Z2luLT5pc1RyYW5zcGFy
ZW50KCkpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAK
LSAgICBtX3BsdWdpbi0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBkaXJ0eVJlY3QpOwor
ICAgIG1fcGx1Z2luLT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJlY3QpOwogCiAgICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpV
cGRhdGUoZGlydHlSZWN0KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGY3NDI1NTllM2VkMGI1ZjI2
ZmIzMDE5NmEyNTFkZGU1ZWNmMjQ2NzAuLjM5MWVhYzFiNDI3YTBiNWRjM2Y5NTQ0YzljMDljM2Ji
ZWM4NjJlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkltYWdlPiBpbWFn
ZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHJlCiAKICAgICBQ
YWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3Io
KTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7Ci0gICAg
ZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgp
LCByZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5h
dGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3ND
b250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1
bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFp
bnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA1MDE5NzcwYTll
NDZkMGViZjY1Yzg2ZWI0Yjc2ZTRmNmMzMmRkZDJlLi42NWZiZTczYjVmZjdiZmJhN2UyMDI0NGY4
YjIzYzJhODFiZTJjNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9w
CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIG93
bmVyRG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KGdyYXBo
aWNzQ29udGV4dC5nZXQoKSwgcGFpbnRSZWN0KTsKKyAgICBmcmFtZVZpZXctPnBhaW50KCpncmFw
aGljc0NvbnRleHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9y
KG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihvbGRTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggOTlmOTEyNzI3
ZDM1NzY4MzE2NzUyY2E1NDc3NmVkYjhmNDUzZTNhNS4uMzNiOTEzYTlmYmQ5NjczOGZhNThjZjc1
ZDUwYTE1MTI3NGQwYTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NDQsNyAr
NzQ0LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6ZGVzdHJveSgpCiAgICAgbV90aW1lcnMuY2xl
YXIoKTsKIH0KICAgICAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBhaW50KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBOZXRzY2FwZVBsdWdp
bjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAKQEAgLTc2OCw3ICs3NjgsNyBA
QCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogICAg
IC8vIHdoaWNoIHdlIGN1cnJlbnRseSBkb24ndCBoYXZlIGluaXRpYXRlZCBpbiB0aGUgcGx1Zy1p
biBwcm9jZXNzLgogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFj
dG9yKCksIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSkpOwogCi0gICAgcGxhdGZvcm1QYWludChjb250
ZXh0LmdldCgpLCBJbnRSZWN0KEludFBvaW50KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOworICAg
IHBsYXRmb3JtUGFpbnQoKmNvbnRleHQsIEludFJlY3QoSW50UG9pbnQoKSwgbV9wbHVnaW5TaXpl
KSwgdHJ1ZSk7CiAKICAgICByZXR1cm4gYml0bWFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApp
bmRleCBlNDY4MTRhNGE4NWUxY2E1NDQ0ZTkxYzEyNjY2MjQxODFhNjU3MmI5Li4yOWUyMmM5Y2Vk
NjZlMDdlZmU5NTVhNWYxZmYzODYwYjk3N2I1OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApA
QCAtMTc3LDcgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBwbGF0Zm9ybUludmFsaWRhdGUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgcGxhdGZvcm1HZW9tZXRyeURpZENo
YW5nZSgpOwogICAgIHZvaWQgcGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCk7Ci0gICAgdm9p
ZCBwbGF0Zm9ybVBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90ID0gZmFsc2UpOworICAgIHZvaWQg
cGxhdGZvcm1QYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCA9IGZhbHNlKTsKIAogICAgIGJvb2wg
cGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICBib29s
IHBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CkBAIC0xOTEs
NyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBQbHVnaW4KICAgICB2aXJ0dWFsIGJvb2wgaW5p
dGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRl
c3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5kZXggODQ4YjMzODJlMDIwZTJj
MjJhNDBhYjVjYzkyNmE3MGIyYTMwOWJkYi4uNmY3NTMxOTFhZjk4ZWRhZTJiZjFiNTI2MmZlYjgy
NzRhODI0ZTE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC00
NDQsOSArNDQ0LDkgQEAgc3RhdGljIEV2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc0ZvckV2ZW50KGNv
bnN0IFdlYkV2ZW50JiBldmVudCkKIAogI2VuZGlmCiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBs
YXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0
eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFp
bnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJv
b2wgaXNTbmFwc2hvdCkKIHsKLSAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0ID0gY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4
dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBzd2l0Y2ggKG1fZXZlbnRNb2Rl
bCkgewogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBhZGVmNmNiMzY5
NjVmODA0MmQwY2MwMmFjMWZjZGE0N2ZjOTFmMDY4Li40YzUyNTZkNWExY2FjZWYyMjk4NWU1NDZi
ODE5MWEwNDFmYTY5OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTExNSw4ICsxMTUsOCBAQCBwcml2YXRlOgogICAgIC8v
IFBsdWdpbiBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFy
YW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93
Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9s
VGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CmluZGV4IDYxY2Y0ZmVhODFhMWM4NjE1Y2ZiZmQ4MjNmMGZiMDAwODY0ODZhNWUuLjExMWEyMjVj
NzE5NzJjZWMwNWU2YmJjYmZkZjUxMjhlMWMwNGMyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTExLDkgKzExMTEs
OSBAQCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveSgpCiAgICAgW21fY29udGVudExheWVyIHJlbW92
ZUZyb21TdXBlcmxheWVyXTsKIH0KIAotdm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50
cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCkKK3ZvaWQgUERGUGx1Z2luOjp1cGRh
dGVDb250cm9sVGludHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7Ci0gICAg
QVNTRVJUKGdyYXBoaWNzQ29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSk7CisgICAgQVNT
RVJUKGdyYXBoaWNzQ29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKTsKIAogICAgIGlmICht
X2hvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aW52
YWxpZGF0ZSgpOwpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29u
dHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUK
ICAgICBpZiAobGF5ZXIgPT0gbV9zY3JvbGxDb3JuZXJMYXllcikgewogICAgICAgICBJbnRSZWN0
IHNjcm9sbENvcm5lclJlY3QgPSB0aGlzLT5zY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lclJlY3QueCgpLCAtc2Nyb2xsQ29y
bmVyUmVjdC55KCkpOwotICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRTY3Jv
bGxDb3JuZXIoMCwgJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsQ29ybmVyUmVjdCk7CisgICAgICAg
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcihudWxscHRyLCBncmFw
aGljc0NvbnRleHQsIHNjcm9sbENvcm5lclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZv
ckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbGJh
ci0+eCgpLCAtc2Nyb2xsYmFyLT55KCkpOwotICAgIHNjcm9sbGJhci0+cGFpbnQoJmdyYXBoaWNz
Q29udGV4dCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CisgICAgc2Nyb2xsYmFyLT5wYWludChn
cmFwaGljc0NvbnRleHQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwogfQogCiBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKaW5kZXggZjZkMWMwNTQ3NDQyZjkzY2JhNzdkMGMx
MTUwODI0YWZlNWI2MTJlNC4uMTU0OTNmODZhMTczMGIwNzEzOGQ2YWY0MjQ3YzY0YjRkMjA5YzEy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCB2b2lkIFBsdWdpbjo6ZGVzdHJveVBsdWdpbigpCiAgICAgbV9wbHVn
aW5Db250cm9sbGVyID0gMDsKIH0KIAotdm9pZCBQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhH
cmFwaGljc0NvbnRleHQqKQordm9pZCBQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGlj
c0NvbnRleHQmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKaW5kZXggMTFjZjE0OTEzOGY4MGFmNDgzZmMwMGMxNmUzMjliZWJjMDNlMGFlOC4uZjI3
OWViYmNmNDU3OWE5OWQ2OGYwYTM3N2UyMThjYTYzYjdiNjhlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTI2LDEwICsxMjYsMTAgQEAgcHVibGlj
OgogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdG8gcGFpbnQgaXRzZWxmIGludG8gdGhlIGdp
dmVuIGdyYXBoaWNzIGNvbnRleHQuIFRoZSBwYXNzZWQtaW4gY29udGV4dCBhbmQKICAgICAvLyBk
aXJ0eSByZWN0IGFyZSBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuIFRoZSBjb250ZXh0IGlzIHNhdmVk
L3Jlc3RvcmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpID0gMDsKIAogICAgIC8vIEludmFsaWRhdGUg
bmF0aXZlIHRpbnRhYmxlIGNvbnRyb2xzLiBUaGUgcGFzc2VkLWluIGNvbnRleHQgaXMgaW4gd2lu
ZG93IGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0Kik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xU
aW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFJldHVybnMgd2hldGhl
ciB0aGUgcGx1Zy1pbiBzdXBwb3J0cyBzbmFwc2hvdHRpbmcgb3Igbm90LgogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGU3YzUzZDc4YTY5
YzYwZGI4MGE4NjY2NGU3N2Y3Njc0MzBkOTczMjkuLjZkN2I0NmQyYzY4ZmJiY2M0YjU5YmE2NDJj
YzcxZDAzYzgwZWNjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6
OmRlc3Ryb3koKQogICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlUGx1Z2luUHJveHkodGhpcyk7CiB9
CiAKLXZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIFBsdWdpblByb3h5OjpwYWludChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIGlmICghbmVlZHNCYWNraW5nU3RvcmUoKSB8fCAhbV9iYWNraW5nU3RvcmUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFBsdWdpblByb3h5OjpwYWlu
dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlS
ZQogICAgICAgICBtX3BsdWdpbkJhY2tpbmdTdG9yZUNvbnRhaW5zVmFsaWREYXRhID0gdHJ1ZTsK
ICAgICB9CiAKLSAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgY29u
dGVudHNTY2FsZUZhY3RvcigpLCBkaXJ0eVJlY3QubG9jYXRpb24oKSwgZGlydHlSZWN0KTsKKyAg
ICBtX2JhY2tpbmdTdG9yZS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50c1NjYWxlRmFj
dG9yKCksIGRpcnR5UmVjdC5sb2NhdGlvbigpLCBkaXJ0eVJlY3QpOwogCiAgICAgaWYgKG1fd2Fp
dGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlKSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvclBh
aW50SW5SZXNwb25zZVRvVXBkYXRlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDljZGZjMTk1MjVhYWI5YjZhMzFkNDUy
NmZkNDM2NmNlMmY3NTc5YzIuLjc3YWQ0ZTY5MDdlZTRlMWY1OTI5NzliMGY0NmQ3OGNjNzIxMzBj
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplU3luY2hy
b25vdXNseSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlS
ZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBz
aG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYmFmNTY3MWVjYTY2ZDUx
ZWRjNjcxODIyNDRkMDA5YzUyYzdiNWQ1MC4uYzM5NmU4NDg2ZTliNWUxZjVmMjA4Njk5MGNjYWM5
M2MxZTMzMmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtNzkyLDEzICs3OTIsMTMgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRG
cmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlE
aWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8pCit2b2lkIFBsdWdpblZpZXc6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJl
Y3QqLykKIHsKICAgICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5pdGlhbGl6ZWQgfHwgbV9wbHVn
aW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5n
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlm
IChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgICAgICBpZiAoY29udGV4dC51cGRh
dGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICAgICAgbV9wbHVnaW4tPnVwZGF0ZUNvbnRyb2xU
aW50cyhjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgxMCwxNCArODEwLDE0
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV90
cmFuc2llbnRQYWludGluZ1NuYXBzaG90KSB7Ci0gICAgICAgIG1fdHJhbnNpZW50UGFpbnRpbmdT
bmFwc2hvdC0+cGFpbnQoKmNvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgZnJhbWVSZWN0
KCkubG9jYXRpb24oKSwgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90LT5ib3VuZHMoKSk7Cisg
ICAgICAgIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+cGFpbnQoY29udGV4dCwgY29udGVu
dHNTY2FsZUZhY3RvcigpLCBmcmFtZVJlY3QoKS5sb2NhdGlvbigpLCBtX3RyYW5zaWVudFBhaW50
aW5nU25hcHNob3QtPmJvdW5kcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIC8vIFRy
YW5zbGF0ZSB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gc28gdGhhdCB0aGUgb3JpZ2luIGlzIGluIHRo
ZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHBsdWctaW4uCi0gICAgY29udGV4dC0+dHJhbnNsYXRl
KGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueCgpLCBmcmFtZVJlY3QoKS5sb2NhdGlvbigpLnkoKSk7
CisgICAgY29udGV4dC50cmFuc2xhdGUoZnJhbWVSZWN0KCkubG9jYXRpb24oKS54KCksIGZyYW1l
UmVjdCgpLmxvY2F0aW9uKCkueSgpKTsKIAogICAgIG1fcGx1Z2luLT5wYWludChjb250ZXh0LCBw
YWludFJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmgKaW5kZXggNTUxMDYwMjNkZTZkOThjOTEwNmNhZTRjMmJjYmE5MjRhYTMyMGUzNy4u
NzhhOGRjYjg4M2YwZDFiYTIyN2ViOGY4ZWNjOWRlY2RhMzgxNGY2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xNzEsNyArMTcxLDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OldpZGdldAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzNDM2MjBiZTg4Y2U5YmRiYzBlODE3
NzYyYzk4NDdlYzEwNDU4ZTg3Li5jNTZiYmJiZTNjZDg1NDdmYjY3ZDc3NzdiOWIwN2MxNjY2YTA1
OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xMzM0LDcgKzEzMzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgIGdyYXBo
aWNzQ29udGV4dC5jbGlwKHJlY3QpOwogCi0gICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52
aWV3KCktPnBhaW50KCZncmFwaGljc0NvbnRleHQsIHJlY3QpOworICAgIG1fbWFpbkZyYW1lLT5j
b3JlRnJhbWUoKS0+dmlldygpLT5wYWludChncmFwaGljc0NvbnRleHQsIHJlY3QpOwogfQogCiBk
b3VibGUgV2ViUGFnZTo6dGV4dFpvb21GYWN0b3IoKSBjb25zdApAQCAtMTc2Myw3ICsxNzYzLDcg
QEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc0luVmlld0Nvb3JkaW5hdGVzKQogICAgICAgICBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZp
ZXc6OlZpZXdDb29yZGluYXRlczsKIAotICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNu
YXBzaG90KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgc25hcHNob3RSZWN0LCBzaG91bGRQYWludFNl
bGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNG
b3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIHNob3VsZFBhaW50U2Vs
ZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOwogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9w
dGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0
aW9uUmVjdGFuZ2xlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb25Cb3VuZHMoKTsKQEAgLTE4MTksNyArMTgxOSw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+
IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlv
bnMKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFy
ZW50KTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAgZnJhbWVW
aWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBzbmFw
c2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVu
dENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgq
Z3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlv
biwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3
LT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggZjVlODZk
ZjAxZmRhMTlkMmU2ZTQxZTFmNDA4YjhkYzMxNWI4YTI4Yy4uYmQyMTU3M2E2NGFhMzNiZjk5MWEw
NzE3NWVmNjY3Y2M3YWI3MGFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC03Miw3ICs3Miw3
IEBAIHZvaWQgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiBvdmVybGF5LCBHcmFwaGljc0NvbnRlCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLW92
ZXJsYXlGcmFtZS54KCksIC1vdmVybGF5RnJhbWUueSgpKTsKICAgICAgICAgbV9mcmFtZS52aWV3
KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCBQYWludEJl
aGF2aW9yRm9yY2VCbGFja1RleHQgfCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5
ZXJzKTsKLSAgICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIG92
ZXJsYXlGcmFtZSk7CisgICAgICAgIG1fZnJhbWUudmlldygpLT5wYWludENvbnRlbnRzKGNvbnRl
eHQsIG92ZXJsYXlGcmFtZSk7CiAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2
aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260209</attachid>
            <date>2015-08-28 21:21:56 -0700</date>
            <delta_ts>2015-08-28 21:27:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828212145.patch</filename>
            <type>text/plain</type>
            <size>726773</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5k
ZXggNGMwZjkyMTRhMTliNjE5YTE2MzVjMjdhYTI5MTY4MGZiODg1NDBiZi4uZTNiZDQ2ZmNlZTNk
YTcwNDc3MWU0NGYyODhkMzEyNWI5NjRmNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKQEAgLTM5LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdSZWN0SW50b0NvbnRleHQoSW50UmVjdCByZWN0LCBGcmFtZVZpZXcq
IHZpZXcsIEdyYXBoaWNzQ29udGV4dCogZ2MpCitzdGF0aWMgdm9pZCBkcmF3UmVjdEludG9Db250
ZXh0KEludFJlY3QgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQmIGdjKQog
ewogICAgIEludFNpemUgb2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgcmVjdC5t
b3ZlKC1vZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQoKSk7CiAgICAgcmVjdCA9IHZpZXct
PmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cocmVjdCk7CiAKLSAgICBnYy0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSkpOworICAgIGdj
LmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpKTsKIAogICAgIHZpZXctPnBhaW50KGdjLCByZWN0KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRS
ZWN0JiBpcikKIAogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKIAotICAgIGRyYXdS
ZWN0SW50b0NvbnRleHQoaXIsIGZyYW1lLT52aWV3KCksICZnYyk7CisgICAgZHJhd1JlY3RJbnRv
Q29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
b250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3
NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzEx
NDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0
aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNj
cm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmll
dzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBp
bnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOworICAgICAgICBwYWludFNj
cm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3Qo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAg
SW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFy
ZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMo
aWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsx
MjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGly
dHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVD
b250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwg
LXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAt
c2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC5j
bGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cg
cGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYm
IChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAg
ICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwogICAgICAgICBJbnRSZWN0IHZp
c2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0
SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50
KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRT
Y3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTks
MTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAg
ICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRo
aXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5n
QXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFu
ZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFh
OGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0
byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVw
IHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2
b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVj
dGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6
ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVk
U2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXgg
YzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJj
N2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQ
cm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
dm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGlu
dHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRl
eHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisg
ICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAg
ICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNl
MGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0
b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3Mg
PSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4x
NmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
IAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYy
YTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSAr
MjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxi
YXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJl
dHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIx
MzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1
MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3
N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4K
ICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJhY2siKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0
LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsK
KyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEp
OwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTks
IDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAg
IG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUu
Y2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBj
b250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFi
NGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1
aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VT
Y2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2Nh
bGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2Yg
dGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAg
V2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBj
b21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNh
biBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAg
dmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFj
dG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0
byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMg
aW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1
ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNk
YjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52
YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIy
OTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRv
Qm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0Jv
eChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJ
bWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNw
ZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9C
b3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwog
ICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7
CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0lt
YWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFu
c2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNj
YWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNs
YXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0K
IAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9p
ZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIC8v
IFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0g
IndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9h
dFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAg
ICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRo
KG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJh
MDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAg
ICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQy
NTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMx
YWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9X
aWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1
Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3
ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAg
aWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1
bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zv
cm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJlM2MwNmJhNC4uMDUwOGQ1NWNlOGM3
NDBmZWU4YTgwNjJlZmYzMjU2NDMyNGNjYTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4K
QEAgLTIwMSwxMiArMjAxLDEyIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkp
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0
NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5OTQ2MzY2OWY0YTEwNGM5NWM5
MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQxLDY4ICs0MSw2OCBAQCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21J
bWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRl
U3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJn
ZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogCiAg
ICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhh
dmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQg
YSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS0+
aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
b3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsK
KyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAgIGlmICh0YXJnZXRTaXpl
ICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHRhcmdldFNp
emUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRTaXplLmhlaWdodCgpIC8gaW1h
Z2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVp
Z2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVT
aXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9w
ZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShj
b250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1f
Y3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNyY1JlY3Qu
eCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RS
ZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxl
cmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdp
dGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgZHJhd0Nyb3NzZmFk
ZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1NmE5ODc1MTRjYjcxYTE3YjRj
NzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRiMzI5ZDYyOGRhZTM3YjZhNWY3
MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdD
cm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZSogbV9mcm9tSW1hZ2U7CiAg
ICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNkYzkyZDExM2ZjMjBhNGY5MTA1
YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9
IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIC8vIERv
bid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFy
ZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNl
JyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZh
bGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHJ1bik7CkBAIC0x
MzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgaWYgKG5l
eHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250
RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJh
d1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0
R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgcmVuZGVyaW5n
Q29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBs
YXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCBmb250RGF0
YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2lu
dCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogCiAg
ICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0g
bmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0ICYm
IGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NW
R0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRy
YXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5l
eHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0
RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICBkcmF3R2x5
cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50LnNldFgobmV4dFgpOwogICAg
IH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAg
cmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZlci5mb250QXQoaSksIGdseXBo
QnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlwaERhdGEgbWFya0dseXBoRGF0
YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrLCBtYXJrR2x5cGhEYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmlu
ZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3NGE4NjIuLjE2NmI5MGU4NzVh
Y2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkgKzEzMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKSBjb25zdDsKIAogICAgIGVu
dW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBV
c2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0g
LTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVu
dHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0
dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8s
IEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMp
IGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0g
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
ICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CkBAIC0yMzgsOCAr
MjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJhd0Nv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzllZWZiMmFjOWY3YWU1NTZlMzc1
YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4NzdlNmRlODllYzQzYTBlNWI4ZTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBlYTNiOGI0MmVlNmQ5ODQxZTUy
OTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5YzU5YTU4YTRmYjIxOGViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
CiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRleHQtPmNsaXAoZGVzdFJlY3Qp
OwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOworICAgIGRlc3RDb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRlc3RSZWN0
LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVzdENvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC0+dHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAg
ICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBkZXN0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCAqbV9ncmFk
aWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92aWRl
IHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKICAgICBtX2dy
YWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKGFkanVzdGVkU2l6ZSwgYWRq
dXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUgZGVzdGluYXRpb24gY29udGV4
dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29sdXRpb24KLSAgICBBZmZpbmVU
cmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91YmxlIHhTY2FsZSA9IGZhYnMoZGVz
dENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2NhbGUgPSBmYWJzKGRlc3RDb250
ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRqdXN0ZWRQYXR0ZXJuQ1RN
ID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBAQCB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVkSW1hZ2VC
dWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0Fs
cGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFn
ZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250
ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNB
bHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAg
ICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFk
anVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNr
KCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAg
IH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7
Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKKyAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNhMGRmNGM0ZWFiMzdhLi42ZWM1
NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBjb25zdCBGbG9hdFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLjMw
MzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UtPmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkBAIC00
MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxv
d1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAgLTY0MCwyMCArNjQwLDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBGbG9hdFNpemUgc2Nh
bGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhT
Y2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhpcywgaGFzQWxwaGEpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCks
IHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0dXJuIHNjYWxlc01hdGNoKGdl
dENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQo
KSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOworICAgIHJldHVybiBz
Y2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVy
YXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9
CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRy
YW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEds
eXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
KyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lk
IGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5z
aWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4
YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBiMzc4MWVjMGE4ZjQzNWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJvKiBjb250ZXh0KTsKICNlbGlm
IFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAKICAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMu
LmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMwMTQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4LDIzICs3OCwyMyBAQCBib29s
IEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxX
aXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0
eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVD
b2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29t
cG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9y
Lmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkg
OiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNl
KTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9y
U3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewogICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICBvbmVU
aWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAKICAgICAvLyBDaGVjayBhbmQg
c2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBjb3ZlciB0aGUgZW50aXJlIGFy
ZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9uZVRpbGVSZWN0LmNvbnRhaW5z
KGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkgeworICAgIGlmIChvbmVU
aWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJhd0x1bWluYW5jZU1hc2soKSkg
ewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0LngoKSkgLyBzY2FsZS53aWR0aCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2Ug
dGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoc2l6
ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS5o
ZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZp
c2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgwKTsKQEAgLTE2
NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0
IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJh
bnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQ
aXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXpl
LmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsK
ICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxz
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7
Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7
CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwog
ICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3
ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uZjY5YTA1OWZhODk1YWM2MjZhYzdiOGJhYjNlNmJhNjRjNWE4NzA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4
NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJl
IHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY0YzY2
Yzc4YzhlY2VhYjFhOGFjOGRiNTNlNzAxYjVlNjg4OTViNzAuLjI3ZjZiMzFmMDM4Y2U1MjQwODNm
ZWY3NjljMGViODJmMWE4MWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtODMyLDEwICs4MzIs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YXMKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFz
c2V0U3RhdHVzTG9hZGVkOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFw
cGVyKSkgewpAQCAtODQ3LDEwICs4NDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXgKICAg
ICBwYWludChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFp
bnQoJXApIiwgdGhpcyk7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsbwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fYXZmV3JhcHBlci0+Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJl
bnRNZWRpYVRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwg
LTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAg
IEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNmNjOWE1NTNmNjM2Nzk2OWE1NGU2
ODBhNWYyMWRlZDlmZWM0MWZhZi4uZTNkYjhkNTBiMzg1YTI5MWI2ODI4ODRmY2IxZTQ2M2EzM2Jk
YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWVk
aWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDlmNTgxZWRmYWQ2OGY4N2MyZDQ1MzUyMmRmMjJlOGU0NjM1M2I3OWUuLmY4
YmFkZGRmNDI4YzhjNjQwYTU4NDk2Nzc0M2VkYjNkZDNkODVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKICAgICB2b2lkIGRl
c3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZUZvclRpbWVJblJlY3QoZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAg
ICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoKTsKICAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpOwotICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDY1ZmI0ZDI5NjMyNDBmZWJjODVmMTc5OTFlNDc3ZDUyZmE0ZTNl
ZjkuLjUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTQ5NCw5ICsxNDk0LDkgQEAgbG9uZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphc3NldEVycm9yQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtl
cnJvciBjb2RlXTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnQKICAgICBtX3ZpZGVvRnJhbWVIYXNEcmF3biA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXF1ZXN0IGlmIHdlIGFyZSBhbHJlYWR5IHJlbmRlcmlu
ZyB0byBhIGxheWVyLgpAQCAtMTUzMSwxOCArMTUzMSwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRgogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdl
R2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgp
LCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBw
YWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAg
ICB9CiB9CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fbGFzdEltYWdlID0gY3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkK
IHsKICNpZiAoIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgIW1fbGFzdEltYWdlICYmICF2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkp
CkBAIC0yMzQxLDEzICsyMzQxLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiBjCiAKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dCglcCkiLCB0aGlzKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdl
dFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5n
ZXQoKSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJs
ZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8v
IElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3Qg
ZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRl
byBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhNTc1MzRmMjU4OTc5NjMzNjZhNTA0N2Y2NTgwZjI3
OTZhYzYwNTYyLi41MzcxZDY2MjdlY2UxNDNkNTk4ZTU0OGE1ZmU5MGIzM2I3M2NhMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggYzgwNWIzYjI0NWUzNzRmNzkxMDVkYWQ4NzU1NWNmYWRhZmM0ZjAzZS4uZDc3
NzgyODI5NWM2MzBhMTk4NGZmZGY5OWE0MjJjNDFjNTBhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtNTI0LDEyICs1MjQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCiAgICAgLy8gTm8tb3Au
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiAgICAgLy8gRklYTUUoMTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJ
WE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggNWFlNWI1NTA5ZWQxZmMwOTk1OGQ1MGYyNmY1N2IwNGE1MzlmZWUwNi4uNWEwMDEy
ZWM5ZGEyOTg5M2JmNTgyYjc4Yzk1MTE1OWEwMjZjNDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IGMyNmIzMzU5NzM0ZDIzNGFmZDc5MjI5MmFmZDkzNTcwNDZlMGU2ODkuLjAxZmYy
MmMwOTlmZGI5YTFkOWRkNzkyNTg1YWJjNWQ4ZjQ5N2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUltYWdlRnJvbVNhbXBsCiAg
ICAgcmV0dXJuIHF1YXJ0ekltYWdlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgLy8gRklYTUUo
MTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRl
eCBmMGQzYTdhNzJkYjkyZmRlMWQxYjVmOTkzOGIzYzBjMWU3YWQ2MWYxLi5mNWUzZGUwZTUzNGIw
MTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRz
dC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKQEAgLTgxLDEzICs4
MSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCiAgICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgaWYgKGZyYW1lT3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3Qu
eSgpKTsKICAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVs
dChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhYTEwYzY1YzU2ODQzZTUwMjgwNjhhMzlh
ODcwMjAyYzdiMTRjY2NlLi5mYzUwMzJiNTQ1YWI0NmI2YzdmMjM0ZmZjMTc4NDUzZWU0ODQyOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250
JiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X3Qgb3JpZ2luYWxUcmFuc2Zvcm07Ci0gICAgZmxvYXQgc3ludGhldGljQm9s
ZE9mZnNldCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBmbG9hdCBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKIAotICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjb250ZXh0LCBmb250
LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgIGNhaXJvX3NldF9zY2FsZWRfZm9u
dChjb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgY2Fpcm9f
c2hvd19nbHlwaHMoY29udGV4dCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpIHsKQEAgLTY2LDIxICs2NiwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyRwogICAgICAgICBjYWlyb19zZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9y
bSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBpbnQgbnVtR2x5cGhzKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVy
JiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KTsKIAotICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisgICAg
aWYgKCEoZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8
fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0Lm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8g
T3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0
IHRoZSBTaGFkb3dCbHVyLgotICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGdyYXBoaWNz
Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQpOworICAgICAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0KGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CiAgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFw
aGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
ICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUds
eXBocyk7CiAKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0KTsKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiAKICAgICBjYWlyb190ZXh0X2V4dGVu
dHNfdCBleHRlbnRzOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCksIGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRS
ZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54KCkgKyBleHRlbnRzLnhfYmVhcmluZywgcG9pbnQu
eSgpICsgZXh0ZW50cy55X2JlYXJpbmcsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
IAogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5T
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkpIHsKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0
X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0x
MTIsMTQgKzExMiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQg
Kz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQs
IHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dC0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRD
YWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1Rv
Q29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6
ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9r
ZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIg
dGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8
IDIgKiBvZmZzZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBj
b250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAq
IG9mZnNldCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhj
b250ZXh0LnN0YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4
dC5zdHJva2VUaGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUg
Q1RNLCBidXQgd2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgot
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBn
bHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCA2Nzg0MGM1ZTk0ZmZmZmUzZjIzNmYwYjgxMjJh
MjIwMWViYWU1M2VkLi40ZmVjMWFhZWIyZWQ5ZDRiNzZlOTM0MzkyZjRlMzJhODYxOWFlOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtNTIsNyArNTIsNyBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGludCwgaQogICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMg
KyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250
ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyog
bWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBp
bnQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1
biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjhjN2M5NjBmZDlmOWRmNTEzNWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uMmVjMGZiOTlk
YzQ5Y2ZjYzQ1MGI1ZTlkNmE3NWI4MjQzZTFhN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAgICAg
RmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhd2luZ1N0eWxlKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7Ci0gICAg
U2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKTsKKyAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBv
ZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250
ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2Fpcm9fcGF0aF90LCB2b2lkKCopKGNhaXJvX3BhdGhfdCopPiBwYXRoKGNhaXJvX2NvcHlf
cGF0aChjYWlyb0NvbnRleHQpLCBbXShjYWlyb19wYXRoX3QqIHBhdGgpIHsKICAgICAgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KHBhdGgpOwogICAgIH0pOwpAQCAtMTI5LDE0ICsxMjksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGF0aERyYXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgRmlsbCkgewogICAg
ICAgICBjYWlyb19zYXZlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0
ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3Rh
dGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CiAgICAgICAgIGNhaXJv
X2ZpbGwoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2UpIHsK
ICAgICAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9TaGFkb3dDb250ZXh0LCBwYXRoLmdldCgp
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JT
dHJva2luZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVz
ZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBy
ZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpE
b05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKQEAgLTE0OSwyOCArMTQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICBj
YWlyb19maWxsKGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0
LCBGaWxsKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aChjb250ZXh0KTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIFN0cm9rZSk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTdHJva2luZyhjb250ZXh0LT5zdGF0ZSgpKTsKLSAgICBjYWlyb19zdHJva2UoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCktPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCkpOworICAgIGNhaXJvX3N0cm9r
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCogY3IpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCh0aGlzKTsKKyAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0
aCgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLT5jb250ZXh0KCkpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC00NTAsNyArNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LCBjb2xvcik7CiB9CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwg
d2lkdGgpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAg
c2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiB9CiAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dC
bHVyKCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0KTsKQEAg
LTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBz
ZXRQYXRoT25DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7Cisg
ICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQxNWY5ZGM3OWZkYmY5NDAxNTMxYWRiY2Fk
Y2Q5YTI2ZTE3MjVkNTYuLmMyMGY5MmQxYmE2MDdlMTYzZGM0YTllNDA0M2FiN2E5Yjg0MzhjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuICpt
X2RhdGEubV9jb250ZXh0OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0xNjAsMjAgKzE2MCwyMCBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBtYXNrUmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zdAogewotICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIG1hc2tSZWN0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQogewotICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRl
eHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiwgQ29vcmRpbmF0ZVMKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFh
NDQ5MTg2N2JjMGQ5MWQ5YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2
YWM2ZjBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDU5OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEw
ZTdmZjg3M2JjYjM1YzMwNTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
blRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNv
bgogICAgICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWly
bzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1
cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGgg
c21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVm
IHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7
IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNh
aXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hh
ZG93KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIHBhdHRlcm4uZ2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5oCmluZGV4IDkzNTVlMTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEz
MDUyY2QyZDhkY2VlNzUxYWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEo
KSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIz
ZjIxZWY3NzAwZWU2ZDUwNmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVj
NTExY2NjMjIwYzQ3MjgwODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAg
IHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZy
YW1lKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9u
UmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRD
VE0oY3R4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1
ZGM1MzBhMjhiN2JhYjkuLjk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52
YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMg
fHwgaW1hZ2VXaWR0aCA8PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0g
MCB8fCBjYW52YXNIZWlnaHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxz
IHx8IGltYWdlV2lkdGggPD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9
IDAgfHwgY2FudmFzSGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0
ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKIAotICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNp
Z25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGlt
YWdlSGVpZ2h0LCByb3dCeXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSAr
NTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21w
bGV0ZWx5IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyBy
ZXN1bHRzLgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKLSAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0
Mzg2MzVhYTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4
ZmE0NjM2NWJlNDljMjY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygq
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCByZWN0KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJl
Y3QoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGJiOWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEw
OTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
NDMsOSArMTQzLDkgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgp
KTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAg
IGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgY29udGV4dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAog
ICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgp
OworICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CkBAIC0yMTAsMTMgKzIxMCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9k
YXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzEsMjkgKzIzMSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVy
biBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNj
YWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4
dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBv
dXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAK
LSAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
eworICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwog
ICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9
IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6
ZSwgaW50ZXJuYWxTaXplKCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4Mywz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUo
KSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewot
ICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAog
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSks
IHNvdXJjZUNvcHktPmludGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBz
b3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+
aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29u
dGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250
ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVT
eXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUx
MDMxYTIxNTcwZTVhYTMyMGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBk
OTdmYzYzNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBA
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjdHh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZv
cm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0
eHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5m
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1
ZSBpZiBzaXplIGlzIGF2YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1
bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25z
dAogewogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1l
bnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2Uo
ZGVjb21wb3NlZFRyYW5zZm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm07CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERl
Y29tcG9zZWRUcmFuc2Zvcm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3Jt
Q29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNj
YWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2Fs
ZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUs
MTIgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2Nh
bGUpOwotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNyY1JlY3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xp
ZW50cyB1c2UgbG93LXF1YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRo
cm93cyBvZmYgdGhpcyBvcHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlt
YWdlLCByZXVzZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlm
IGNhY2hlIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hl
biB3ZSBkbyB0aGUgc3Vic2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBjb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJl
cGFpbnRJZk5lY2Vzc2FyeSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25O
b25lICYmIGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYK
IAogICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNo
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxv
YXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKIAogICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwogCi0gICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUg
PSBkc3RSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsK
IApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBA
IC0yNDQsMjYgKzI0MCwyNiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3Vt
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3Jl
ZXMpCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0
KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXpl
LndpZHRoKCksIDApOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwogCi0gICAgY29udGV4dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3Rh
dGlvbkRlZ3JlZXMpKSk7CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwog
CiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERy
YXdQREZQYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSkpOwogfQogCiAjZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKaW5kZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkw
MC4uMjE3YWNkMGVkYjI2NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KTsKKyAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
IAogI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5
YjkxNTkwMjM4MTgzOGU5Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRi
MmU5ZGNhNDFjMDc3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0
dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBo
cywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hv
d0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBn
bHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFC
TEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRh
KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0
Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0
ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAt
MTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCog
Zm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3Qg
Q0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBh
ZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBm
b250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBv
c2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgp
KQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQp
KTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBv
aW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNl
bGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1Bv
aW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBs
eUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwog
ICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENH
UG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRy
YW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0
aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9
CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
aW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBj
b25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQt
PnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJv
b2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9v
dGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7Cisg
ICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8g
c3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewot
ICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRz
ID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBt
YXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnBy
ZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250
ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkg
KzMzOSw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250
ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKCkpOwogI2Vsc2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwg
W2RyYXdGb250IHJlbmRlcmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CisgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9u
dCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7
CiAjZW5kaWYKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0
YS5zaXplKCkpOwogCkBAIC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3Qg
RwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2Ug
PSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwor
ICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0g
PSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYg
IWNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAg
ICBGbG9hdFNpemUgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RN
Lm1hcFNpemUoRmxvYXRTaXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRM
ZW5ndGhJbkRldmljZVBpeGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4
ZWxzLndpZHRoKCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsg
aG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5p
dFNpemVJbkRldmljZVBpeGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBo
b3Jpem9udGFsVW5pdExlbmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JC
aXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29u
dGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5p
c0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxw
aGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFk
b3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUg
WSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250
ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAg
IGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93
VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlw
aHMpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9p
bnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRp
Y19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5
cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyAr
NjYwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZv
ciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3
OCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBm
bG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRl
eCBjMTRmNjBmYzY2OWJlNDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlh
ZTBiMmJmMjk2YTBmYTc0ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBA
QCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIq
IHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3Vs
dEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRl
ckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsK
ICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4
dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3
aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRp
b25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJD
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bG9yTWF0cml4LmNwcAppbmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMx
OWM2Li44NzY2YWVjYjIyMzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0lt
YWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgp
LmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAK
ICAgICBJbnRSZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNp
emUoKSk7CiAgICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0
SW1hZ2UtPmdldFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cAppbmRleCAzNmJlZmU3YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4
NzEzOGZiZGYzZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAt
MjcyLDcgKzI3Miw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQo
KTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3ND
b250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFw
aGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAg
ICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJ
bWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEs
OCArMjgxLDggQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAog
ICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVS
OgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1
dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0
ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAg
ICAgIC8vIEFwcGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIx
ICsyOTQsMjEgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAt
IGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VS
ZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24o
KTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3Rl
ZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVk
RGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURl
dmljZVJHQiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3Vy
Y2VJbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJB
VE9SX09VVDoKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5h
YnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZUJ1ZmZlcjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+
bG9naWNhbFNpemUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250
ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAg
ICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRS
ZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwg
Q29tcG9zaXRlU291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdp
bmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KElu
dFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRv
cCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgot
ICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSks
IEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3Np
dGVYT1IpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9w
U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
cm9wU2hhZG93LmNwcAppbmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2
OTZmLi42MzNlYmM2NjBiMWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuY3BwCkBAIC04OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJ
bWFnZUJ1ZmZlcigpOwogICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250
ZXh0KiByZXN1bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQo
cmVzdWx0Q29udGV4dCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKLSAgICByZXN1bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRD
b250ZXh0LT5zZXRBbHBoYSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9z
aGFkb3dPcGFjaXR5KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJ
bWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAg
IHJlc3VsdENvbnRleHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFk
b3coYmx1clJhZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKIApAQCAtMTA1LDExICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxp
ZWQsIHNyY1BpeGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJ
bnRQb2ludCgpLCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAK
LSAgICByZXN1bHRDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNl
SW4pOwotICAgIHJlc3VsdENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZURlc3RpbmF0aW9uT3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlU291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRv
d0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1h
Z2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lv
bik7CiB9CiAKIHZvaWQgRkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMw
ZjA4N2M4YWZkOGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2
NzAyMjZkMDE4YWIyMzcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxv
b2Q6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9y
IGNvbG9yID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29k
T3BhY2l0eSgpKTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJl
Y3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAK
aW5kZXggMjZiOTMyYWNmZjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUz
ODVhZTQyMzBiYTNjOTE4ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcs
MTAgQEAgdm9pZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVz
dWx0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVy
Q29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1
dEVmZmVjdChpKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5h
c0ltYWdlQnVmZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0
SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFh
NGUyZjllLi5mZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0
LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJ
bWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRh
bFNjYWxlKG1fZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNv
bnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CmluZGV4IDhkMzE3MmQ5ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2
ZWNmOTMxYWVhNWY4MDlkYmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkg
QEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29u
dGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5z
bGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7
Ci0gICAgdGlsZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+
Y29udGV4dCgpOworICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExv
Y2F0aW9uLngoKSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGls
ZUltYWdlQ29weSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAg
IGlmICghdGlsZUltYWdlQ29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkg
LSBtYXhFZmZlY3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZm
ZWN0TG9jYXRpb24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5z
Zm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRl
eHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQ
YXR0ZXJuKFdURjo6bW92ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3Qo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAg
ICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgp
OworICAgIGZpbHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsK
KyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29s
dXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAppbmRleCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNj
Li5iYTE0NzEyYTNjZjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCkBAIC00NjYsNyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+
Y29udGV4dCgpKTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUFscGhhLmNwcAppbmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYx
MWRiLi43MGIxZDU1NjRmNmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0g
ICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCkt
PmFzSW1hZ2VCdWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRS
ZWN0IGltYWdlUmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsK
LSAgICBmaWx0ZXJDb250ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29s
b3JTcGFjZURldmljZVJHQik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0
aW5hdGlvbkluKTsKKyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6
OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29t
cG9zaXRlRGVzdGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHAKaW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2Ux
N2UyMy4uMzE5OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNl
SW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+
ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBJbnRQb2ludCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihmaWx0ZXIuc291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7
CiB9CiAKIHZvaWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQppbmRl
eCAwMmM0OGQ4ZmIzNjY1ZjhjYWUyNDhiZDJhYjc2ZjcxODE4NzRiOTEyLi5hY2UxOTA1NGI5ZGE1
MTBhNzE5MWQwMGI0ZTViZjZiMmRkY2Q3OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KQEAgLTI1
Niw3ICsyNTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVudE1h
cmtlcihjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdwogCiAgICAgLy8gRHJhdyB1bmRl
cmxpbmUuCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQgbG9jYWxDb250ZXh0KHRoaXMpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQoKnRoaXMpOwogICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjdXJyZW50Q29udGV4
dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtjdXJyZW50Q29udGV4dCBncmFwaGljc1BvcnRdOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9J
Y29uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMu
bW0KaW5kZXggZmQxM2FiZmI2ODJlMjFiYjlhMDhhOGY2NGZiZTllMDE0YjJmNTdmMy4uZjQxMDI3
ZjUyZWI4ZmI5OWVkZjIyYzY3ZjAxYjBkOGMzMjUxZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQygmY29u
dGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudEdDKGNv
bnRleHQpOwogCiAgICAgW21fbnNJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6TlNNYWtl
UmVjdCgwLCAwLCBbbV9uc0ltYWdlIHNpemVdLndpZHRoLCBbbV9uc0ltYWdlIHNpemVdLmhlaWdo
dCkgb3BlcmF0aW9uOk5TQ29tcG9zaXRlU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXggMDFlODZmMWNjOTJhNWY5NjcwYzJiYzgwY2M5
OWIyMjczYTE1NjFlOC4uMTk2ZGVjYzY0NDdiYjE0MGRkOGRjYzA5OWFhMzg1MGQ4YzlkZjllZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTEyNyw4ICsxMjcsOCBAQCBwcml2YXRl
OgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkg
b3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBhN2EyMTM3ZGMw
MzM4NmM0NThmNTY1ZDljMzI1YTEyYzZjNjEwOTk0Li5hNGMwMGI3NzFmNTg3YjIxY2IxMzIxZjJi
NWZiNTM1MDdlMDY5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xMTg0
LDcgKzExODQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZXBhaW50KCkKICAg
ICBtX3BsYXllci0+cmVwYWludCgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByKQogewogICAgIGlkIHF0VmlkZW9SZW5kZXJlciA9IG1fcXRWaWRlb1JlbmRlcmVyLmdl
dCgpOwogICAgIGlmICghcXRWaWRlb1JlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkg
PT0gTWVkaWFSZW5kZXJpbmdNb3ZpZUxheWVyKSB7CkBAIC0xMTk3LDkgKzExOTcsOSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvbnRleHQqIGNvbnRleAogICAgIHBhaW50KGNvbnRleHQsIHIpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQogewotICAgIGlmIChj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgbV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKKyAg
ICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkgfHwgbV9oYXNVbnN1cHBvcnRlZFRyYWNr
cykKICAgICAgICAgcmV0dXJuOwogICAgIGlkIHF0VmlkZW9SZW5kZXJlciA9IG1fcXRWaWRlb1Jl
bmRlcmVyLmdldCgpOwogICAgIGlmICghcXRWaWRlb1JlbmRlcmVyKQpAQCAtMTIxMSwxMiArMTIx
MSwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcgogICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3Rv
cigxLjBmLCAtMS4wZik7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdChGbG9hdFBvaW50KCksIHIu
c2l6ZSgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29u
dGV4dCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKHIueCgpLCByLnkoKSArIHIuaGVpZ2h0KCkp
OwotICAgIGNvbnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBjb250ZXh0LT5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0
ZShyLngoKSwgci55KCkgKyByLmhlaWdodCgpKTsKKyAgICBjb250ZXh0LnNjYWxlKHNjYWxlRmFj
dG9yKTsKKyAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xh
dGlvbkxvdyk7CiAKLSAgICBuZXdDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNz
Q29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgZmxpcHBl
ZDpOT107CisgICAgbmV3Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRl
eHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpOT107
CiAKICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwogICAgIFtOU0dy
YXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpuZXdDb250ZXh0XTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0KaW5kZXggMGRjZjZjMWNhOWNmZmQyZDIzZDZmNDhjNWM5MTY0M2UxYzEwMDViNy4u
YmZhYWZhOTM1NzAwMDdkNWZkYzIzNTNiMDFiMjRkMTQ0NTMxYWZjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1h
Z2VNYWMubW0KQEAgLTY5LDE5ICs2OSwxOSBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpw
YWdlQ291bnQoKSBjb25zdAogICAgIHJldHVybiBbbV9kb2N1bWVudCBwYWdlQ291bnRdOwogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJl
bnRDb250ZXh0KGNvbnRleHQpOwogCiAgICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRhdGVk
IGJ5IFBERktpdCBidXQgYXJlIG5vdCBzYXZlZAogICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mgc3Rh
dGUgc3RhY2suICg8cmRhcjovL3Byb2JsZW0vMTQ5NTE3NTk+KQotICAgIGJvb2wgYWxsb3dzU21v
b3RoaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKSk7Ci0gICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbiA9IENHQ29u
dGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSk7CisgICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NG
b250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dz
U3VicGl4ZWxRdWFudGl6YXRpb24gPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFu
dGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBbW21fZG9jdW1lbnQg
cGFnZUF0SW5kZXg6MF0gZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlCb3hDcm9wQm94XTsKIAotICAg
IENHQ29udGV4dFNldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIGFsbG93c1Ntb290aGluZyk7Ci0gICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFF1
YW50aXphdGlvbik7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcpOworICAgIENHQ29udGV4dFNldEFs
bG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBh
bGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRl
eCA2YzA4MjU4MjkwOTVkYjc5ZmE1NDhiNmU3Y2IzNzY2YjQzYzkwM2YzLi42OGNlMzEzZTFmMGY3
NDdlYWNmZjZkYWE5NjBiZjA0ODBlZDZmMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC00MCwx
NCArNDAsMTQgQEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKgogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdl
QnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNv
bnRleHQtPnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUo
KSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQo
KTsKKyAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBl
ci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3
aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7CiAKICAgICBJbnRSZWN0
IHNvdXJjZVJlY3QodGFyZ2V0UmVjdCk7CiAgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZz
ZXQpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtb2Zmc2V0LngoKSwgLW9mZnNldC55KCkpOwot
ICAgIHNvdXJjZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgc291
cmNlUmVjdCk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLW9mZnNldC54KCksIC1vZmZzZXQueSgp
KTsKKyAgICBzb3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwg
c291cmNlUmVjdCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFpbWFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXgg
YzQ5MGIxMTE2MWZkOGUyNzIzYWE5NjYyZDFiNTAwMzk0NjMxNjY4Yi4uYTI3YTJlZjZmZWNmN2U4
OGQyYWEzNWYxZThjYWE2NTI1NjFhZmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTEyNywyNSArMTI3LDI1IEBAIHN0
YXRpYyBDR1BhdGhSZWYgY3JlYXRlUGF0aEZvckdseXBoKEhEQyBoZGMsIEdseXBoIGdseXBoKQog
ICAgIHJldHVybiBwYXRoOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlw
aEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgYm9vbCBz
aG91bGRVc2VGb250U21vb3RoaW5nID0gV2ViQ29yZVNob3VsZFVzZUZvbnRTbW9vdGhpbmcoKTsK
IAogICAgIHN3aXRjaChmb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBj
YXNlIEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFz
KHRydWUpOwogICAgICAgICBzaG91bGRVc2VGb250U21vb3RoaW5nID0gZmFsc2U7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFVzZUZv
bnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Nt
b290aGluZzogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2Up
OwogICAgICAgICBzaG91bGRVc2VGb250U21vb3RoaW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhz
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LAogCiAg
ICAgdWludDMyX3Qgb2xkRm9udFNtb290aGluZ1N0eWxlID0gd2tTZXRGb250U21vb3RoaW5nU3R5
bGUoY2dDb250ZXh0LCBzaG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAgIGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpOworICAgIGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7
CiAKICAgICBDR0NvbnRleHRTZXRGb250KGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLmNnRm9udCgp
KTsKIApAQCAtMTc4LDQzICsxNzgsNDMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwKICAgICBG
bG9hdFNpemUgdHJhbnNsYXRpb24gPSBnbHlwaEJ1ZmZlci5vZmZzZXRBdChmcm9tKTsKIAogICAg
IENHQ29udGV4dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7Ci0g
ICAgd2tTZXRDR0NvbnRleHRGb250UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LT5pc1N5
c3RlbUZvbnQoKSwgZmFsc2UsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKKyAgICB3
a1NldENHQ29udGV4dEZvbnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQuaXNTeXN0ZW1G
b250KCksIGZhbHNlLCBmb250LnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKIAogICAgIEZsb2F0
U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFk
b3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwg
c2hhZG93Q29sb3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAotICAg
IGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUo
KSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVy
ICYmICghZ3JhcGhpY3NDb250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBo
aWNzQ29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7
CisgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93
Qmx1ciAmJiAoIWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdy
YXBoaWNzQ29udGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgp
KTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBz
aGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZv
aWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGVhclNoYWRvdygpOwotICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRl
eHQtPmZpbGxDb2xvcigpOwotICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3Jh
cGhpY3NDb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOworICAgICAgICBncmFwaGljc0NvbnRleHQu
Y2xlYXJTaGFkb3coKTsKKyAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0
LmZpbGxDb2xvcigpOworICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3JhcGhp
Y3NDb250ZXh0LmZpbGxDb2xvclNwYWNlKCk7CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xv
cihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1
ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwotICAg
ICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRv
d0NvbG9yU3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRv
d0ZpbGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRY
ID0gcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0aCgp
OwogICAgICAgICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdl
IGhhdmVuJ3QgYXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5l
Z2F0aXZlLgotICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHRyYW5zbGF0
aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGdyYXBoaWNzQ29udGV4dC0+
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRv
d1RleHRZID0gcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQu
aGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAt
MSA6IDEpOwogICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBzaGFk
b3dUZXh0WCwgc2hhZG93VGV4dFkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFk
dmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxj
b25zdCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0g
ICAgICAgIGlmIChmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENH
Q29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9u
LndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVp
Z2h0KCkpOworICAgICAgICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRy
YW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGlj
Qm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRvd09m
ZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25z
dCBDR1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAg
ICAgIH0KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBm
aWxsQ29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmls
bENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0U2V0VGV4dFBv
c2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSwgcG9pbnQu
eSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRo
QWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0
PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsK
LSAgICBpZiAoZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpKSB7Ci0gICAgICAgIENHQ29udGV4
dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRo
KCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9u
LmhlaWdodCgpKTsKKyAgICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKKyAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNs
YXRpb24ud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0
cmFuc2xhdGlvbi5oZWlnaHQoKSk7CiAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2
YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNv
bnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAg
ICB9CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dD
b2xvclNwYWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAogICAgIHdr
UmVzdG9yZUZvbnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIG9sZEZvbnRTbW9vdGhpbmdTdHls
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdp
bi5jcHAKaW5kZXggM2EwY2IzMGJlNzZjMGNlNzQxYzU0ZmVjYWRjN2M0OGVhMzljZGVlMy4uZGI5
NjNjMmY2NDBiZGZhNGEzYTY0ODU0NDhhNDlhMGM5ZjU4YzM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBmbG9hdCBGb250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiBydW4sIGludCBmcgogICAgIHJldHVybiBiZWZvcmVXaWR0aDsKIH0KIAot
ZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICAvLyBUaGlzIGdseXBoIGJ1
ZmZlciBob2xkcyBvdXIgZ2x5cGhzICsgYWR2YW5jZXMgKyBmb250IGRhdGEgZm9yIGVhY2ggZ2x5
cGguCiAgICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMDgsNyArMTA4LDcgQEAgZmxv
YXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7
CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8p
IGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRv
KSBjb25zdAogewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIGZsb2F0IGluaXRp
YWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20s
IHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAppbmRleCBlZTg4ZTIwNWJjMTM3ZTU2
MjAwNDBjMGMxZmZiZGY5MDhhNGVmYTJmLi5hNzgwNzBkOWFhYWY3ZjRlMmEzMTg5ZWUxNDhhNmE1
Yzc5Mzg4YzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSWNvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ljb25XaW4uY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgaWYgKGNvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NhbFdpbmRvd3NDb250
ZXh0IHdpbmRvd0NvbnRleHQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocikpOworICAgIExv
Y2FsV2luZG93c0NvbnRleHQgd2luZG93Q29udGV4dChjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0
KHIpKTsKICAgICBEcmF3SWNvbkV4KHdpbmRvd0NvbnRleHQuaGRjKCksIHIueCgpLCByLnkoKSwg
bV9oSWNvbiwgci53aWR0aCgpLCByLmhlaWdodCgpLCAwLCAwLCBESV9OT1JNQUwpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5j
cHAKaW5kZXggNzIzZWFkYmZkNWRjMjE1ZjMzMDNkZTAzYzM1OGViYThhNjkwNDEyNC4uMDgzNDcw
N2RhOWJhZjcxMWNiZjcyODE3MzZmMjUyMmY3ZjExYTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtNzYsOSArNzYs
OSBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25z
dCBJbnRTaXplKiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdl
OjpzaXplKCk7CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZSgmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8u
Ym1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7Cisg
ICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoJmdjLCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWws
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0
UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dD
b250ZXh0UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtODYsNyArODYsNyBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFt
ZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlQ2Fpcm9XaW4uY3BwCmluZGV4IDRmZDYzOTRiY2Q5ODg1Mzg1ZTRjMWY1YTBhZmEzYjY0ZTZh
ODY0OWQuLmM3NDAzNDdiYTFiYjc3NmNjNDdhMjg5M2RkZmEyN2Q4MTU1NDM1YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dp
bi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6
ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFn
ZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5m
by5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IENvbXBvc2l0ZUNvcHkpOworICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQog
ICAgICAgICBkcmF3KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwg
Ym1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29w
eSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKQEAg
LTg5LDcgKzg5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQ
IGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCog
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ap
Cit2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNy
Y1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCkKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCmluZGV4
IGNmNTFiMDA4MTA4ODU5ZjAzMTU3YWNiMmVhNjYzY2ZkOTBlZjFiYjEuLjNhZGRjMTQ0ZmM3MWY3
NjI0MGFmOTk2OTRmZjA1ZTA2OWQyMWI0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2luZG93c0NvbnRleHQuaApAQCAtMzQs
MjQgKzM0LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvY2FsV2luZG93c0NvbnRl
eHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsV2luZG93c0NvbnRleHQpOwogcHVi
bGljOgotICAgIExvY2FsV2luZG93c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQgPSB0cnVl
LCBib29sIG1heUNyZWF0ZUJpdG1hcCA9IHRydWUpCisgICAgTG9jYWxXaW5kb3dzQ29udGV4dChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9v
bCBzdXBwb3J0QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0gdHJ1ZSkK
ICAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCiAgICAgICAgICwg
bV9yZWN0KHJlY3QpCiAgICAgICAgICwgbV9zdXBwb3J0QWxwaGFCbGVuZChzdXBwb3J0QWxwaGFC
bGVuZCkKICAgICAgICAgLCBtX21heUNyZWF0ZUJpdG1hcChtYXlDcmVhdGVCaXRtYXApCiAgICAg
ewotICAgICAgICBtX2hkYyA9IG1fZ3JhcGhpY3NDb250ZXh0LT5nZXRXaW5kb3dzQ29udGV4dCht
X3JlY3QsIG1fc3VwcG9ydEFscGhhQmxlbmQsIG1fbWF5Q3JlYXRlQml0bWFwKTsKKyAgICAgICAg
bV9oZGMgPSBtX2dyYXBoaWNzQ29udGV4dC5nZXRXaW5kb3dzQ29udGV4dChtX3JlY3QsIG1fc3Vw
cG9ydEFscGhhQmxlbmQsIG1fbWF5Q3JlYXRlQml0bWFwKTsKICAgICB9CiAKICAgICB+TG9jYWxX
aW5kb3dzQ29udGV4dCgpCiAgICAgewotICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC0+cmVsZWFz
ZVdpbmRvd3NDb250ZXh0KG1faGRjLCBtX3JlY3QsIG1fc3VwcG9ydEFscGhhQmxlbmQsIG1fbWF5
Q3JlYXRlQml0bWFwKTsKKyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQucmVsZWFzZVdpbmRvd3ND
b250ZXh0KG1faGRjLCBtX3JlY3QsIG1fc3VwcG9ydEFscGhhQmxlbmQsIG1fbWF5Q3JlYXRlQml0
bWFwKTsKICAgICB9CiAKICAgICBIREMgaGRjKCkgY29uc3QgeyByZXR1cm4gbV9oZGM7IH0KIAog
cHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHQqIG1fZ3JhcGhpY3NDb250ZXh0OworICAgIEdy
YXBoaWNzQ29udGV4dCYgbV9ncmFwaGljc0NvbnRleHQ7CiAgICAgSERDIG1faGRjOwogICAgIElu
dFJlY3QgbV9yZWN0OwogICAgIGJvb2wgbV9zdXBwb3J0QWxwaGFCbGVuZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggYTdiYTQyYTJlYjNlMzllNDI3NjU1
YTQ4ODMyMGMzZGMwZjJkNzcwMi4uMmVlMzE4MjBjZWEwYTRkZDBmMWZlN2NhOThmNzI0NzFkYTBj
NjRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBXaWRnZXQ6OmhpZGUoKQogICAgICAgICBndGtfd2lkZ2V0X2hpZGUo
cGxhdGZvcm1XaWRnZXQoKSk7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JikKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dpZGdldElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRn
ZXRJT1MubW0KaW5kZXggYThkZmNjMzIxYmFkZmVkMjcxMGZlZWM1MDhkMjdjYzEzYTgxMzFjYS4u
MGUzNjVlZjA4ODRhZDJjOGE2ZDY3MjVmNzRjNzU4NzhjNTkwMDM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBOU1ZpZXcq
IFdpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKK3Zv
aWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIpCiB7
Ci0gICAgaWYgKHAtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocC5wYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBOU1ZpZXcgKnZpZXcgPSBnZXRPdXRl
clZpZXcoKTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcC5wbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CiAKICAgICBOU1JlY3Qgdmlld0Zy
YW1lID0gW3ZpZXcgZnJhbWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0RyYWdJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1h
Z2VNYWMubW0KaW5kZXggYjUwNWZjMTM4ZDU4MWE3YTQxZjFiZWE2M2ZjZTUyNmU4NTQ2MWZkYi4u
NWZiMDUyZDQ1NjdkYTAwYmQ4MmRlMjFjOWFkNjkwMTA1NWQ1ZDkxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0yMzQsNyArMjM0LDcgQEAgc3Rh
dGljIHZvaWQgZHJhd0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNG
b250ICpmb250LCBOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9y
U3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVu
IGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBo
YSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAKLSAgICAgICAgd2ViQ29y
ZUZvbnQuZHJhd1RleHQoJmdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50Lngs
IChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOworICAgICAgICB3ZWJDb3Jl
Rm9udC5kcmF3VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAo
ZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKICAgICAgICAgCiAgICAgICAg
IGlmICghZmxpcHBlZCkKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwg
MSwgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dC5oCmluZGV4IDU4YjY0NzJjZjJlMDdjNmI5MDgwNDAyODdl
YjYyYzVhOTAyN2VmMDEuLjQ4ZmViMmVhNGQxOWQ0MGEwOTVjOWRmZWQ1Yjk3NjJiYWM4Njc2NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmgKQEAgLTI5LDExICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0Jik7CiAg
ICAgfkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQoKTsKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkR3JhcGhpY3ND
b250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgbV9zYXZlZEdyYXBoaWNzQ29udGV4dDsKICAg
ICBOU0dyYXBoaWNzQ29udGV4dCogbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0OwogICAgIGJvb2wg
bV9kaWRTZXRHcmFwaGljc0NvbnRleHQ7CiB9OwpAQCAtNDEsOCArNDEsOCBAQCBwcml2YXRlOgog
Y2xhc3MgQ29udGV4dENvbnRhaW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGV4
dENvbnRhaW5lcik7CiBwdWJsaWM6Ci0gICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGlj
c0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKQorICAgIENvbnRleHRDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQo
Z3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKQogICAgIHsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0Lm1tCmluZGV4IDI2MzJmNjY0M2JmZTBmNjlhMzQyNzExNmY4NzgxMWFiNWQ5ZTBj
ZGUuLjEzOWRkNjY1YmMxYmViMTBiNzVhNGU0M2VjZmQ3ZjcyMDcxODE2ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dC5tbQpAQCAtMjQsMTEgKzI0LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCi0gICAgOiBtX2RpZFNldEdyYXBoaWNz
Q29udGV4dChmYWxzZSkKK0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQorICAgIDog
bV9zYXZlZEdyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCisgICAgLCBtX2RpZFNldEdy
YXBoaWNzQ29udGV4dChmYWxzZSkKIHsKLSAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0ID0gZ3Jh
cGhpY3NDb250ZXh0OwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgIGdyYXBoaWNz
Q29udGV4dC5zYXZlKCk7CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gdGhpcy0+Y2dD
b250ZXh0KCk7CiAgICAgaWYgKGNnQ29udGV4dCA9PSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJl
bnRDb250ZXh0XSBncmFwaGljc1BvcnRdKSB7CkBAIC00OSwxMiArNDksMTIgQEAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KCkKICAgICAg
ICAgW21fc2F2ZWROU0dyYXBoaWNzQ29udGV4dCByZWxlYXNlXTsKICAgICB9CiAKLSAgICBtX3Nh
dmVkR3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4
dC5yZXN0b3JlKCk7CiB9CiAKIENHQ29udGV4dFJlZiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQ6OmNnQ29udGV4dCgpCiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRH
cmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBtX3NhdmVkR3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHJl
dHVybiBjZ0NvbnRleHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCA3N2YyZDgwOGNjNjQ4NTcxMWIxYTkyZWM4ZjhiY2I5
N2MzOGM2ODY2Li5jMzM3NjVmYzI1ZDBkYzNiYTVmMWYyZTU1OTk5ZWE4Yzc1MjhhYjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBA
IC01MTMsNyArNTEzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFy
JiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0
LmNsaXAoZGFtYWdlUmVjdCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNjcm9sbGJhci5m
cmFtZVJlY3QoKS54KCksIHNjcm9sbGJhci5mcmFtZVJlY3QoKS55KCkpOwotICAgICAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0KTsKKyAgICAgICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKICAgICAg
ICAgc2Nyb2xsYmFyUGFpbnRlclBhaW50KHNjcm9sbGJhck1hcCgpLT5nZXQoJnNjcm9sbGJhciku
Z2V0KCksIHNjcm9sbGJhci5lbmFibGVkKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMuaAppbmRleCBmOGVlMTZlYjllYTEyMTQzYjIxMjVmMDhhZmQ2MzYwNmNj
ODQxNzEyLi4zYmFkZTdhNjZlMDlkNzk2MzY4MTEzZTQ0Njc5ZTA4MmY3Zjg0M2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApAQCAtNTIsMTMgKzUyLDEzIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRy
b2xQYXJ0IHBhcnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBh
cnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRl
cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3Is
IFNjcm9sbFZpZXcqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFj
dG9yKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRy
b2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3Rvcikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFp
bnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxv
YXQgem9vbUZhY3RvcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5k
ZXJUaGVtZU1hYyBpcyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBi
ZSBpbnRlcm5hbCB0byBUaGVtZU1hYy4KICAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhT
Y3JvbGxWaWV3KiwgY29uc3QgQ29udHJvbFN0YXRlcyYsIGJvb2wgdXNlVW5wYXJlbnRlZFZpZXcg
PSBmYWxzZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxv
YXRSZWN0Jik7Ci0gICAgc3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQoTlNDZWxsKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgTlNW
aWV3KiwgYm9vbCAvKiBkcmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICov
LCBib29sIC8qIHVzZUltYWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAq
Lyk7CisgICAgc3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRl
eHQoTlNDZWxsKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3Kiwg
Ym9vbCAvKiBkcmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29s
IC8qIHVzZUltYWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KaW5kZXggNTFjZmQwZGUzYTNiNTlmZTQ5N2U5NmEwMDhiYThjZThiZmY5OGYwOC4u
MWJkNTA5ZjU3MGM4NDE2MTAzMGM4NTM3ODk1ZDdlMzZlYTE1NmMxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBib29s
IGRyYXdDZWxsRm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3
ICpjb250cm9sVmllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFRv
Z2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9s
U3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVk
UmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2
aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKK3N0YXRpYyB2b2lkIHBhaW50
VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRy
b2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29t
ZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUwogCkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgcGFp
bnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29u
dHJvbFN0YXQKICAgICB9CiAgICAgY29udHJvbFN0YXRlcy5zZXREaXJ0eShmYWxzZSk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIE5TQ29u
dHJvbFNpemUgY29udHJvbFNpemUgPSBbdG9nZ2xlQnV0dG9uQ2VsbCBjb250cm9sU2l6ZV07CiAg
ICAgSW50U2l6ZSB6b29tZWRTaXplID0gYnV0dG9uVHlwZSA9PSBDaGVja2JveFBhcnQgPyBjaGVj
a2JveFNpemVzKClbY29udHJvbFNpemVdIDogcmFkaW9TaXplcygpW2NvbnRyb2xTaXplXTsKQEAg
LTQxMiw5ICs0MTIsOSBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFy
dCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIGlmICh6b29tRmFj
dG9yICE9IDEuMGYpIHsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVj
dC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRIZWlnaHQo
aW5mbGF0ZWRSZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAg
Y29udGV4dC0+dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7
CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVj
dC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29t
RmFjdG9yKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAt
aW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKQEAgLTQzMSwxMSArNDMxLDExIEBAIHN0YXRpYyB2
b2lkIHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0
ZXMmIGNvbnRyb2xTdGF0CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTAwMAogICAgIGlmIChbdG9nZ2xlQnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5n
XSkgewotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0
ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwot
ICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7Cisg
ICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55
KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgwLCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICBb
dG9nZ2xlQnV0dG9uQ2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNNYWtlUG9pbnQoMCwgMCldOwor
ICAgICAgICBbdG9nZ2xlQnV0dG9uQ2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5D
b250ZXh0OmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkgYXRMb2NhdGlvbjpOU01ha2VQb2ludCgw
LCAwKV07CiAgICAgICAgIGlmICghW3RvZ2dsZUJ1dHRvbkNlbGwgX3N0YXRlQW5pbWF0aW9uUnVu
bmluZ10gJiYgaXNDZWxsRm9jdXNlZCkKICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IFRoZW1l
TWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCh0b2dnbGVCdXR0b25D
ZWxsLmdldCgpLCBjb250ZXh0LCBpbmZsYXRlZFJlY3QsIHZpZXcsIGZhbHNlLCB0cnVlLCB1c2VJ
bWFnZUJ1ZmZlciwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0gZWxzZQpAQCAtNTIwLDE0ICs1
MjAsMTQgQEAgc3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMKICAgICByZXR1cm4gY2VsbDsKIH0KICAg
ICAKLXN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0
ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3
LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQorc3RhdGlj
IHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJv
bFN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21l
ZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TCiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQg
aGVpZ2h0IG5lZWRlZCBmb3IgdGhlIGNvbnRyb2wgYW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBh
aW50aW5nLgogICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVz
LnN0YXRlcygpOwogICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBj
b250cm9sU3RhdGVzLCBJbnRTaXplKHpvb21lZFJlY3Quc2l6ZSgpKSwgem9vbUZhY3Rvcik7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBOU0Nv
bnRyb2xTaXplIGNvbnRyb2xTaXplID0gW2J1dHRvbkNlbGwgY29udHJvbFNpemVdOwogICAgIElu
dFNpemUgem9vbWVkU2l6ZSA9IGJ1dHRvblNpemVzKClbY29udHJvbFNpemVdOwpAQCAtNTQ3LDkg
KzU0Nyw5IEBAIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRy
b2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzCiAgICAgICAgIGlmICh6b29tRmFjdG9y
ICE9IDEuMGYpIHsKICAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJl
Y3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhl
aWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9y
KSk7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1p
bmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVk
UmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAgICAgICAgICAgY29udGV4dC5zY2FsZShG
bG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICAgICAg
fQogICAgIH0KICAgICAKQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBz
dGVwcGVyQ29udHJvbFNpemVGb3JGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHJl
dHVybiBOU01pbmlDb250cm9sU2l6ZTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENv
bnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQorc3RhdGlj
IHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3Is
IFNjcm9sbFZpZXcqKQogewogICAgIC8vIFdlIGRvbid0IHVzZSBOU1N0ZXBwZXJDZWxsIGJlY2F1
c2UgdGhlcmUgYXJlIG5vIHdheXMgdG8gZHJhdyBhbgogICAgIC8vIE5TU3RlcHBlckNlbGwgd2l0
aCB0aGUgdXAgYnV0dG9uIGhpZ2hsaWdodGVkLgpAQCAtNjE3LDEzICs2MTcsMTMgQEAgc3RhdGlj
IHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogICAgICAgICBkcmF3SW5mby5raW5kID0ga1RoZW1lSW5jRGVjQnV0
dG9uOwogCiAgICAgSW50UmVjdCByZWN0KHpvb21lZFJlY3QpOwotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYp
IHsKICAgICAgICAgcmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAg
ICAgICAgcmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAg
ICBjb250ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgY29u
dGV4dC0+dHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50
cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9h
dFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgfQogICAgIENHUmVjdCBib3VuZHMocmVjdCk7
CiAgICAgQ0dSZWN0IGJhY2tncm91bmRCb3VuZHM7CkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBU
aGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiBj
b25zdCBmbG9hdCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGggPSAzLjBmOwogCi1ib29sIFRo
ZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqIGNl
bGwsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbmZsYXRlZFJl
Y3QsIE5TVmlldyogdmlldywgYm9vbCBkcmF3QnV0dG9uQ2VsbCwgYm9vbCBkcmF3Rm9jdXNSaW5n
LCBib29sIHVzZUltYWdlQnVmZmVyLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK2Jvb2wgVGhl
bWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2Vs
bCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluZmxhdGVkUmVj
dCwgTlNWaWV3KiB2aWV3LCBib29sIGRyYXdCdXR0b25DZWxsLCBib29sIGRyYXdGb2N1c1Jpbmcs
IGJvb2wgdXNlSW1hZ2VCdWZmZXIsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIEFT
U0VSVChkcmF3QnV0dG9uQ2VsbCB8fCBkcmF3Rm9jdXNSaW5nKTsKICAgICBib29sIG5lZWRzUmVw
YWludCA9IGZhbHNlOwpAQCAtNjc5LDcgKzY3OSw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxs
T3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3NDb250
CiAgICAgICAgICAgICBpZiAoZHJhd0ZvY3VzUmluZykKICAgICAgICAgICAgICAgICBuZWVkc1Jl
cGFpbnQgPSBkcmF3Q2VsbEZvY3VzUmluZyhjZWxsLCBpbWFnZUJ1ZmZlckRyYXdSZWN0LCB2aWV3
KTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIuZ2V0KCksIENvbG9yU3BhY2VTUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSAtIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQo
KSwgQ29sb3JTcGFjZVNSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1
dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7
CiAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgfQogICAgIGlmIChkcmF3QnV0dG9u
Q2VsbCkKQEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBh
aW50UmVjdChDb250cm9sUGFydCBwYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiBzdAogICAgIEVO
RF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJv
bFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xs
Vmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2Fs
ZUZhY3RvcikKK3ZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xT
dGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCiB7CiAgICAgc3dp
dGNoIChwYXJ0KSB7CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggNTRkOWM4NTdkZjQwMmI4MmQ3YTdkMTMwZjhm
NzYxODVlMmJkNzlhYS4uYjMwZmQ4MTM0M2MwNmFjZDg5YmE4ZjllMmY2NzQzNzZmNmVhZDAyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xODUsOSArMTg1
LDkgQEAgTlNWaWV3ICpXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZp
ZXc7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IElu
dFJlY3QmIHIpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJ
bnRSZWN0JiByKQogewotICAgIGlmIChwLT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHAu
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNWaWV3ICp2aWV3ID0g
Z2V0T3V0ZXJWaWV3KCk7CiAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQogICAgICAgICAgICAgc2Nyb2xs
VmlldyA9IDA7CiAgICAgfQogCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHAtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwLnBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIEFTU0VSVChjZ0NvbnRleHQgPT0gW2N1cnJlbnRDb250ZXh0IGdyYXBoaWNz
UG9ydF0pOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzYjQ5NzY2MGNjOTY4YjMw
MWRjZjA2N2U0M2Y4ZWM1ODg5NzFkMTI2Li40NmE3Y2I3MTEyMmEwNGUyNmI2YmEyZTE2MTkwMzdh
OGJhZDhkNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNw
cApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNl
dFNpemUoY29uc3QgSW50U2l6ZSYpCiB7CiB9CiAKLXZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIE1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmgKaW5kZXggMWMxZjIxODJlOTU5MzdjN2FjNDViYjU4NzRiZWRmYzBiMGNkMTJiMC4uMDMyNjFm
YWM2MmY0M2ZjOGFhMmMwZDcxMDc3ODM2NjIwN2E1M2IwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgY3Vy
cmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1
cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtX
aXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1l
ZGlhVGltZSYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Njcm9sbGJhclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5jcHAKaW5kZXggYzY1NGFiMTAzMTlmNzE1MDRkMTRmN2UyMWFlN2Qx
NTY1YTRmMDkwYi4uM2EwOTQ0NDIzYjY4NGI4MzgxYjdhNDNhOWE4OTZiMzlhZjliNDM2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3Bw
CkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1Bp
ZWNlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3IKICAgICBpZiAoc2Ny
b2xsYmFyVGhlbWUpCiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRp
YWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBwYXJ0LCBzdGF0ZSk7CiAKLSAgICBMb2Nh
bFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5k
KTsKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIHJlY3Qs
IGFscGhhQmxlbmQpOwogICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogCiAgICAgaWYgKHNjcm9s
bGJhclRoZW1lKQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiCiAg
ICAgaWYgKHNjcm9sbGJhclRoZW1lKQogICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tn
cm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChzY3JvbGxiYXJUaGVtZSwgU1BfQlVUVE9OLCB4cFN0
YXRlKTsKIAotICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQs
IHJlY3QsIGFscGhhQmxlbmQpOworICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRl
eHQoY29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7
CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQogICAgICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNj
cm9sbGJhclRoZW1lLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwgU1BfQlVUVE9OLCB4cFN0YXRlLCAm
dGhlbWVSZWN0LCAwKTsKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2lu
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxi
YQogICAgIGJvb2wgYWxwaGFCbGVuZCA9IGZhbHNlOwogICAgIGlmIChzY3JvbGxiYXJUaGVtZSkK
ICAgICAgICAgYWxwaGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5VHJhbnNwYXJl
bnQoc2Nyb2xsYmFyVGhlbWUsIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUpOwotICAgIExvY2Fs
V2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQp
OworICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdCwg
YWxwaGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAgICAgaWYgKHNjcm9sbGJh
clRoZW1lKSB7CiAgICAgICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xsYmFyVGhlbWUsIHdp
bmRvd3NDb250ZXh0LmhkYygpLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQsIHN0YXRlLCAmdGhlbWVSZWN0
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKaW5kZXggMjcx
ZTM2ZDVjYjMxMGY1ZjY4ODdkZDIzNzkwYTliNmJhNDY4ZjBhMC4uOWFjZTFhMTQ4NTI0OWQ3NTZl
MWJkM2UyMmU3ZTE2MDY0MDVlOWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1dpZGdldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dp
ZGdldFdpbi5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25z
dCBDdXJzb3ImIGN1cnNvcikKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJz
b3IpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4
IDQ2OWY3ZWZlZTg3Zjc1MjE0MjI1MjZkYzY2NWE2YzQxNmQ0ZWY4MzUuLjJlOGZkMGJiMGEyZTBi
YTQzYjZlYzU1NjBhNDM0ZDZiZmZmZGI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Vs
bGlwc2lzQm94LmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIEVsbGlwc2lzQm94OjpFbGxpcHNpc0Jv
eChSZW5kZXJCbG9ja0Zsb3cmIHJlbmRlcmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lz
CiAKIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lQm90dG9tKQogewotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
KCk7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgp
OwogICAgIENvbG9yIHRleHRDb2xvciA9IGxpbmVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9yKTsKLSAgICBpZiAodGV4dENvbG9yICE9IGNv
bnRleHQtPmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENv
bG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAodGV4dENvbG9yICE9IGNvbnRl
eHQuZmlsbENvbG9yKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvciwg
bGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAg
ICBpZiAobGluZVN0eWxlLnRleHRTaGFkb3coKSkgewotICAgICAgICBjb250ZXh0LT5zZXRTaGFk
b3coTGF5b3V0U2l6ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxpbmVTdHlsZS50ZXh0
U2hhZG93KCktPnkoKSksCisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KExheW91dFNpemUobGlu
ZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkpLAog
ICAgICAgICAgICAgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+cmFkaXVzKCksIGxpbmVTdHlsZS50
ZXh0U2hhZG93KCktPmNvbG9yKCksIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICBz
ZXRTaGFkb3cgPSB0cnVlOwogICAgIH0KQEAgLTYxLDE4ICs2MSwxOCBAQCB2b2lkIEVsbGlwc2lz
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LCBMYQogICAgICAgICAvLyBTZWxlY3QgdGhlIGNvcnJlY3QgY29sb3IgZm9yIHBhaW50
aW5nIHRoZSB0ZXh0LgogICAgICAgICBDb2xvciBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNl
VGV4dENvbG9yKCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiBibG9ja0Zsb3coKS5z
ZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGZvcmVncm91bmQuaXNWYWxp
ZCgpICYmIGZvcmVncm91bmQgIT0gdGV4dENvbG9yKQotICAgICAgICAgICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoZm9yZWdyb3VuZCwgbGluZVN0eWxlLmNvbG9yU3BhY2Uo
KSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBi
eSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cuCi0gICAgY29udGV4dC0+ZHJh
d1RleHQoZm9udCwgUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBm
b250LCBtX3N0ciwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9p
bnQoeCgpICsgcGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5
bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkpOworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
UmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwg
bGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFp
bnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJp
Y3MoKS5hc2NlbnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxsIGNvbG9y
LgotICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENvbG9yKCkpCi0gICAgICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgIGlmICh0ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAg
IGlmIChzZXRTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7CisgICAgICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKIAogICAgIHBhaW50TWFya3VwQm94KHBhaW50SW5mbywg
cGFpbnRPZmZzZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20sIGxpbmVTdHlsZSk7CiB9CkBAIC0xMTks
NyArMTE5LDcgQEAgSW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgpCiAgICAgcmV0
dXJuIGVuY2xvc2luZ0ludFJlY3Qoc2VsZWN0aW9uUmVjdCk7CiB9CiAKLXZvaWQgRWxsaXBzaXNC
b3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRD
YXNjYWRlJiBmb250KQordm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiB7CiAgICAgQ29sb3Ig
dGV4dENvbG9yID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
OwogICAgIENvbG9yIGMgPSBibG9ja0Zsb3coKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsK
QEAgLTEzMiwxMiArMTMyLDEyIEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgICAgIGMg
PSBDb2xvcigweGZmIC0gYy5yZWQoKSwgMHhmZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgp
KTsKIAogICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7Ci0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxh
Z3MgYmVsb3cuCiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdCh4KCkg
KyBwYWludE9mZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIHJvb3RCb3guc2VsZWN0
aW9uVG9wKCksIDAsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIFRleHRSdW4gcnVu
ID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0
ciwgc3R5bGUsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0
aW9uUmVjdEZvclRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCAwLCAtMSk7Ci0gICAgY29udGV4dC0+
ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVj
dGlvblJlY3QsIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4u
bHRyKCkpLCBjLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBz
dHlsZS5jb2xvclNwYWNlKCkpOwogfQogCiBib29sIEVsbGlwc2lzQm94Ojpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20sIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0VsbGlwc2lzQm94LmgKaW5kZXggMjdlOTEyZmZmYTAzYTU0ZTEyNGQ5YmQzMmZjNzE5MTY2MzFj
YjI1MS4uNDRjMDVkYWYxYWQyNGJjZmIwOGZjM2M0OWNkYTE0YWI3NmNmMTEwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHBhaW50TWFya3VwQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIGNv
bnN0IFJlbmRlclN0eWxlJik7CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVp
Z2h0OyB9CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlv
blN0YXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQotICAgIHZvaWQg
cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CisgICAgdm9pZCBwYWludFNlbGVj
dGlvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgRm9udENhc2NhZGUmKTsKICAgICBJbmxpbmVCb3gqIG1hcmt1cEJveCgpIGNv
bnN0OwogCiAgICAgYm9vbCBtX3Nob3VsZFBhaW50TWFya3VwQm94OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggNjJkYWM0Yjhi
NDYyMjM4N2I4ZGNjZTc4ZmVhMjA5MmQyMTQ0MGU1Yy4uNTc1N2U5YTg1MTgzYzA3NjgwYmExOWY0
YTZhMzIxZTY1NzZkMWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjp+RmlsdGVyRWZmZWN0UmVuZGVyZXIoKQogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVm
ZmVjdFJlbmRlcmVyOjppbnB1dENvbnRleHQoKQogewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgp
ID8gc291cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogMDsKKyAgICByZXR1cm4gc291cmNlSW1hZ2Uo
KSA/ICZzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCiBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVy
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlv
dXNFZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQpAQCAt
NDE3LDcgKzQxNyw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmJlZ2luRmls
dGVyRWZmZWN0KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlv
bkNvbnRleHQpCit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVm
ZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKIHsKICAgICBBU1NFUlQo
bV9oYXZlRmlsdGVyRWZmZWN0ICYmIG1fcmVuZGVyTGF5ZXItPmZpbHRlclJlbmRlcmVyKCkpOwog
ICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSBtX3JlbmRlckxheWVyLT5maWx0ZXJS
ZW5kZXJlcigpOwpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJI
ZWxwZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25DCiAg
ICAgTGF5b3V0UmVjdCBkZXN0UmVjdCA9IGZpbHRlci0+b3V0cHV0UmVjdCgpOwogICAgIGRlc3RS
ZWN0Lm1vdmUobV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAotICAgIGRl
c3RpbmF0aW9uQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0cHV0KCksIG1fcmVu
ZGVyTGF5ZXItPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgZGVzdGluYXRp
b25Db250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVy
LT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAogICAgICAgICBzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJl
c3VsdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmgKaW5kZXggYmViM2Y3N2M0OGEwYTJiNGZhMTNiNmU2NDU2Y2IzYTc3YTliMGY2OC4uM2Ux
MzM3ZDNkMTVmNzYxMTkzNGQ1YzZkNTc2YTlmMTgyMDE0NzhhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTY5LDcgKzY5LDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBwcmVwYXJlRmlsdGVyRWZmZWN0KFJlbmRlckxheWVyKiwgY29u
c3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKICAgICBib29sIGJlZ2luRmls
dGVyRWZmZWN0KCk7Ci0gICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQq
IGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGlj
c0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgCiAgICAgR3JhcGhpY3NDb250ZXh0
KiBmaWx0ZXJDb250ZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCBjNGE2ZTQzYzY3MjJmNDEwZjdi
ZjkwZDEwOGI4YzU2MGMzMjAwMDljLi42ZmI4MzQyNDI3NDc5NDQxOGNhODAzM2Q3YjRkYWQ3MWI3
ZDEzNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0
eUNvbnRyb2xsZXIuY3BwCkBAIC05OSwxMSArOTksMTEgQEAgdm9pZCBJbWFnZVF1YWxpdHlDb250
cm9sbGVyOjpyZXN0YXJ0VGltZXIoKQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KGNMb3dRdWFs
aXR5VGltZVRocmVzaG9sZCk7CiB9CiAKLWJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25z
dCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQ
YWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBvYmplY3QsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExh
eW91dFNpemUmIHNpemUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBp
bWFnZSwgdGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQg
aGlnaAogICAgIC8vIHF1YWxpdHkuCi0gICAgaWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1h
cEltYWdlKCkgfHwgaW1hZ2UtPmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1hcEltYWdl
KCkgfHwgaW1hZ2UtPmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0
eWxlKCkuaW1hZ2VSZW5kZXJpbmcoKSkgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgSW1hZ2VR
dWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7
CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC5n
ZXRDVE0oKTsKICAgICBib29sIGNvbnRleHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlz
SWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCk7CiAgICAgaWYgKCFjb250ZXh0SXNTY2Fs
ZWQgJiYgc2l6ZSA9PSBpbWFnZVNpemUpIHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUg
aW4gZWZmZWN0LiBJZiB3ZSBoYWQgYSBzY2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVz
dCByZW1vdmUgdGhpcyBvYmplY3QgZnJvbSB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IDI1ZDdlZTkyZjU3Y2Vh
MzZiYTY3NjMzOWI4Njg2ZmNhMzVjYmE1YmQuLmQxNGRjNDlhYTc5YWYzMTVkYWM4ZTFkNTEyMWMz
NDAyNjBlZjY1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1
YWxpdHlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVh
bGl0eUNvbnRyb2xsZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250
cm9sbGVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNv
bnN0IFJlbmRlclZpZXcmKTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3Jh
cGhpY3NDb250ZXh0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQq
IGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVh
bGl0eShHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29u
c3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRlcmVyV2ls
bEJlRGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmpl
Y3QoJnJlbmRlcmVyKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUZsb3dCb3guY3BwCmluZGV4IDM1OWJlZDY1NjMxZjE3ZGY4NTQ5YjdlYzM0NjBhOGIwOTNm
ZTAxZjkuLmE4NzRjZGMxYzdkMWQxZTc4ZTRiNzc2MDk5ZWNjYTBjOGI0YjNiOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEyMjAsOCArMTIyMCw4
IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJs
ZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNP
UkFUSU9OX0JSRUFLKQogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hEZWNvcmF0
aW9uQnJlYWsoKSA9PSBEQ0xPTkUpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5jbGlwKExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQo
KSkpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJ
bmZvLmNvbnRleHQoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRS
ZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcmVu
ZGVyZXIoKS5wYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCBy
ZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUoKSwgb3ApOwogICAgIH0K
ICNlbmRpZgpAQCAtMTI1Miw4ICsxMjUyLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZp
bGxMYXllcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGMKICAg
ICAgICAgTGF5b3V0VW5pdCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExvZ2lj
YWxXaWR0aCA6IExheW91dFVuaXQod2lkdGgoKSk7CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBI
ZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IExheW91dFVuaXQoaGVpZ2h0KCkpIDogdG90YWxMb2dp
Y2FsV2lkdGg7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKExh
eW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRSZWN0KHJlY3QueCgp
LCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWlu
dEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0
cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5v
bmUsIHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAgICAgfQogfQpAQCAtMTMzNyw3ICsxMzM3LDcg
QEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0
UG9pbnQgYWRqdXN0ZWRQYWludG9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYWxSZWN0LmxvY2F0
aW9uKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7
CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAg
ICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludG9mZnNldCwg
ZnJhbWVSZWN0LnNpemUoKSk7CiAgICAgLy8gU2hhZG93IGNvbWVzIGZpcnN0IGFuZCBpcyBiZWhp
bmQgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlci4KICAgICBpZiAoIXJlbmRlcmVyKCkuYm94U2hh
ZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGFkanVzdGVkUGFpbnRvZmZzZXQsIEJhY2tn
cm91bmRCbGVlZE5vbmUsIHRoaXMpKQpAQCAtMTM4Miw4ICsxMzgyLDggQEAgdm9pZCBJbmxpbmVG
bG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYKICAgICAgICAgTGF5b3V0VW5pdCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRh
bCgpID8gZnJhbWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdCA9IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW1hZ2VTdHJpcCh0aGlz
LCBib3JkZXJJbWFnZSwgcGFpbnRSZWN0KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVj
dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
KTsKKyAgICAgICAgY29udGV4dC5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAgcmVuZGVyZXIoKS5w
YWludEJvcmRlcihwYWludEluZm8sIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lk
dGgsIHN0cmlwSGVpZ2h0KSwgbGluZVN0eWxlKTsKICAgICB9CiB9CkBAIC0xNDE1LDggKzE0MTUs
OCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAKICAgICAgICAgY29tcG9zaXRl
T3AgPSBDb21wb3NpdGVEZXN0aW5hdGlvbkluOwogICAgICAgICBpZiAocHVzaFRyYW5zcGFyZW5j
eUxheWVyKSB7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7CisgICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxLjBmKTsKICAgICAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE0MjcsMTQgKzE0MjcsMTQgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnMKICAgICBib29sIGhhc0JveEltYWdlID0gbWFza0JveEltYWdlICYmIG1hc2tCb3hJ
bWFnZS0+Y2FuUmVuZGVyKCZyZW5kZXJlcigpLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpKTsKICAgICBpZiAoIWhhc0JveEltYWdlIHx8ICFtYXNrQm94SW1hZ2UtPmlzTG9hZGVk
KCkpIHsKICAgICAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICByZXR1cm47
IC8vIERvbid0IHBhaW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBs
b2FkLgogICAgIH0KIAogICAgIC8vIFRoZSBzaW1wbGUgY2FzZSBpcyB3aGVyZSB3ZSBhcmUgdGhl
IG9ubHkgYm94IGZvciB0aGlzIG9iamVjdC4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgb25seSBh
IHNpbmdsZSBjYWxsIHRvIGRyYXcgaXMgcmVxdWlyZWQuCiAgICAgaWYgKCFwcmV2TGluZUJveCgp
ICYmICFuZXh0TGluZUJveCgpKSB7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJ
bWFnZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBm
cmFtZVJlY3Quc2l6ZSgpKSwgcmVuZGVyZXIoKS5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2Us
IGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludE5pbmVQaWVjZUltYWdlKHBh
aW50SW5mby5jb250ZXh0KCksIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVS
ZWN0LnNpemUoKSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21w
b3NpdGVPcCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIG1hc2sgaW1hZ2Ug
dGhhdCBzcGFucyBtdWx0aXBsZSBsaW5lcy4KICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3Qg
X3R4IGFuZCBfdHkgYnkgdGhlIHdpZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KQEAgLTE0NTAs
MTMgKzE0NTAsMTMgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgTGF5b3V0VW5p
dCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gZnJhbWVSZWN0LmhlaWdodCgpIDogdG90
YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGNsaXBSZWN0
Rm9yTmluZVBpZWNlSW1hZ2VTdHJpcCh0aGlzLCBtYXNrTmluZVBpZWNlSW1hZ2UsIHBhaW50UmVj
dCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7
Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4
dCwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBy
ZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CisgICAg
ICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCgpLCBM
YXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHJlbmRl
cmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgfQog
ICAgIAogICAgIGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKIElubGluZUJveCogSW5saW5lRmxvd0Jv
eDo6Zmlyc3RMZWFmQ2hpbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCmluZGV4IDllNmQyY2VjMGZkNDU0M2E2N2FhNzhmYmMyZDcxZDJkZjgyNDBi
OGIuLmYzNTEzZGMzZDUyY2M3YzU0ZGFkNzBiNDlhMTFjMmNmZjE0ZDZmZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2
b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9QYWludEluZm8uaAppbmRleCAxNWIxZjI0MTI4Mjc0NGRjNWJkNmRiNWMyZjljZGYxNzg4NWI4
OTg0Li5kZGJjOTMzNTBhNzMyYTMxNTVjNzc0ZWNhMjg0OTQ0M2M0YjQzNjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCkBAIC00OSwyMCArNDksMzEgQEAgdHlwZWRlZiBIYXNo
TWFwPE92ZXJsYXBUZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVz
dE1hcDsKICAqICh0eHx0eSkgaXMgdGhlIGNhbGN1bGF0ZWQgcG9zaXRpb24gb2YgdGhlIHBhcmVu
dAogICovCiBzdHJ1Y3QgUGFpbnRJbmZvIHsKLSAgICBQYWludEluZm8oR3JhcGhpY3NDb250ZXh0
KiBuZXdDb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBuZXdSZWN0LCBQYWludFBoYXNlIG5ld1Bo
YXNlLCBQYWludEJlaGF2aW9yIG5ld1BhaW50QmVoYXZpb3IsCisgICAgUGFpbnRJbmZvKEdyYXBo
aWNzQ29udGV4dCYgbmV3Q29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQ
aGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAogICAgICAgICBS
ZW5kZXJPYmplY3QqIG5ld1N1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBMaXN0SGFzaFNldDxS
ZW5kZXJJbmxpbmUqPiogbmV3T3V0bGluZU9iamVjdHMgPSBudWxscHRyLAogICAgICAgICBPdmVy
bGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMgPSBudWxscHRyLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBuZXdQYWludENvbnRhaW5lciA9IG51bGxwdHIpCi0gICAg
ICAgICAgICA6IGNvbnRleHQobmV3Q29udGV4dCkKLSAgICAgICAgICAgICwgcmVjdChuZXdSZWN0
KQorICAgICAgICAgICAgOiByZWN0KG5ld1JlY3QpCiAgICAgICAgICAgICAsIHBoYXNlKG5ld1Bo
YXNlKQogICAgICAgICAgICAgLCBwYWludEJlaGF2aW9yKG5ld1BhaW50QmVoYXZpb3IpCiAgICAg
ICAgICAgICAsIHN1YnRyZWVQYWludFJvb3QobmV3U3VidHJlZVBhaW50Um9vdCkKICAgICAgICAg
ICAgICwgb3V0bGluZU9iamVjdHMobmV3T3V0bGluZU9iamVjdHMpCiAgICAgICAgICAgICAsIG92
ZXJsYXBUZXN0UmVxdWVzdHMob3ZlcmxhcFRlc3RSZXF1ZXN0cykKICAgICAgICAgICAgICwgcGFp
bnRDb250YWluZXIobmV3UGFpbnRDb250YWluZXIpCisgICAgICAgICAgICAsIG1fY29udGV4dCgm
bmV3Q29udGV4dCkKICAgICB7CiAgICAgfQogCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHQpOworICAgICAgICByZXR1
cm4gKm1fY29udGV4dDsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0ID0gJmNvbnRleHQ7CisgICAg
fQorCiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlUGFpbnRSb290Rm9yQ2hpbGRyZW4oY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICB7CiAgICAgICAgIGlmICghc3VidHJlZVBhaW50Um9v
dCkKQEAgLTkzLDcgKzEwNCw3IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICBpZiAobG9j
YWxUb0FuY2VzdG9yVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBjb250ZXh0LT5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsK
KyAgICAgICAgY29udGV4dCgpLmNvbmNhdENUTShsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0pOwog
CiAgICAgICAgIGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEwMyw3ICsxMTQsNiBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgcmVjdC5zZXRTaXpl
KExheW91dFNpemUodHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQogCi0gICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0OwogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBQYWludFBoYXNl
IHBoYXNlOwogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKQEAgLTExMSw2ICsxMjEs
OSBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiog
b3V0bGluZU9iamVjdHM7IC8vIHVzZWQgdG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3VsZCBiZSBw
YWludGVkIGJ5IGEgYmxvY2sgd2l0aCBpbmxpbmUgY2hpbGRyZW4KICAgICBPdmVybGFwVGVzdFJl
cXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcGFpbnRDb250YWluZXI7IC8vIHRoZSBsYXllciBvYmplY3QgdGhhdCBvcmlnaW5h
dGVzIHRoZSBjdXJyZW50IHBhaW50aW5nCisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0
KiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5YWRlNzk0YTU3ZjFkMDBjYTc0NjViNGNj
M2ZkMGY4Yzg2MDNjNTJhLi44NjQ5NmRmYTliNzUwYTM5ZmFjNzc1YzlkMTFkYzk2NGM5MmRiZGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MjAsNyAr
MTQyMCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8gei1pbmRleC4gIFdlIHBhaW50
IGFmdGVyIHdlIHBhaW50ZWQgdGhlIGJhY2tncm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3Jv
bGxiYXJzIHdpbGwKICAgICAvLyBzaXQgYWJvdmUgdGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAg
IGlmICgocGhhc2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWlu
dFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmQpICYmIGhhc092ZXJmbG93Q2xpcCgpICYmIHN0eWxl
KCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGlu
Um9vdCgqdGhpcykgJiYgIXBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQotICAg
ICAgICBsYXllcigpLT5wYWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHJv
dW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJlY3QocGFpbnRJ
bmZvLnJlY3QpKTsKKyAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50
SW5mby5jb250ZXh0KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25h
cHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cGFp
bnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQpAQCAtMTUxNiw5ICsxNTE2LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDYXJl
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKIAog
ICAgIGlmIChjYXJldFBhaW50ZXIgPT0gdGhpcyAmJiAoaXNDb250ZW50RWRpdGFibGUgfHwgY2Fy
ZXRCcm93c2luZykpIHsKICAgICAgICAgaWYgKHR5cGUgPT0gQ3Vyc29yQ2FyZXQpCi0gICAgICAg
ICAgICBmcmFtZSgpLnNlbGVjdGlvbigpLnBhaW50Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQsIHBh
aW50T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLnNlbGVjdGlv
bigpLnBhaW50Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRPZmZzZXQsIHBhaW50SW5m
by5yZWN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRyYWdD
YXJldENvbnRyb2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNvbnRl
eHQsIHBhaW50T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLnBh
Z2UoKS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLnBhaW50RHJhZ0NhcmV0KCZmcmFtZSgpLCBwYWlu
dEluZm8uY29udGV4dCgpLCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnJlY3QpOwogICAgIH0KIH0K
IApAQCAtMTUzOCwxNiArMTUzOCwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAg
ICAgICAgICAgIC8vIG92ZXJmbG93cyByZWdpb24gWCBhbmQgaXMgYW4gdW5zcGxpdHRhYmxlIGVs
ZW1lbnQgKGxpa2UgYW4gaW1hZ2UpLgogICAgICAgICAgICAgICAgIC8vIFRoZSBzYW1lIGFwcGxp
ZXMgZm9yIGEgYm94IG92ZXJmbG93aW5nIHRoZSB0b3Agb2YgcmVnaW9uIFggd2hlbiB0aGF0IGJv
eCBpcyBhbHNvIGZyYWdtZW50ZWQgaW4gcmVnaW9uIFgtMS4KIAotICAgICAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zYXZlKCk7CiAgICAgICAgICAgICAgICAgZGlkQ2xpcFRvUmVnaW9uID0gdHJ1ZTsKIAot
ICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGRvd25jYXN0PFJlbmRlck5h
bWVkRmxvd1RocmVhZD4oKnBhaW50SW5mby5wYWludENvbnRhaW5lcikuZGVjb3JhdGlvbnNDbGlw
UmVjdEZvckJveEluTmFtZWRGbG93RnJhZ21lbnQoKnRoaXMsICpuYW1lZEZsb3dGcmFnbWVudCkp
OworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChkb3duY2FzdDxSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ+KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25z
Q2xpcFJlY3RGb3JCb3hJbk5hbWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21l
bnQpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhw
YWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGRp
ZENsaXBUb1JlZ2lvbikKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9y
ZSgpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpw
YWludFNlbGVjdGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50TwogICAgICAgICBMYXlvdXRVbml0IGxhc3RUb3AgPSAwOwogICAgICAgICBMYXlvdXRVbml0
IGxhc3RMZWZ0ID0gbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoKnRoaXMsIGxhc3RUb3AsIGNh
Y2hlKTsKICAgICAgICAgTGF5b3V0VW5pdCBsYXN0UmlnaHQgPSBsb2dpY2FsUmlnaHRTZWxlY3Rp
b25PZmZzZXQoKnRoaXMsIGxhc3RUb3AsIGNhY2hlKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAog
ICAgICAgICBMYXlvdXRSZWN0IGdhcFJlY3RzQm91bmRzID0gc2VsZWN0aW9uR2FwcygqdGhpcywg
cGFpbnRPZmZzZXQsIExheW91dFNpemUoKSwgbGFzdFRvcCwgbGFzdExlZnQsIGxhc3RSaWdodCwg
Y2FjaGUsICZwYWludEluZm8pOwogICAgICAgICBpZiAoIWdhcFJlY3RzQm91bmRzLmlzRW1wdHko
KSkgewpAQCAtMTc5Niw3ICsxNzk2LDcgQEAgc3RhdGljIHZvaWQgY2xpcE91dFBvc2l0aW9uZWRP
YmplY3RzKGNvbnN0IFBhaW50SW5mbyogcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2kKICAgICBU
cmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25l
ZE9iamVjdHMtPmVuZCgpOwogICAgIGZvciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICBSZW5kZXJCb3gqIHIgPSAqaXQ7Ci0gICAgICAgIHBhaW50SW5mby0+
Y29udGV4dC0+Y2xpcE91dChJbnRSZWN0KG9mZnNldC54KCkgKyByLT54KCksIG9mZnNldC55KCkg
KyByLT55KCksIHItPndpZHRoKCksIHItPmhlaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby0+
Y29udGV4dCgpLmNsaXBPdXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgp
ICsgci0+eSgpLCByLT53aWR0aCgpLCByLT5oZWlnaHQoKSkpOwogICAgIH0KIH0KIApAQCAtMTk2
Niw3ICsxOTY2LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXAo
UmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG8KIAogICAgIExheW91dFJlY3Qg
Z2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1Bo
eXNpY2FsUG9zaXRpb24sIExheW91dFJlY3QobG9naWNhbExlZnQsIGxvZ2ljYWxUb3AsIGxvZ2lj
YWxXaWR0aCwgbG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBh
aW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0
LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQo
KS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTE5ODMsNyArMTk4Myw3
IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJlbmRl
ckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExhCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSBy
b290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0
aW9uLCBMYXlvdXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9w
LCByb290QmxvY2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJ
bmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2Jq
LT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2Jq
LT5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTIwMDAsNyArMjAwMCw3IEBAIExheW91
dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYg
cm9vdEJsb2NrLCBjb25zdCBMCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2su
bG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlv
dXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290Qmxv
Y2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAg
ICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Z2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Z2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAg
cmV0dXJuIGdhcFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggNjdkNzIxNDA0MmIyYTc1MmQ3Mjk0MDQ5ODc4ZjQ1YTkyOWYxNjRi
ZS4uZTFmM2YxN2I5MGUwNDk4OWExNDJhNzRlY2Y1NGQ3ZTllN2NiYWZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIxNDQsNyArMjE0NCw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKIHsKICAgICBSZW5kZXJCbG9jazo6cGFpbnRDb2x1
bW5SdWxlcyhwYWludEluZm8sIHBvaW50KTsKICAgICAKLSAgICBpZiAoIW11bHRpQ29sdW1uRmxv
d1RocmVhZCgpIHx8IHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAg
aWYgKCFtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIG91
ciBjaGlsZHJlbiBhbmQgcGFpbnQgdGhlIGNvbHVtbiBydWxlcyBhcyBuZWVkZWQuCkBAIC0yMTk2
LDcgKzIxOTYsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0
cyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBQYWludAogICAgICAgICAgICAgICAgIGZs
b2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLndpZHRoKCksIGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJl
cigpLmhlaWdodCgpKTsKICAgICAgICAgICAgIHJvb3RCbG9jay5mbGlwRm9yV3JpdGluZ01vZGUo
ZmxvYXRCb3gpOwogICAgICAgICAgICAgZmxvYXRCb3gubW92ZShyb290QmxvY2tQaHlzaWNhbFBv
c2l0aW9uLngoKSwgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi55KCkpOwotICAgICAgICAgICAg
cGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7Cisg
ICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZs
b2F0Qm94KSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IGFlNmFlYTViNWQ3ODE3YTczZDk5MTM4MGYwZGMwNzI4ZWU1N2VlMjIu
LmZmMTkxZWE4OTlkMTkwOTFkYjBhOTJmYzg1NDRjYjA2ZDM2YmU0ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjQyLDkgKzEyNDIsOSBAQCB2b2lkIFJlbmRl
ckJveDo6cGFpbnRSb290Qm94RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykK
ICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBiZ0NvbG9yLCBiZ0xheWVyLCB2aWV3KCku
YmFja2dyb3VuZFJlY3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgJnJvb3RCYWNrZ3JvdW5kUmVuZGVyZXIpOwogfQogCi1CYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KSBjb25zdAorQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJv
eDo6ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAg
IGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEJhY2tncm91
bmRCbGVlZE5vbmU7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHls
ZSgpOwpAQCAtMTI1Miw3ICsxMjUyLDcgQEAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRl
ckJveDo6ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ28KICAgICBp
ZiAoIXN0eWxlLmhhc0JhY2tncm91bmQoKSB8fCAhc3R5bGUuaGFzQm9yZGVyKCkgfHwgIXN0eWxl
Lmhhc0JvcmRlclJhZGl1cygpIHx8IGJvcmRlckltYWdlSXNMb2FkZWRBbmRDYW5CZVJlbmRlcmVk
KCkpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWROb25lOwogCi0gICAgQWZmaW5lVHJh
bnNmb3JtIGN0bSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0g
PSBjb250ZXh0LmdldENUTSgpOwogICAgIEZsb2F0U2l6ZSBjb250ZXh0U2NhbGluZyhzdGF0aWNf
Y2FzdDxmbG9hdD4oY3RtLnhTY2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS55U2NhbGUo
KSkpOwogCiAgICAgLy8gQmVjYXVzZSBSb3VuZGVkUmVjdCB1c2VzIEludFJlY3QgaW50ZXJuYWxs
eSB0aGUgaW5zZXQgYXBwbGllZCBieSB0aGUgCkBAIC0xMjkzLDIxICsxMjkzLDIxIEBAIHZvaWQg
UmVuZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpCiAgICAgICAgIHBhaW50UmVjdCA9IEludFJlY3QocGFpbnRSZWN0
LngoKSwgcGFpbnRSZWN0LnkoKSArICh0aGlzLT5oZWlnaHQoKSAtIGhlaWdodCkgLyAyLCB3aWR0
aCwgaGVpZ2h0KTsgLy8gVmVydGljYWxseSBjZW50ZXIgdGhlIGNoZWNrYm94LCBsaWtlIG9uIGRl
c2t0b3AKICAgICB9CiAjZW5kaWYKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRB
dm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNv
bnRleHQpOworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9IGRl
dGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsKIAog
ICAgIC8vIEZJWE1FOiBTaG91bGQgZXZlbnR1YWxseSBnaXZlIHRoZSB0aGVtZSBjb250cm9sIG92
ZXIgd2hldGhlciB0aGUgYm94IHNoYWRvdyBzaG91bGQgcGFpbnQsIHNpbmNlIGNvbnRyb2xzIGNv
dWxkIGhhdmUKICAgICAvLyBjdXN0b20gc2hhZG93cyBvZiB0aGVpciBvd24uCiAgICAgaWYgKCFi
b3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCks
IGJsZWVkQXZvaWRhbmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWlu
dFJlY3QsIHN0eWxlKCksIE5vcm1hbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCksIGZhbHNlKTsKICAg
ICBpZiAoYmxlZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5
ZXIpIHsKICAgICAgICAgLy8gVG8gYXZvaWQgdGhlIGJhY2tncm91bmQgY29sb3IgYmxlZWRpbmcg
b3V0IGJlaGluZCB0aGUgYm9yZGVyLCB3ZSdsbCByZW5kZXIgYmFja2dyb3VuZCBhbmQgYm9yZGVy
CiAgICAgICAgIC8vIGludG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIsIGFuZCB0aGVuIGNsaXAgdGhh
dCBpbiBvbmUgZ28gKHdoaWNoIHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIGNsaXAgYmVmb3JlCiAg
ICAgICAgIC8vIGJlZ2lubmluZyB0aGUgbGF5ZXIpLgogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUo
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdl
dFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBh
aW50aW5nKGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHBh
aW50UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEpOwogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmUgYSBuYXRpdmUg
dGhlbWUgYXBwZWFyYW5jZSwgcGFpbnQgdGhhdCBiZWZvcmUgcGFpbnRpbmcgb3VyIGJhY2tncm91
bmQuCkBAIC0xMzQyLDcgKzEzNDIsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0
aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAg
ICBwYWludEJvcmRlcihwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgYmxlZWRBdm9pZGFu
Y2UpOwogCiAgICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5z
cGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXll
cigpOwogfQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSkKQEAgLTE1MTksNyArMTUxOSw3IEBAIGJvb2wgUmVu
ZGVyQm94OjpiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRl
ckJveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5w
aGFzZSAhPSBQYWludFBoYXNlTWFzayB8fCBwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpKQorICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykg
fHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVj
dChwYWludE9mZnNldCwgc2l6ZSgpKTsKQEAgLTE1MjgsMTEgKzE1MjgsMTEgQEAgdm9pZCBSZW5k
ZXJCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlw
cGluZ01hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlw
cGluZ01hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWlu
dE9mZnNldCwgc2l6ZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBl
ZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChwYWludFJl
Y3QpLCBDb2xvcjo6YmxhY2ssIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIH0KIAogdm9pZCBSZW5k
ZXJCb3g6OnBhaW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpAQCAtMTU1NywxOCArMTU1NywxOCBAQCB2b2lkIFJlbmRl
ckJveDo6cGFpbnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRSZWN0JiBwYQogICAgICAgICBpZiAobWFza0xheWVycykKICAgICAgICAgICAgIGFsbE1h
c2tJbWFnZXNMb2FkZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9hZGVkKCk7CiAKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0
aW5hdGlvbkluKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoMSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9z
aXRlU291cmNlT3ZlcjsKICAgICB9CiAKICAgICBpZiAoYWxsTWFza0ltYWdlc0xvYWRlZCkgewog
ICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCBzdHlsZSgpLm1hc2tM
YXllcnMoKSwgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCBjb21wb3NpdGVPcCk7Ci0g
ICAgICAgIHBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwg
c3R5bGUoKSwgc3R5bGUoKS5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOworICAgICAgICBw
YWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50UmVjdCwgc3R5bGUo
KSwgc3R5bGUoKS5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAg
ICBpZiAocHVzaFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6bWFza0NsaXBS
ZWN0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTE2MTksMTYgKzE2MTksMTMg
QEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnMKICAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+
bmV4dCgpOwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0OwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgc2hvdWxkRHJhd0JhY2tncm91
bmRJblNlcGFyYXRlQnVmZmVyID0gZmFsc2U7Ci0KKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSBi
YXNlQmdDb2xvclVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZTsKIAogICAgIGlmIChzaG91
bGREcmF3QmFja2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpIHsKICAgICAgICAgcGFpbnRGaWxsTGF5
ZXIocGFpbnRJbmZvLCBjLCAqbGF5ZXJzLnJiZWdpbigpLCByZWN0LCBibGVlZEF2b2lkYW5jZSwg
b3AsIGJhY2tncm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5KTsKICAgICAgICAg
YmFzZUJnQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwotICAgICAgICBjb250
ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNvbnN0IEZpbGxMYXllcio+
Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHRvcExheWVyID0gbGF5ZXJzLnJlbmQoKTsKQEAgLTE2
MzYsNyArMTYzMyw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zCiAgICAgICAgIHBhaW50Rmls
bExheWVyKHBhaW50SW5mbywgYywgKml0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tn
cm91bmRPYmplY3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogCiAgICAgaWYgKHNob3VsZERyYXdCYWNr
Z3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlcikKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCiB2
b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCwKQEAgLTE3NjgsMTAgKzE3NjUsMTAgQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hD
b250ZW50c0NsaXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXUKICAgICB9CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCk7CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0ID0gc25hcFJlY3RUb0Rldmlj
ZVBpeGVscygoaXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNl
dCkgOiBvdmVyZmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5w
aGFzZSkpLCBkZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBpZiAoc3R5bGUoKS5oYXNC
b3JkZXJSYWRpdXMoKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChzdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVk
T2Zmc2V0LCBzaXplKCkpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmlj
ZVNjYWxlRmFjdG9yKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJv
dW5kZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkp
KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTc3OSw3ICsxNzc2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBvcENvbnRlbnRz
Q2xpcChQYWludEluZm8mIHBhaW50SW5mbywgUGFpbnRQaGFzZSBvcmlnaW5hbFBoYXNlLAogewog
ICAgIEFTU0VSVChoYXNDb250cm9sQ2xpcCgpIHx8IChoYXNPdmVyZmxvd0NsaXAoKSAmJiAhbGF5
ZXIoKS0+aXNTZWxmUGFpbnRpbmdMYXllcigpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIGlmIChv
cmlnaW5hbFBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lKSB7CiAgICAgICAgIHBhaW50SW5mby5w
aGFzZSA9IFBhaW50UGhhc2VTZWxmT3V0bGluZTsKICAgICAgICAgcGFpbnRPYmplY3QocGFpbnRJ
bmZvLCBhY2N1bXVsYXRlZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
aW5kZXggNTUxODhjNjE2OWQ0N2Y5MzAzYmRmMTYxYWYyNWE4MmM5ZDJmOThiOS4uMTZkNTFkOTdl
ZmQ1YWZlOGUxYTdlMzZmN2Q4MjQ3ZjhmMGJkYTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaApAQCAtNjQwLDcgKzY0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgcGFp
bnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmKTsKIAotICAg
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7CisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNl
IGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmKSBjb25z
dDsKICAgICBib29sIGJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0OwogCiAgICAg
dm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMmLCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAxZGNmZTEyMmYw
Mjc3MjI5MWI3YTE3YjgzNjRhODcwZGJhMmJkMjJlLi5mY2E5N2FkZjI1YmQxNzE5MmQ5MGZhNWM0
NzZmMzNkYTNiYTA1Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKICAgICBsYXllcigpLT5i
YWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCi1ib29sIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNp
emUpCitib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIs
IGNvbnN0IExheW91dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxp
dHlDb250cm9sbGVyKCkuc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1h
Z2UsIGxheWVyLCBzaXplKTsKIH0KQEAgLTUxOCwzNCArNTE4LDM0IEBAIFJvdW5kZWRSZWN0IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgYm9yCiAgICAgcmV0dXJuIGJvcmRlcjsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0ICogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKK3Zv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiBjbGlwUmVjdCkKIHsKICAgICBpZiAoY2xpcFJlY3QuaXNSZW5kZXJhYmxlKCkpCi0gICAg
ICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChjbGlwUmVjdCk7CisgICAgICAgIGNvbnRleHQu
Y2xpcFJvdW5kZWRSZWN0KGNsaXBSZWN0KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgY3Jl
YXRlIGEgcm91bmRlZCByZWN0IGZvciBlYWNoIG9mIHRoZSBjb3JuZXJzIGFuZCBjbGlwIGl0LCB3
aGlsZSBtYWtpbmcgc3VyZSB3ZSBjbGlwIG9wcG9zaW5nIGNvcm5lcnMgdG9nZXRoZXIuCiAgICAg
ICAgIGlmICghY2xpcFJlY3QucmFkaWkoKS50b3BMZWZ0KCkuaXNFbXB0eSgpIHx8ICFjbGlwUmVj
dC5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBGbG9hdFJl
Y3QgdG9wQ29ybmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS55KCksIHJl
Y3QubWF4WCgpIC0gY2xpcFJlY3QucmVjdCgpLngoKSwgcmVjdC5tYXhZKCkgLSBjbGlwUmVjdC5y
ZWN0KCkueSgpKTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5l
clJhZGlpOwogICAgICAgICAgICAgdG9wQ29ybmVyUmFkaWkuc2V0VG9wTGVmdChjbGlwUmVjdC5y
YWRpaSgpLnRvcExlZnQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CisgICAgICAgICAg
ICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9w
Q29ybmVyUmFkaWkpKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdHRvbUNvcm5lcihyZWN0
LngoKSwgcmVjdC55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgY2xpcFJl
Y3QucmVjdCgpLm1heFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpIGJvdHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAgYm90dG9tQ29ybmVyUmFk
aWkuc2V0Qm90dG9tUmlnaHQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNv
cm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5k
ZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm90dG9tQ29ybmVyLCBib3R0b21Db3JuZXJSYWRpaSkp
OwogICAgICAgICB9IAogCiAgICAgICAgIGlmICghY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgp
LmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBGbG9hdFJlY3QgdG9wQ29ybmVyKHJlY3QueCgpLCBjbGlwUmVjdC5yZWN0
KCkueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIHJlY3QubWF4WSgpIC0g
Y2xpcFJlY3QucmVjdCgpLnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSB0b3BDb3JuZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcFJpZ2h0
KGNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7
CisgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRv
cENvcm5lciwgdG9wQ29ybmVyUmFkaWkpKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdHRv
bUNvcm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCByZWN0LnkoKSwgcmVjdC5tYXhYKCkgLSBjbGlw
UmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOwogICAg
ICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAg
ICAgICAgICBib3R0b21Db3JuZXJSYWRpaS5zZXRCb3R0b21MZWZ0KGNsaXBSZWN0LnJhZGlpKCku
Ym90dG9tTGVmdCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAg
ICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm90dG9tQ29ybmVy
LCBib3R0b21Db3JuZXJSYWRpaSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTgxLDcgKzU4
MSw3IEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kUm91bmRl
ZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlCiAgICAgcmV0dXJuIGdldEJhY2tncm91bmRS
b3VuZGVkUmVjdChib3JkZXJSZWN0LCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWln
aHQoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwog
fQogCi1zdGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgdm9pZCBhcHBseUJveFNo
YWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93ID0gc3R5bGUtPmJveFNo
YWRvdygpOwogICAgIHdoaWxlIChib3hTaGFkb3ctPnN0eWxlKCkgIT0gTm9ybWFsKQpAQCAtNTg5
LDE1ICs1ODksMTUgQEAgc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHMKIAogICAgIEZsb2F0U2l6ZSBz
aGFkb3dPZmZzZXQoYm94U2hhZG93LT54KCksIGJveFNoYWRvdy0+eSgpKTsKICAgICBpZiAoIWJv
eFNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93
KHNoYWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBz
dHlsZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xv
clNwYWNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KHNo
YWRvd09mZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHls
ZS0+Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBib3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5j
b2xvclNwYWNlKCkpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tG
b3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNr
UmVjdCwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50
UmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1h
Z2UtPmNvbnRleHQoKTsKLSAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1hc2tSZWN0
LngoKSwgLW1hc2tSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xh
dGUoLW1hc2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7CiAKICAgICAvLyBOb3cgYWRkIHRoZSB0
ZXh0IHRvIHRoZSBjbGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50aW5nIHVzaW5nIGEgc3BlY2lhbCBw
YWludCBwaGFzZSB0aGF0IHNpZ25hbHMgdG8KICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0
aGV5IHNob3VsZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KQEAgLTYxOCw4
ICs2MTgsOCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0Rmls
bEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdAogdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0IExheW91
dFJlY3QmIHJlY3QsCiAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNl
LCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNpemUsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dy
b3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpIHx8IHJlY3QuaXNFbXB0eSgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxl
ZCgpIHx8IHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluY2x1
ZGVMZWZ0RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpIDogdHJ1ZTsK
QEAgLTY3MiwzMiArNjcyLDMyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tn
cm91bmQgPSB0aGlzLT5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5s
b2NhdGlvbigpLCBibGVlZEF2b2lkYW5jZSwgYm94KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFw
cGxpZWRUb0JhY2tncm91bmQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNo
YWRvd1N0YXRlU2F2ZXIoY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKTsKICAgICAgICAgaWYgKGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkK
ICAgICAgICAgICAgIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUo
KSk7CiAKICAgICAgICAgaWYgKGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0g
QmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgICAgIEZsb2F0
Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkQm9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRq
dXN0ZWRGb3JCbGVlZEF2b2lkYW5jZSgqY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJv
eCwgYm94U2l6ZSwKKyAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkQm9y
ZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250
ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLAogICAgICAgICAgICAgICAg
IGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkucGl4ZWxTbmFwcGVkUm91bmRlZFJl
Y3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBpZiAocGl4ZWxT
bmFwcGVkQm9yZGVyLmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRCb3JkZXIsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChj
b250ZXh0LCBwaXhlbFNuYXBwZWRSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXIpOwotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlci5yZWN0KCksIGJnQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZXN0
b3JlKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3Jk
ZXIucmVjdCgpLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdDb2xvciwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNu
YXBwZWRSZWN0LCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIC8vIEJvcmRlckZpbGxCb3ggcmFkaXVzIGNsaXBwaW5nIGlzIHRh
a2VuIGNhcmUgb2YgYnkgQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIKICAgICBi
b29sIGNsaXBUb0JvcmRlclJhZGl1cyA9IGhhc1JvdW5kZWRCb3JkZXIgJiYgIShpc0JvcmRlckZp
bGwgJiYgYmxlZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5
ZXIpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgY2xpcFRvQm9yZGVyU3RhdGVTYXZl
cigqY29udGV4dCwgY2xpcFRvQm9yZGVyUmFkaXVzKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIGNsaXBUb0JvcmRlclN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcFRvQm9yZGVyUmFkaXVz
KTsKICAgICBpZiAoY2xpcFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgIFJvdW5kZWRSZWN0IGJv
cmRlciA9IGlzQm9yZGVyRmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxl
ZWRBdm9pZGFuY2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUs
IGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRl
ZFJlY3QocmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1
ZGVMZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CisgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRl
ciA9IGlzQm9yZGVyRmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRB
dm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5j
bHVkZUxlZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKSA6IGdldEJhY2tncm91bmRSb3VuZGVkUmVj
dChyZWN0LCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxl
ZnRFZGdlLCBpbmNsdWRlUmlnaHRFZGdlKTsKIAogICAgICAgICAvLyBDbGlwIHRvIHRoZSBwYWRk
aW5nIG9yIGNvbnRlbnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoYmdMYXllci0+
Y2xpcCgpID09IENvbnRlbnRGaWxsQm94KSB7CkBAIC03MTQsMTIgKzcxNCwxMiBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjbwogICAgIExheW91dFVuaXQgcExlZnQgPSBpbmNsdWRlTGVmdEVkZ2Ug
PyBwYWRkaW5nTGVmdCgpIDogTGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgcFJpZ2h0ID0g
aW5jbHVkZVJpZ2h0RWRnZSA/IHBhZGRpbmdSaWdodCgpIDogTGF5b3V0VW5pdCgpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwV2l0aFNjcm9sbGluZ1N0YXRlU2F2ZXIoKmNv
bnRleHQsIGNsaXBwZWRXaXRoTG9jYWxTY3JvbGxpbmcpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBwZWRXaXRo
TG9jYWxTY3JvbGxpbmcpOwogICAgIExheW91dFJlY3Qgc2Nyb2xsZWRQYWludFJlY3QgPSByZWN0
OwogICAgIGlmIChjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIENsaXAg
dG8gdGhlIG92ZXJmbG93IGFyZWEuCiAgICAgICAgIGF1dG8mIHRoaXNCb3ggPSBkb3duY2FzdDxS
ZW5kZXJCb3g+KCp0aGlzKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcCh0aGlzQm94Lm92ZXJmbG93
Q2xpcFJlY3QocmVjdC5sb2NhdGlvbigpLCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
KSkpOworICAgICAgICBjb250ZXh0LmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0KHJlY3Qu
bG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEFkanVzdCB0aGUgcGFpbnQgcmVjdCB0byByZWZsZWN0IGEgc2Nyb2xsZWQg
Y29udGVudCBib3ggd2l0aCBib3JkZXJzIGF0IHRoZSBlbmRzLgogICAgICAgICBJbnRTaXplIG9m
ZnNldCA9IHRoaXNCb3guc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CkBAIC03MjgsNyArNzI4LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3Quc2V0
SGVpZ2h0KGJvcmRlclRvcCgpICsgbGF5ZXIoKS0+c2Nyb2xsSGVpZ2h0KCkgKyBib3JkZXJCb3R0
b20oKSk7CiAgICAgfQogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFja2dy
b3VuZENsaXBTdGF0ZVNhdmVyKCpjb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogICAgIEludFJlY3QgbWFz
a1JlY3Q7CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAg
ICAgICAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAt
IChpbmNsdWRlUGFkZGluZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKICAgICAg
ICAgICAgICAgICBzY3JvbGxlZFBhaW50UmVjdC5oZWlnaHQoKSAtIGJvcmRlclRvcCgpIC0gYm9y
ZGVyQm90dG9tKCkgLSAoaW5jbHVkZVBhZGRpbmcgPyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90
dG9tKCkgOiBMYXlvdXRVbml0KCkpKTsKICAgICAgICAgICAgIGJhY2tncm91bmRDbGlwU3RhdGVT
YXZlci5zYXZlKCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewogICAgICAgICAvLyBXZSBoYXZlIHRv
IGRyYXcgb3VyIHRleHQgaW50byBhIG1hc2sgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAg
YmFja2dyb3VuZCBkcmF3aW5nLgpAQCAtNzUxLDE1ICs3NTEsMTUgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY28KICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50
SW5mby5yZWN0KSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAg
bWFza0ltYWdlID0gY29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXpl
KCkpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
bWFza1JlY3Quc2l6ZSgpKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwg
bWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwogCiAgICAgICAgIC8vIFRoZSBtYXNr
IGhhcyBiZWVuIGNyZWF0ZWQuICBOb3cgd2UganVzdCBuZWVkIHRvIGNsaXAgdG8gaXQuCiAgICAg
ICAgIGJhY2tncm91bmRDbGlwU3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPmNs
aXAobWFza1JlY3QpOwotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEp
OworICAgICAgICBjb250ZXh0LmNsaXAobWFza1JlY3QpOworICAgICAgICBjb250ZXh0LmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgfQogCiAgICAgLy8gT25seSBmaWxsIHdpdGggYSBi
YXNlIGNvbG9yIChlLmcuLCB3aGl0ZSkgaWYgd2UncmUgdGhlIHJvb3QgZG9jdW1lbnQsIHNpbmNl
IGlmcmFtZXMvZnJhbWVzIHdpdGgKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjbwogICAgICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckJhY2tncm91bmQgPSB0cnVl
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHNoYWRvd1N0YXRlU2F2ZXIoKmNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFj
a2dyb3VuZCk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0
YXRlU2F2ZXIoY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTsK
ICAgICAgICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAg
ICAgICAgICAgICAgICAgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKGNvbnRleHQsICZzdHls
ZSgpKTsKIApAQCAtODE3LDEyICs4MTcsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAg
ICAgICAgICAgICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJhc2VDb2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsK
IAotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFp
bnRpbmcsIGJhc2VDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGlu
ZywgYmFzZUNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgQ29tcG9zaXRlQ29weSk7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKSB7
Ci0gICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uID0gc2hvdWxkQ2xl
YXJCYWNrZ3JvdW5kID8gQ29tcG9zaXRlQ29weSA6IGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlv
bigpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9y
UGFpbnRpbmcsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOworICAg
ICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFj
a2dyb3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGlu
ZywgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG9wZXJhdGlvbik7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHNob3VsZENsZWFyQmFja2dyb3VuZCkKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5jbGVhclJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CisgICAgICAgICAgICAg
ICAgY29udGV4dC5jbGVhclJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTgzNCwxNyArODM0LDE3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IG9wID09IENvbXBv
c2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwogICAgICAgICAgICAg
YXV0byBjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UgPSBiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dy
b3VuZE9iamVjdCA6IHRoaXM7CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYmdJ
bWFnZS0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBnZW9tZXRyeS50aWxlU2l6ZSgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1h
c2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CisgICAgICAgICAgICBjb250ZXh0LnNl
dERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWlu
YW5jZSk7CiAgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFp
bnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRp
bGVTaXplKCkpOwogICAgICAgICAgICAgaWYgKGltYWdlLmdldCgpKQogICAgICAgICAgICAgICAg
IGltYWdlLT5zZXRTcGFjZVNpemUoZ2VvbWV0cnkuc3BhY2VTaXplKCkpOwotICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgp
LCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhh
c2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0
ZU9wLCBiZ0xheWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCks
IHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZElt
YWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3Qo
KSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxl
U2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRN
b2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZykpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0
RmlsbEJveCkgewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25J
bik7Ci0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBjb250ZXh0LmVu
ZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQogCkBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpnZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZShj
b25zdCBSZW5kZXJMYXllck1vZGVsTwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0cnkuZGVzdFJlY3Qo
KTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLAorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYg
bmluZVBpZWNlSW1hZ2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIFN0eWxlSW1hZ2Uq
IHN0eWxlSW1hZ2UgPSBuaW5lUGllY2VJbWFnZS5pbWFnZSgpOwpAQCAtMTQyNiw3ICsxNDI2LDcg
QEAgc3RhdGljIGJvb2wgam9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFk
amFjZW50U2lkZSwgY29uc3QgQm9yZGVyRWQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICBj
b25zdCBMYXlvdXRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50
U2lkZTEsIEJveFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBj
b25zdCBQYXRoKiBwYXRoLAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlLCBib29sIGFudGlhbGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IpCiB7CkBA
IC0xNDQ0LDcgKzE0NDQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJv
cmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgY29uc3QgQ29s
b3ImIGNvbG9yVG9QYWludCA9IG92ZXJyaWRlQ29sb3IgPyAqb3ZlcnJpZGVDb2xvciA6IGVkZ2VU
b1JlbmRlci5jb2xvcigpOwogCiAgICAgaWYgKHBhdGgpIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAg
ICAgaWYgKGlubmVyQm9yZGVyLmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgY2xpcEJvcmRl
clNpZGVQb2x5Z29uKGdyYXBoaWNzQ29udGV4dCwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBz
aWRlLCBhZGphY2VudFNpZGUxU3R5bGVzTWF0Y2gsIGFkamFjZW50U2lkZTJTdHlsZXNNYXRjaCk7
CiAgICAgICAgIGVsc2UKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgYm9vbCBjbGlwQWRqYWNlbnRTaWRlMiA9IGNvbG9yTmVlZHNBbnRpQWxpYXNB
dENvcm5lcihzaWRlLCBhZGphY2VudFNpZGUyLCBlZGdlcykgJiYgbWl0cmVBZGphY2VudFNpZGUy
OwogICAgICAgICBib29sIHNob3VsZENsaXAgPSBjbGlwRm9yU3R5bGUgfHwgY2xpcEFkamFjZW50
U2lkZTEgfHwgY2xpcEFkamFjZW50U2lkZTI7CiAgICAgICAgIAotICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIGNsaXBTdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQsIHNob3VsZENs
aXApOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBTdGF0ZVNhdmVyKGdy
YXBoaWNzQ29udGV4dCwgc2hvdWxkQ2xpcCk7CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAg
ICAgICAgICAgICBib29sIGFsaWFzQWRqYWNlbnRTaWRlMSA9IGNsaXBBZGphY2VudFNpZGUxIHx8
IChjbGlwRm9yU3R5bGUgJiYgbWl0cmVBZGphY2VudFNpZGUxKTsKICAgICAgICAgICAgIGJvb2wg
YWxpYXNBZGphY2VudFNpZGUyID0gY2xpcEFkamFjZW50U2lkZTIgfHwgKGNsaXBGb3JTdHlsZSAm
JiBtaXRyZUFkamFjZW50U2lkZTIpOwpAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LAogICAgICAgICAgICAgbWl0cmVBZGphY2VudFNpZGUxID0gZmFsc2U7CiAgICAg
ICAgICAgICBtaXRyZUFkamFjZW50U2lkZTIgPSBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9y
VG9QYWludCwgZWRnZVRvUmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFj
ZW50RWRnZTEud2lkdGhGb3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRq
YWNlbnRFZGdlMi53aWR0aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOworICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzaWRlUmVjdCwgc2lkZSwgY29sb3JU
b1BhaW50LCBlZGdlVG9SZW5kZXIuc3R5bGUoKSwgbWl0cmVBZGphY2VudFNpZGUxID8gYWRqYWNl
bnRFZGdlMS53aWR0aEZvclBhaW50aW5nKCkgOiAwLCBtaXRyZUFkamFjZW50U2lkZTIgPyBhZGph
Y2VudEVkZ2UyLndpZHRoRm9yUGFpbnRpbmcoKSA6IDAsIGFudGlhbGlhcyk7CiAgICAgfQogfQog
CkBAIC0xNDg4LDcgKzE0ODgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVj
dChjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlcgogICAgIHJldHVy
biBzaWRlUmVjdDsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJT
aWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0
JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lk
ZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYg
aW5uZXJCb3JkZXIsCiAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwg
Y29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRnZVNldCwgQmFja2dy
b3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMs
IGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY28KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0
ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQm
IGlubmVyQm9yZGVyQWRqdXN0bWVudCwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9y
ZGVyQWRqdXN0bWVudCwKICAgICBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIEJvcmRlckVkZ2VG
bGFncyBlZGdlc1RvRHJhdywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNl
LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UsIGJvb2wgYW50aWFsaWFzKQogewogICAgIC8vIHdpbGxCZU92ZXJkcmF3biBhc3N1bWVzIHRo
YXQgd2UgZHJhdyBpbiBvcmRlcjogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LgpAQCAtMTU2Niwx
NCArMTU2NiwxNCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50
Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljcwogCiAgICAgICAgIGJvb2wgdXNl
VHJhbnNwYXJlbmN5TGF5ZXIgPSBpbmNsdWRlc0FkamFjZW50RWRnZXMoY29tbW9uQ29sb3JFZGdl
U2V0KSAmJiBjb21tb25Db2xvci5oYXNBbHBoYSgpOwogICAgICAgICBpZiAodXNlVHJhbnNwYXJl
bmN5TGF5ZXIpIHsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4oY29tbW9uQ29sb3IuYWxwaGEoKSkgLyAyNTUpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgIGNv
bW1vbkNvbG9yID0gQ29sb3IoY29tbW9uQ29sb3IucmVkKCksIGNvbW1vbkNvbG9yLmdyZWVuKCks
IGNvbW1vbkNvbG9yLmJsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwYWludEJvcmRlclNp
ZGVzKGdyYXBoaWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgaW5u
ZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywgY29tbW9uQ29sb3JFZGdlU2V0LCBibGVlZEF2b2lk
YW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFu
dGlhbGlhcywgJmNvbW1vbkNvbG9yKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAodXNlVHJh
bnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKICAgICAgICAgCiAgICAgICAgIGVkZ2VzVG9EcmF3ICY9IH5jb21tb25Db2xvckVk
Z2VTZXQ7CiAgICAgfQpAQCAtMTU4Miw5ICsxNTgyLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3MKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQgPSBpbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQgPSBpbmZvLmNvbnRleHQoKTsKIAotICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQpAQCAtMTU5
Nyw3ICsxNTk3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29u
c3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgIEJvcmRlckVkZ2UgZWRn
ZXNbNF07CiAgICAgQm9yZGVyRWRnZTo6Z2V0Qm9yZGVyRWRnZUluZm8oZWRnZXMsIHN0eWxlLCBk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGlu
Y2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICBSb3VuZGVkUmVjdCBvdXRlckJvcmRlciA9IHN0
eWxlLmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5
bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxl
ZWRBdm9pZGFuY2UoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRl
ZFJlY3QgaW5uZXJCb3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVy
SW5uZXJSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGJsZWVkQXZvaWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwogCiAgICAgYm9vbCBoYXZlQWxwaGFDb2xvciA9IGZhbHNlOwogICAgIGJvb2wg
aGF2ZUFsbFNvbGlkRWRnZXMgPSB0cnVlOwpAQCAtMTcwMyw5ICsxNzAzLDkgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25z
dCBMYXlvdXRSZWN0JgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHBhdGguYWRk
UmVjdChwaXhlbFNuYXBwZWRJbm5lckJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAg
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVF
ZGdlXS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRG
aWxsUnVsZShSVUxFX0VWRU5PREQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9IAogICAgICAgICAvLyBBdm9pZCBjcmVhdGluZyB0cmFu
c3BhcmVudCBsYXllcnMKQEAgLTE3MjAsMjMgKzE3MjAsMjMgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRS
ZWN0JgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX05PTlpFUk8pOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3Io
KSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Zmls
bFBhdGgocGF0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVM
RV9OT05aRVJPKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRn
ZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgY2xpcFRvT3V0ZXJCb3JkZXIgPSBvdXRl
ckJvcmRlci5pc1JvdW5kZWQoKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmdyYXBoaWNzQ29udGV4dCwgY2xpcFRvT3V0ZXJCb3JkZXIpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVy
Qm9yZGVyKTsKICAgICBpZiAoY2xpcFRvT3V0ZXJCb3JkZXIpIHsKICAgICAgICAgLy8gQ2xpcCB0
byB0aGUgaW5uZXIgYW5kIG91dGVyIHJhZGlpIHJlY3RzLgogICAgICAgICBpZiAoYmxlZWRBdm9p
ZGFuY2UgIT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBw
ZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuY2xpcFJvdW5kZWRSZWN0KG91dGVyQm9yZGVyLnBpeGVsU25hcHBl
ZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgLy8g
aXNSZW5kZXJhYmxlKCkgY2hlY2sgYXZvaWRzIGlzc3VlIGRlc2NyaWJlZCBpbiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3ODcKICAgICAgICAgLy8gVGhlIGluc2lk
ZSB3aWxsIGJlIGNsaXBwZWQgb3V0IGxhdGVyIChpbiBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJ
bm5lclBhdGgpCiAgICAgICAgIGlmIChpbm5lckJvcmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBp
eGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXIu
cGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOwog
ICAgIH0KIAogICAgIC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNpbmcgZG9l
c24ndCBjcmVhdGUgc2VhbXMKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjdCYKICAgICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0NvbnRleHQsIHN0eWxlLCBv
dXRlckJvcmRlciwgdW5hZGp1c3RlZElubmVyQm9yZGVyLCBpbm5lckJvcmRlckFkanVzdG1lbnQs
IGVkZ2VzLCBlZGdlc1RvRHJhdywgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMpOwogfQogCi12b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBi
b3JkZXJQYXRoLCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCit2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRo
LCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCiAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBk
cmF3VGhpY2tuZXNzLCBCb3hTaWRlIHNpZGUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ29s
b3IgY29sb3IsIEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlIGJsZWVkQXZvaWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKQEAgLTE3NjUsMTQgKzE3NjUsMTQgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9UVEVEOgog
ICAgIGNhc2UgREFTSEVEOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAvLyBU
aGUgc3Ryb2tlIGlzIGRvdWJsZWQgaGVyZSBiZWNhdXNlIHRoZSBwcm92aWRlZCBwYXRoIGlzIHRo
ZSAKICAgICAgICAgLy8gb3V0c2lkZSBlZGdlIG9mIHRoZSBib3JkZXIgc28gaGFsZiB0aGUgc3Ry
b2tlIGlzIGNsaXBwZWQgb2ZmLiAKICAgICAgICAgLy8gVGhlIGV4dHJhIG11bHRpcGxpZXIgaXMg
c28gdGhhdCB0aGUgY2xpcHBpbmcgbWFzayBjYW4gYW50aWFsaWFzCiAgICAgICAgIC8vIHRoZSBl
ZGdlcyB0byBwcmV2ZW50IGphZ2dpZXMuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKGRyYXdUaGlja25lc3MgKiAyICogMS4xZik7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ry
b2tlIDogRG90dGVkU3Ryb2tlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVRo
aWNrbmVzcyhkcmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tlIDog
RG90dGVkU3Ryb2tlKTsKIAogICAgICAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIGRhc2hlcyB0aGF0
IGZpdCBpbiB0aGUgcGF0aCBpcyBvZGQgYW5kIG5vbi1pbnRlZ3JhbCB0aGVuIHdlCiAgICAgICAg
IC8vIHdpbGwgaGF2ZSBhbiBhd2t3YXJkbHktc2l6ZWQgZGFzaCBhdCB0aGUgZW5kIG9mIHRoZSBw
YXRoLiBUbyB0cnkgdG8gYXZvaWQgdGhhdApAQCAtMTc5NSwxMyArMTc5NSwxMyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRGFzaEFycmF5IGxpbmVEYXNoOwogICAgICAg
ICAgICAgbGluZURhc2guYXBwZW5kKGRhc2hMZW5ndGgpOwogICAgICAgICAgICAgbGluZURhc2gu
YXBwZW5kKGdhcExlbmd0aCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldExpbmVE
YXNoKGxpbmVEYXNoLCBkYXNoTGVuZ3RoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRMaW5lRGFzaChsaW5lRGFzaCwgZGFzaExlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vIEZJWE1FOiBzdHJva2luZyB0aGUgYm9yZGVyIHBhdGggY2F1c2VzIGlzc3VlcyB3
aXRoIHRpZ2h0IGNvcm5lcnM6CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODcxMQogICAgICAgICAvLyBBbHNvLCB0byBnZXQgdGhlIGJlc3QgYXBw
ZWFyYW5jZSB3ZSBzaG91bGQgc3Ryb2tlIGEgcGF0aCBiZXR3ZWVuIHRoZSB0d28gYm9yZGVycy4K
LSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zdHJva2VQYXRoKGJvcmRlclBhdGgpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBjYXNlIERPVUJMRTogewpAQCAtMTgyNCwxOCArMTgyNCwxOCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgICAgIC8vIERyYXcgaW5uZXIgYm9yZGVyIGxpbmUK
ICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBSb3VuZGVkUmVj
dCBpbm5lckNsaXAgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwK
ICAgICAgICAgICAgICAgICBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdp
ZHRoLCBpbm5lckJvcmRlckxlZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoLAogICAgICAg
ICAgICAgICAgIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRl
ZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckNsaXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckNsaXApKTsKICAg
ICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0
LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHls
ZSwgY29sb3IsIFNPTElELCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRHJhdyBv
dXRlciBib3JkZXIgbGluZQogICAgICAgICB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAg
ICAgICAgIExheW91dFJlY3Qgb3V0ZXJSZWN0ID0gYm9yZGVyUmVjdDsKICAgICAgICAgICAgIGlm
IChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikg
ewogICAgICAgICAgICAgICAgIG91dGVyUmVjdC5pbmZsYXRlKDEpOwpAQCAtMTg0OCw3ICsxODQ4
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91
dGVyQ2xpcCA9IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihvdXRlclJlY3QsCiAgICAg
ICAgICAgICAgICAgb3V0ZXJCb3JkZXJUb3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0b21XaWR0aCwg
b3V0ZXJCb3JkZXJMZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAg
ICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Ci0g
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KG91dGVyQ2xpcCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBPdXRS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG91dGVyQ2xpcCkpOwogICAgICAgICAgICAgZHJh
d0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgs
IGVkZ2VzLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgU09M
SUQsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMTg3MCw3ICsxODcw
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0
aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0aGlja25l
c3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgczEsIGJsZWVkQXZvaWRhbmNl
LCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAg
ICAgICAgLy8gUGFpbnQgaW5uZXIgb25seQotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICBMYXlvdXRV
bml0IHRvcFdpZHRoID0gZWRnZXNbQlNUb3BdLndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CiAgICAg
ICAgIExheW91dFVuaXQgYm90dG9tV2lkdGggPSBlZGdlc1tCU0JvdHRvbV0ud2lkdGhGb3JQYWlu
dGluZygpIC8gMjsKICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGggPSBlZGdlc1tCU0xlZnRd
LndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LAogICAgICAgICAgICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lk
dGgsIHJpZ2h0V2lkdGgsCiAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjbGlwUmVjdCkpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKICAgICAg
ICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRl
clBhdGgsIGVkZ2VzLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xv
ciwgczIsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODkyLDkgKzE4OTIs
OSBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICBncmFwaGlj
c0NvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyUmVj
dCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKGNvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3
UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBmaW5kSW5uZXJWZXJ0ZXgoY29uc3Qg
RmxvYXRQb2ludCYgb3V0ZXJDb3JuZXIsIGNvbnN0IEZsb2F0UG9pbnQmIGlubmVyQ29ybmVyLCBj
b25zdCBGbG9hdFBvaW50JiBjZW50ZXJQb2ludCwgRmxvYXRQb2ludCYgcmVzdWx0KQpAQCAtMTkx
Miw3ICsxOTEyLDcgQEAgc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9p
bnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm4KICAgICAgICAgZmluZEludGVy
c2VjdGlvbihvdXRlckNvcm5lciwgaW5uZXJDb3JuZXIsIEZsb2F0UG9pbnQoMCwgY2VudGVyUG9p
bnQueSgpKSwgRmxvYXRQb2ludCgxMDAsIGNlbnRlclBvaW50LnkoKSksIHJlc3VsdCk7CiB9CiAK
LXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlu
bmVyQm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEJveFNpZGUgc2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VN
YXRjaGVzKQogewogICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKQEAgLTE5OTQsNyArMTk5NCw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgLy8gSWYgdGhlIGJvcmRlciBtYXRjaGVzIGJv
dGggb2YgaXRzIGFkamFjZW50IHNpZGVzLCBkb24ndCBhbnRpLWFsaWFzIHRoZSBjbGlwLCBhbmQK
ICAgICAvLyBpZiBuZWl0aGVyIHNpZGUgbWF0Y2hlcywgYW50aS1hbGlhcyB0aGUgY2xpcC4KICAg
ICBpZiAoZmlyc3RFZGdlTWF0Y2hlcyA9PSBzZWNvbmRFZGdlTWF0Y2hlcykgewotICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIHF1YWQsICFmaXJzdEVkZ2VNYXRj
aGVzKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIHF1YWQs
ICFmaXJzdEVkZ2VNYXRjaGVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAwNCw3
ICsyMDA0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5
Z29uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXgKICAgICBmaXJzdFF1YWRbMV0gPSBx
dWFkWzFdOwogICAgIGZpcnN0UXVhZFsyXSA9IHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0Jv
dHRvbSA/IEZsb2F0UG9pbnQocXVhZFszXS54KCksIHF1YWRbMl0ueSgpKSA6IEZsb2F0UG9pbnQo
cXVhZFsyXS54KCksIHF1YWRbM10ueSgpKTsKICAgICBmaXJzdFF1YWRbM10gPSBxdWFkWzNdOwot
ICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgZmlyc3RRdWFkLCAhZmly
c3RFZGdlTWF0Y2hlcyk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQs
IGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1hdGNoZXMpOwogCiAgICAgRmxvYXRQb2ludCBzZWNvbmRR
dWFkWzRdOwogICAgIHNlY29uZFF1YWRbMF0gPSBxdWFkWzBdOwpAQCAtMjAxMiw3ICsyMDEyLDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXgKICAgICBzZWNvbmRRdWFkWzJdID0gcXVhZFsyXTsK
ICAgICBzZWNvbmRRdWFkWzNdID0gcXVhZFszXTsKICAgICAvLyBBbnRpYWxpYXNpbmcgYWZmZWN0
cyB0aGUgc2Vjb25kIHNpZGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdv
big0LCBzZWNvbmRRdWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4
dC5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNvbmRRdWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOwog
fQogCiBzdGF0aWMgTGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBC
b3hTaWRlIHNpZGUpCkBAIC0yMTIyLDExICsyMTIyLDExIEBAIHN0YXRpYyBSb3VuZGVkUmVjdCBj
YWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGNvbnN0IFJvdW5kZWRSZWN0JmlubmVyQm9yZGVy
LCBCCiAgICAgcmV0dXJuIFJvdW5kZWRSZWN0KG5ld1JlY3QsIG5ld1JhZGlpKTsKIH0KIAotdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRo
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0
ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBj
b25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgQm94U2lkZSBzaWRlLCBjb25zdCBj
bGFzcyBCb3JkZXJFZGdlIGVkZ2VzW10pCiB7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGNh
bGN1bGF0ZVNpZGVSZWN0SW5jbHVkaW5nSW5uZXIob3V0ZXJCb3JkZXIsIGVkZ2VzLCBzaWRlKSk7
Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOworICAg
IGdyYXBoaWNzQ29udGV4dC5jbGlwKGNhbGN1bGF0ZVNpZGVSZWN0SW5jbHVkaW5nSW5uZXIob3V0
ZXJCb3JkZXIsIGVkZ2VzLCBzaWRlKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBPdXRSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIoaW5u
ZXJCb3JkZXIsIHNpZGUpKSk7CiB9CiAKIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRl
ck9ic2N1cmVzQmFja2dyb3VuZEVkZ2UoY29uc3QgRmxvYXRTaXplJiBjb250ZXh0U2NhbGUpIGNv
bnN0CkBAIC0yMjMwLDggKzIyMzAsOCBAQCBzdGF0aWMgaW5saW5lIExheW91dFJlY3QgYXJlYUNh
c3RpbmdTaGFkb3dJbkhvbGUoY29uc3QgTGF5b3V0UmVjdCYgaG9sZVJlY3QsIGludAogdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
U2hhZG93U3R5bGUgc2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGJv
cmRlci1pbWFnZS4gIFdvdWxkIGJlIGdyZWF0IHRvIHVzZSBib3JkZXItaW1hZ2UgYXMgYSBtYXNr
LgotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKLSAgICBpZiAo
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKKyAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBpbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4
dC5wYWludGluZ0Rpc2FibGVkKCkgfHwgIXN0eWxlLmJveFNoYWRvdygpKQogICAgICAgICByZXR1
cm47CiAKICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5zZXQpID8g
c3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCkBAIC0yMjY4LDggKzIyNjgsOCBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkU2hhZG93UmVj
dC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsKICAgICAgICAg
ICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQpOwogCi0gICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
ICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKKyAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAg
ICAgICAgIGNvbnRleHQuY2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKIAogICAgICAgICAg
ICAgLy8gTW92ZSB0aGUgZmlsbCBqdXN0IG91dHNpZGUgdGhlIGNsaXAsIGFkZGluZyAxIHBpeGVs
IHNlcGFyYXRpb24gc28gdGhhdCB0aGUgZmlsbCBkb2VzIG5vdAogICAgICAgICAgICAgLy8gYmxl
ZWQgaW4gKGR1ZSB0byBhbnRpYWxpYXNpbmcpIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zZm9ybWVk
LgpAQCAtMjI3OCw5ICsyMjc4LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAg
ICAgIGZpbGxSZWN0Lm1vdmUoZXh0cmFPZmZzZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93
LT5pc1dlYmtpdEJveFNoYWRvdygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldExlZ2Fj
eVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hh
ZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgICAg
ICBGbG9hdFJvdW5kZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFwcGVkUm91
bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9h
dFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxTbmFwcGVk
Um91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjkyLDE4ICsy
MjkyLDE4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIHJl
Y3RUb0NsaXBPdXQuaW5mbGF0ZVdpdGhSYWRpaShMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoLTEpKTsK
IAogICAgICAgICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0KTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xp
cE91dCk7CiAKICAgICAgICAgICAgICAgICBSb3VuZGVkUmVjdCBpbmZsdWVuY2VSZWN0KExheW91
dFJlY3QocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCksIGJvcmRlci5yYWRpaSgpKTsKICAgICAgICAg
ICAgICAgICBpbmZsdWVuY2VSZWN0LmV4cGFuZFJhZGlpKDIgKiBzaGFkb3dQYWludGluZ0V4dGVu
dCArIHNoYWRvd1NwcmVhZCk7CiAKICAgICAgICAgICAgICAgICBpZiAoYWxsQ29ybmVyc0NsaXBw
ZWRPdXQoaW5mbHVlbmNlUmVjdCwgaW5mby5yZWN0KSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ss
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHBp
eGVsU25hcHBlZEZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghcGl4ZWxTbmFwcGVkRmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVk
RmlsbFJlY3QsIENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENv
bG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVl
LCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2
ZXMgdGltZQpAQCAtMjMxMywxNCArMjMxMywxNCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwog
ICAgICAgICAgICAgICAgIGlmIChoYXNPcGFxdWVCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGUgZnVuY3Rpb24gdG8gZGVjaWRlIG9uIHRoZSBwb2xpY3kgYmFz
ZWQgb24gdGhlIHRyYW5zZm9ybSBzaG91bGQgYmUgYSBuYW1lZCBmdW5jdGlvbi4KICAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIGlmIHRoaXMgY2hlY2sgaXMgcmln
aHQuIFdoYXQgYWJvdXQgaW50ZWdyYWwgc2NhbGUgZmFjdG9ycz8KLSAgICAgICAgICAgICAgICAg
ICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgICAg
ICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0o
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5hKCkgIT0gMSB8fCAodHJhbnNm
b3JtLmQoKSAhPSAxICYmIHRyYW5zZm9ybS5kKCkgIT0gLTEpIHx8IHRyYW5zZm9ybS5iKCkgfHwg
dHJhbnNmb3JtLmMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQuaW5m
bGF0ZShMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoLTEpLnRvRmxvYXQoKSk7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3Qu
cmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuY2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9y
OjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIEluc2V0IHNoYWRvdy4KQEAgLTIzMzAsOSArMjMzMCw5IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIGlmIChwaXhlbFNuYXBwZWRI
b2xlUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVz
KQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFw
cGVkQm9yZGVyUmVjdCwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJl
Y3QsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9y
ZGVyUmVjdC5yZWN0KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVj
dCgpLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIApAQCAtMjM1NywyNSArMjM1NywyNSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZE91dGVy
UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5
b3V0UmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0
ZW50LCBzaGFkb3dTcHJlYWQsIHNoYWRvd09mZnNldCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAg
ICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUgPSBGbG9h
dFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEhvbGVSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0
LnJhZGlpKCkpOwogCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmNvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewog
ICAgICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5k
ZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QpOwotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmNsaXAocGF0aCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBhdGgpOwogICAgICAg
ICAgICAgICAgIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLnNocmlua1JhZGlpKHNoYWRvd1NwcmVh
ZCk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBp
eGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmNs
aXAocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpOwogCiAgICAgICAgICAgICBJbnRTaXpl
IGV4dHJhT2Zmc2V0KDIgKiByb3VuZFRvSW50KHBhaW50UmVjdC53aWR0aCgpKSArIHN0ZDo6bWF4
KDAsIHNoYWRvd09mZnNldC53aWR0aCgpKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50IC0gMiAqIHNo
YWRvd1NwcmVhZCArIDEsIDApOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGV4dHJh
T2Zmc2V0LndpZHRoKCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKGV4dHJhT2Zmc2V0LndpZHRoKCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsK
ICAgICAgICAgICAgIHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAg
aWYgKHNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9y
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29s
b3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5z
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAot
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFwcGVk
T3V0ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShw
aXhlbFNuYXBwZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29sb3Is
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNDg0LDExICsy
NDg0LDExIEBAIExheW91dFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0
Rm9yRW1wdHlFbGVtZW50KExheW91dFVuaXQgd2lkdGgsCiAgICAgcmV0dXJuIGN1cnJlbnRTdHls
ZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0UmVjdCh4LCB5LCBjYXJldFdpZHRo
LCBoZWlnaHQpIDogTGF5b3V0UmVjdCh5LCB4LCBoZWlnaHQsIGNhcmV0V2lkdGgpOwogfQogCi1i
b29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5lcyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpCitib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxp
YXNMaW5lcyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRklYTUU6IFdlIG1h
eSB3YW50IHRvIG5vdCBhbnRpYWxpYXMgd2hlbiBzY2FsZWQgYnkgYW4gaW50ZWdyYWwgdmFsdWUs
CiAgICAgLy8gYW5kIHdlIG1heSB3YW50IHRvIGFudGlhbGlhcyB3aGVuIHRyYW5zbGF0ZWQgYnkg
YSBub24taW50ZWdyYWwgdmFsdWUuCi0gICAgcmV0dXJuICFjb250ZXh0LT5nZXRDVE0oKS5pc0lk
ZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOworICAgIHJldHVybiAhY29udGV4dC5nZXRD
VE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOwogfQogCiB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0Zs
YWdzIG1vZGUsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggYzIyOGE0
ODVlZTM1ZmM5ODIzNzcxOGNlOWM3ZDM5NDAyMTRkMTE1OC4uNTg4MDVlMDhjMjgyMWU0ZmRiNmM4
YzQ5OTI1YzE5N2I5ZjYyMDIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlckVsZW1lbnQmKSB7IH0KIAogICAg
IHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIGNv
bnN0IFJlbmRlclN0eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJs
ZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwotICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgYm9vbCBwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IE5pbmVQaWVjZUltYWdl
JiwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBh
aW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0
cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAgICAgdm9pZCBwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUo
KSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50
KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0g
QmFzZUJhY2tncm91bmRDb2xvclVzZSk7CiAKQEAgLTI1MSwxNiArMjUxLDE2IEBAIHByb3RlY3Rl
ZDoKICAgICBSb3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVk
QXZvaWRhbmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KSBjb25zdDsKICAgICBMYXlvdXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRB
dm9pZGFuY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tn
cm91bmRCbGVlZEF2b2lkYW5jZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCosIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91
dFNpemUmKTsKKyAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4
dCYsIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBjb250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRp
bnVhdGlvbihSZW5kZXJCb3hNb2RlbE9iamVjdCopOwogCiAgICAgTGF5b3V0UmVjdCBsb2NhbENh
cmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJ
bmRlbnRPZmZzZXQpOwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3Jh
cGhpY3NDb250ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3Jh
cGhpY3NDb250ZXh0Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGlwUm91bmRlZElubmVyUmVjdChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiBjbGlwUmVjdCk7CisgICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xp
cFJlY3QpOwogCiAgICAgYm9vbCBoYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0
b0hlaWdodCgpIGNvbnN0OwogCkBAIC0zMDcsMTggKzMwNywxOCBAQCBwcml2YXRlOgogICAgIAog
ICAgIGJvb2wgZml4ZWRCYWNrZ3JvdW5kUGFpbnRzSW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7
CiAKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKKyAgICB2b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlLCBib29sIGZpcnN0RWRn
ZU1hdGNoZXMsIGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMpOwotICAgIHZvaWQgY2xpcEJvcmRlclNp
ZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRSZWN0
JiwgY29uc3QgUm91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25zdCBCb3JkZXJFZGdlW10pOwotICAg
IHZvaWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0
eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYg
aW5uZXJCb3JkZXIsCisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYs
IEJveFNpZGUsIGNvbnN0IEJvcmRlckVkZ2VbXSk7CisgICAgdm9pZCBwYWludE9uZUJvcmRlclNp
ZGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVj
dCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAg
Y29uc3QgTGF5b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRl
MSwgQm94U2lkZSBhZGphY2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGNv
bnN0IFBhdGgqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNv
bnN0IENvbG9yKiBvdmVycmlkZUNvbG9yID0gbnVsbHB0cik7Ci0gICAgdm9pZCBwYWludFRyYW5z
bHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJv
cmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKKyAgICB2b2lkIHBh
aW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3Qm
IGlubmVyQm9yZGVyLCBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LAogICAg
ICAgICBjb25zdCBCb3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRCb3Jk
ZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJvdW5k
ZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAorICAg
IHZvaWQgcGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlu
bmVyQm9yZGVyLAogICAgICAgICBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50
LCBjb25zdCBCb3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLAogICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UsIGNvbnN0IENvbG9yKiBv
dmVycmlkZUNvbG9yID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3QgQm9y
ZGVyRWRnZVtdLAorICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKICAg
ICAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25z
dCBSZW5kZXJTdHlsZSYsCiAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRC
bGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKICAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdl
QnVmZmVyKiwgY29uc3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRSZWN0
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01h
cmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHAKaW5kZXggNWVlZjc2MjUyOTQwNTljYmIwOTdlMTBmZjlkOTRkOGQ1ODdlYmI3MC4uYjUzZjJh
ZjRmZWU1ZGJmMWYzOTA4ZDg0MjNiNDNlYTk1NDE1MjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcApAQCAtMTMwLDEzICsxMzAsMTMg
QEAgdm9pZCBSZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3Qg
Q29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
cikpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygx
LjBmKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihj
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlVGhpY2tuZXNzKDEuMGYpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAKICAgICBib3hPcmlnaW4ubW92ZShib3Jk
ZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2luKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOwogfQogCiBi
b29sIFJlbmRlckRldGFpbHNNYXJrZXI6OmlzT3BlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMjU4MjA0ZTBiMGIwYmEwNWU1NGNkY2U0
Nzc0MzYyODM1ODZjZTYyOS4uMGUxNzZhZDExNTFmY2JmM2E4Y2I1OGYwNzliNjYzYzM0YmI0YjQ2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjA0
MSwxNyArMjA0MSwxNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIGFkZEZvY3VzUmlu
Z1JlY3RzKGZvY3VzUmluZ1JlY3RzLCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnBhaW50Q29udGFp
bmVyKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRoZW1lKCkucGxh
dGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50KCku
cGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLCBuZWVkc1Jl
cGFpbnQpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdS
ZWN0cywgdGhlbWUoKS5wbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZz
ZXQoKSwgZG9jdW1lbnQoKS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3Vz
V2FzU2V0KCksIG5lZWRzUmVwYWludCk7CiAgICAgaWYgKG5lZWRzUmVwYWludCkKICAgICAgICAg
ZG9jdW1lbnQoKS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50TmVl
ZHNSZXBhaW50KCk7CiAjZWxzZQotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5n
KGZvY3VzUmluZ1JlY3RzLCBzdHlsZS5vdXRsaW5lV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNl
dCgpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3Ip
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMs
IHN0eWxlLm91dGxpbmVXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIHN0eWxlLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwogI2VuZGlmCiB9CiAK
IHZvaWQgUmVuZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGlmIChncmFwaGljc0Nv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDMxNWRj
MTQ1ZGRmYjg1MDE0NWNhMjBiZDlmMGExNTBhMWI2NTdlZTQuLjJiMWYxNjU1ZDk5NjQ2YTBmZDA1
MDFlZWM1ZjgyODNiNzI2MmQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0CiAgICAgaWYgKCFjV2lkdGggfHwgIWNIZWlnaHQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAg
TGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50
IGNvbnRlbnRMb2NhdGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKICAgICBjb250ZW50
TG9jYXRpb24ubW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSAr
IHBhZGRpbmdUb3AoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXQKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9u
KCkpOwogI2VuZGlmCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVz
Y3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2Uo
aW1hZ2UsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0K
IAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpAQCAtMjYyLDkgKzI2Miw5
IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgUmVuZGVyV2lkZ2V0OjpwYWludChwYWlu
dEluZm8sIHBhaW50T2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50QXJy
b3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2lkZVJlY3Qp
CitzdGF0aWMgdm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgaW5zaWRlUmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIEZsb2F0UmVjdCByZWN0KGluc2lkZVJl
Y3QpOwogICAgIHJlY3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJvd1BhZGRpbmcpOwpAQCAtMjcy
LDkgKzI3Miw5IEBAIHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAgICAgRmxvYXRQb2ludCBjZW50
ZXIocmVjdC5jZW50ZXIoKSk7CiAgICAgRmxvYXRQb2ludCBhcnJvd1RpcChyZWN0Lm1heFgoKSwg
Y2VudGVyLnkoKSk7CiAKLSAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMik7Ci0gICAg
Y29udGV4dC0+c2V0TGluZUNhcChSb3VuZENhcCk7Ci0gICAgY29udGV4dC0+c2V0TGluZUpvaW4o
Um91bmRKb2luKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250
ZXh0LnNldExpbmVDYXAoUm91bmRDYXApOworICAgIGNvbnRleHQuc2V0TGluZUpvaW4oUm91bmRK
b2luKTsKIAogICAgIFBhdGggcGF0aDsKICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHJlY3Qu
eCgpLCBjZW50ZXIueSgpKSk7CkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1Jl
cGxhY2VtZW50QXJyb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGluc2kKICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNlbnRlci54KCksIHJlY3QueSgp
KSk7CiAgICAgcGF0aC5tb3ZlVG8oYXJyb3dUaXApOwogICAgIHBhdGguYWRkTGluZVRvKEZsb2F0
UG9pbnQoY2VudGVyLngoKSwgcmVjdC5tYXhZKCkpKTsKLSAgICBjb250ZXh0LT5zdHJva2VQYXRo
KHBhdGgpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpAQCAtMjkzLDggKzI5Myw4IEBAIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBw
YWludEluZm8uY29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAg
aWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBG
bG9hdFJlY3QgY29udGVudFJlY3Q7CkBAIC0zMTAsMzYgKzMxMCwzNiBAQCB2b2lkIFJlbmRlckVt
YmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludAogICAgIFBhdGggYmFja2dyb3VuZDsKICAgICBiYWNrZ3JvdW5kLmFkZFJvdW5k
ZWRSZWN0KGluZGljYXRvclJlY3QsIEZsb2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVj
dFJhZGl1cywgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMpKTsKIAotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+
Y2xpcChjb250ZW50UmVjdCk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fdW5hdmFpbGFi
bGVQbHVnaW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFBy
ZXNzZWRDb2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgoYmFja2dyb3VuZCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRl
eHQuY2xpcChjb250ZW50UmVjdCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV91bmF2YWls
YWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3NlZCA/IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0
UHJlc3NlZENvbG9yKCkgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAg
ICAgUGF0aCBzdHJva2VQYXRoOwogICAgIEZsb2F0UmVjdCBzdHJva2VSZWN0KGluZGljYXRvclJl
Y3QpOwogICAgIHN0cm9rZVJlY3QuaW5mbGF0ZSgxKTsKICAgICBzdHJva2VQYXRoLmFkZFJvdW5k
ZWRSZWN0KHN0cm9rZVJlY3QsIEZsb2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJh
ZGl1cyArIDEsIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzICsgMSkpOwogCi0gICAg
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIp
OwotICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoc3Ryb2tlUGF0aCk7CisgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcih1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250ZXh0
LnN0cm9rZVBhdGgoc3Ryb2tlUGF0aCk7CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBmb250LmZvbnRNZXRyaWNzKCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJl
cGxhY2VtZW50VGV4dFJlY3QubG9jYXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVk
UmVjdExlZnRUZXh0TWFyZ2luKTsKICAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1l
bnRUZXh0UmVjdC5sb2NhdGlvbigpLnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5o
ZWlnaHQoKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQo
KSArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7Ci0gICAgY29udGV4
dC0+c2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKLSAgICBjb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxh
YmVsWCwgbGFiZWxZKSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0
Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0
KGZvbnQsIHJ1biwgRmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkpOwogCiAgICAgaWYgKHNob3Vs
ZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKGRvY3VtZW50KCksIG1fcGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb24pKSB7CiAgICAgICAgIGFycm93UmVjdC5pbmZsYXRlKC1yZXBsYWNl
bWVudEFycm93Q2lyY2xlUGFkZGluZyk7CiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxLjApOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IocmVwbGFjZW1l
bnRUZXh0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICBjb250ZXh0LT5m
aWxsRWxsaXBzZShhcnJvd1JlY3QpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoMS4wKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0
Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxFbGxp
cHNlKGFycm93UmVjdCk7CiAKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZUNsZWFyKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Q29tcG9zaXRlQ2xlYXIpOwogICAgICAgICBkcmF3UmVwbGFjZW1lbnRBcnJvdyhjb250ZXh0LCBh
cnJvd1JlY3QpOwotICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAg
ICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAppbmRleCBkNWZmZjkyMDMyMzU0
MTg0ODI1YjEyMDQ4NjFkNmE2NDJlNjVkMDdlLi4wOTUyZmRhMzRiODgyODkxNGMzOWZhYzRiMjg5
OTQzYmIyMDQ4OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmllbGRzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNl
dC5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAg
ICBwYWludFJlY3Quc2V0WChwYWludFJlY3QueCgpICsgeE9mZik7CiAgICAgfQogCi0gICAgaWYg
KCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9u
KCksIGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCkp
KQorICAgIGlmICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVj
dC5sb2NhdGlvbigpLCBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZv
LmNvbnRleHQoKSkpKQogICAgICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBhaW50UmVj
dCwgc3R5bGUoKSwgTm9ybWFsKTsKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0
eWxlKCkuYmFja2dyb3VuZExheWVycygpLCBwYWludFJlY3QpOwogICAgIHBhaW50Qm94U2hhZG93
KHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpLCBJbnNldCk7CkBAIC0xNjgsOCArMTY4LDgg
QEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8v
IENyZWF0ZSBhIGNsaXBwaW5nIHJlZ2lvbiBhcm91bmQgdGhlIGxlZ2VuZCBhbmQgcGFpbnQgdGhl
IGJvcmRlciBhcyBub3JtYWwKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byB3b3JrIHdpdGggInJsIiBhbmQgImJ0IiBibG9jayBmbG93IGRpcmVjdGlvbnMuICBJbiB0aG9z
ZQogICAgIC8vIGNhc2VzIHRoZSBsZWdlbmQgaXMgZW1iZWRkZWQgaW4gdGhlIHJpZ2h0IGFuZCBi
b3R0b20gYm9yZGVycyByZXNwZWN0aXZlbHkuCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5k
ZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQKICAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0
VW5pdD4oc3R5bGUoKS5ib3JkZXJMZWZ0V2lkdGgoKSwgbGVnZW5kLT53aWR0aCgpKSk7CiAgICAg
ICAgIGNsaXBSZWN0LnNldEhlaWdodChsZWdlbmQtPmhlaWdodCgpKTsKICAgICB9Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3QsIGRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlw
T3V0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSkpOwogCiAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0
eWxlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
bGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5jcHAKaW5kZXggYzdhYzY3NDZhMjc1YTk4ZWM4NmQwOTk4ZTY3NmQ2YjVh
ZjUxYWNjYS4uNjRlY2FjYjA2ZWNlZTkzMGYyNWM2NjZiMTQ5ZWQ4N2VlNTZkM2E2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCkBAIC0xMjAsMTQgKzEyMCwxNCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpw
YWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgLy8gUHVzaCBhIGNsaXAuCi0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBm
YWxzZSk7CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8
fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcykgewog
ICAgICAgICBJbnRSZWN0IGNsaXBSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChMYXlvdXRSZWN0KHBh
aW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQoKSwgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9w
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJv
cmRlclJpZ2h0KCksIGhlaWdodCgpIC0gYm9yZGVyQm90dG9tKCkgLSBib3JkZXJUb3AoKSArIGJ1
dHRvblNoYWRvd0hlaWdodCkpOwogICAgICAgICBpZiAoY2xpcFJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLmNsaXAoY2xpcFJlY3QpOwogICAgIH0KIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpIHsKQEAgLTE2MywxMCArMTYzLDEwIEBAIHZvaWQgUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2luCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRZID0gYmFzZWxpbmVQ
b3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxs
Q29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxs
Q29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVu
YW1lCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1
biwgSW50UG9pbnQocm91bmRUb0ludCh0ZXh0WCksIHJvdW5kVG9JbnQodGV4dFkpKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBv
aW50KHJvdW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwogICAgICAgICAKICAg
ICAgICAgaWYgKGlucHV0RWxlbWVudCgpLmljb24oKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJt
aW5lIHdoZXJlIHRoZSBpY29uIHNob3VsZCBiZSBwbGFjZWQKQEAgLTE4Niw3ICsxODYsNyBAQCB2
b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAg
IC8vIERyYXcgdGhlIGZpbGUgaWNvbgotICAgICAgICAgICAgaW5wdXRFbGVtZW50KCkuaWNvbigp
LT5wYWludCgqcGFpbnRJbmZvLmNvbnRleHQsIEludFJlY3Qocm91bmRUb0ludChpY29uWCksIHJv
dW5kVG9JbnQoaWNvblkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKKyAgICAgICAgICAgIGlu
cHV0RWxlbWVudCgpLmljb24oKS0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgSW50UmVjdChy
b3VuZFRvSW50KGljb25YKSwgcm91bmRUb0ludChpY29uWSksIGljb25XaWR0aCwgaWNvbkhlaWdo
dCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lU2V0LmNwcAppbmRleCAzMzMxNzc2YWM0M2M4NGI4ODQ4YjMyYzQyM2U3NGU5
ZTcxZmRjNjA0Li4yZjgyZGNiMTRiMzk0N2M4M2M2ODQ5OTc3NGU2ZDhkMjJmYTgwYTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKQEAgLTkwLDE1ICs5
MCwxNSBAQCB2b2lkIFJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJvcmRlcihjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
ZG8gc29tZXRoaW5nIGNsZXZlciB3aGVuIGJvcmRlcnMgZnJvbSBkaXN0aW5jdCBmcmFtZXNldHMg
bWVldCBhdCBhIGpvaW4uCiAgICAgCiAgICAgLy8gRmlsbCBmaXJzdC4KLSAgICBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSA9IHN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KGJvcmRlclJl
Y3QsIGZyYW1lU2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29s
b3IoKSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFt
ZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNv
bG9yU3BhY2UpOwogICAgIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlm
IHdlIGhhdmUgZW5vdWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAg
ICAgLy8gYml0IG9mIHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9y
ZGVyUmVjdC53aWR0aCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoSW50UmVj
dChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3Rh
cnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KElu
dFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIElu
dFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwor
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJ
bnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2Up
OworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5t
YXhYKCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVy
RW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOwogICAgIH0KIH0KIApAQCAtMTEwLDE1ICsxMTAs
MTUgQEAgdm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIoY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIGIKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRv
IHNvbWV0aGluZyBjbGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1l
ZXQgYXQgYSBqb2luLgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2Ug
PSBzdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0
LCBmcmFtZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9y
KCksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVT
ZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xv
clNwYWNlKTsKIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlmIHdlIGhh
dmUgZW5vdWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAgICAgLy8g
Yml0IG9mIHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9yZGVyUmVj
dC5oZWlnaHQoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9y
ZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyU3RhcnRFZGdl
Q29sb3IoKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3Qo
SW50UG9pbnQoYm9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNpemUo
d2lkdGgoKSwgMSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAg
IGNvbnRleHQuZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUo
d2lkdGgoKSwgMSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAg
ICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3Jk
ZXJSZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNv
bG9yKCksIGNvbG9yU3BhY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCmluZGV4IDVhNjUwYWFjOWRkYjQ5Nzc3YjYzZjNiZDg4
MDNmMDZlNWVjNmJjMTYuLmM2NzNkODBlYWQ5ODM2NDdhZmViOTMxZjQzZDc0ZDRkMGZlNWI3ZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgYm9vbCBSZW5kZXJIVE1MQ2FudmFzOjpyZXF1aXJlc0xheWVyKCkgY29u
c3QKIAogdm9pZCBSZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIExheW91dFJlY3QgY29udGVu
dEJveFJlY3QgPSB0aGlzLT5jb250ZW50Qm94UmVjdCgpOwogICAgIGNvbnRlbnRCb3hSZWN0Lm1v
dmVCeShwYWludE9mZnNldCk7CkBAIC03NSw5ICs3NSw5IEBAIHZvaWQgUmVuZGVySFRNTENhbnZh
czo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhCiAKICAgICAvLyBOb3QgYWxsb3dlZCB0byBvdmVyZmxvdyB0aGUgY29udGVudCBib3guCiAg
ICAgYm9vbCBjbGlwID0gIWNvbnRlbnRCb3hSZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJl
Y3QpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZv
LmNvbnRleHQsIGNsaXApOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihwYWludEluZm8uY29udGV4dCgpLCBjbGlwKTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXAoc25hcHBlZEludFJlY3QoY29udGVudEJveFJlY3QpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hS
ZWN0KSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAg
IGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyOTg0ZDU3Y2FiN2YzMDdkOTlmOGZl
MDAwNjI3MTcxMDYyMTEwM2JkLi42OWFkMjE0OGZhNzlkZWFjNmEyOTJkMjc4YzEzNTZmYmZhODVk
MjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTM3NSw3
ICszNzUsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgIExheW91dFVuaXQgbGVmdFBh
ZCA9IHBhZGRpbmdMZWZ0KCk7CiAgICAgTGF5b3V0VW5pdCB0b3BQYWQgPSBwYWRkaW5nVG9wKCk7
CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAg
ICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwog
CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpOwpAQCAtMzkxLDEwICszOTEsMTAgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lk
dGggPSBMYXlvdXRVbml0KDEgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAgICAgICAgIC8v
IERyYXcgYW4gb3V0bGluZSByZWN0IHdoZXJlIHRoZSBpbWFnZSBzaG91bGQgYmUuCi0gICAgICAg
ICAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgICAgICBj
b250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFy
ZW50LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3UmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVm
dEJvcmRlciArIGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwg
Y1dpZHRoLCBjSGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CisgICAg
ICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFy
ZW50LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0
Qm9yZGVyICsgbGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBj
V2lkdGgsIGNIZWlnaHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldpZHRoKTsKIAogICAg
ICAgICAgICAgYm9vbCBlcnJvclBpY3R1cmVEcmF3biA9IGZhbHNlOwogICAgICAgICAgICAgTGF5
b3V0U2l6ZSBpbWFnZU9mZnNldDsKQEAgLTQyNCwxMyArNDI0LDEzIEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAg
ICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxl
KCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNp
emUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1h
Z2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNj
cmlwdGlvbik7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyhtX2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgRm9udE1l
dHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOwogICAgICAgICAgICAgICAg
IExheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CkBAIC00NDMsOSArNDQz
LDkgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0
IHRleHRXaWR0aCA9IGZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgICAgICAgICAgaWYgKGVy
cm9yUGljdHVyZURyYXduKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh1c2FibGVXaWR0aCA+
PSB0ZXh0V2lkdGggJiYgZm9udE1ldHJpY3MuaGVpZ2h0KCkgPD0gaW1hZ2VPZmZzZXQuaGVpZ2h0
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0
UnVuLCBhbHRUZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJh
d1RleHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICh1c2FibGVXaWR0aCA+PSB0ZXh0V2lkdGggJiYgdXNhYmxlSGVpZ2h0ID49IGZvbnRN
ZXRyaWNzLmhlaWdodCgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChm
b250LCB0ZXh0UnVuLCBhbHRUZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCBhbHRUZXh0T2Zmc2V0KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaW1hZ2VSZXNvdXJjZSgpLmhhc0ltYWdlKCkgJiYg
Y1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgewpAQCAtNDYxLDkgKzQ2MSw5IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdCA9
IHRoaXMtPnJlcGxhY2VkQ29udGVudFJlY3QoaW50cmluc2ljU2l6ZSgpKTsKICAgICAgICAgcmVw
bGFjZWRDb250ZW50UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgICAgICBib29sIGNsaXAg
PSAhY29udGVudEJveFJlY3QuY29udGFpbnMocmVwbGFjZWRDb250ZW50UmVjdCk7Ci0gICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgY2xpcCk7Cisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlw
KTsKICAgICAgICAgaWYgKGNsaXApCi0gICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNvbnRlbnRC
b3hSZWN0KTsKKyAgICAgICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50Qm94UmVjdCk7CiAKICAg
ICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxh
Y2VkQ29udGVudFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIApAQCAtNDk1LDcg
KzQ5NSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFp
bnRJbmZvJiBwYWludEluZm8pCiAgICAgaWYgKGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAhZnJh
bWUoKS5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFw
YWludEluZm8uY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgJiYgIXBhaW50SW5mby5jb250ZXh0KCku
dXBkYXRpbmdDb250cm9sVGludHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCog
Zm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CkBAIC01MjAsNyAr
NTIwLDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWlu
dEluZm8mIHBhaW50SW5mbykKICAgICBpZiAoIW91dGxpbmVXaWR0aCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdp
ZHRoLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBvdXRsaW5l
V2lkdGgsCiAgICAgICAgIGFyZWFFbGVtZW50U3R5bGUtPm91dGxpbmVPZmZzZXQoKSwKICAgICAg
ICAgYXJlYUVsZW1lbnRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yKSk7CiAjZW5kaWYKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFJlbmRlckltYWdl
OjphcmVhRWxlbWVudEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
cmVwYWludCgpOwogfQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpIHx8IGltYWdl
UmVzb3VyY2UoKS5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5o
ZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm47CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAg
IG9yaWVudGF0aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5p
bWFnZU9yaWVudGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
UmVzb3VyY2UoKS5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLmdldCgpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSwgcmVjdCwKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZVJlc291
cmNlKCkuaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCksIHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmgKaW5kZXggOTBmM2UyNmJlNDgxMjA5YmNmZjZmODg3NWMxNGVmZDg3M2I2NjNkNC4uNjdkZWQx
NzZkNmEzMTdiNmRiYzRmNjFiY2Y1ODFjNDNiNjFkZTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmly
dHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0g
bnVsbHB0cikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcAppbmRleCA0OWQ0NTIwNWMwYTljOGIxZDYxNDUwMjU2MmU1NWJmMGE4MzQ2M2M1
Li5mZTg4ZTc2YzhlMTE5YmMyMDBkNWRlODNjZDFlYzVhMGYzZThiYWM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTU2MCw4ICsxNTYwLDggQEAgdm9p
ZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBpZiAoaGFzT3V0bGluZUFubm90YXRpb24oKSAmJiAh
c3R5bGVUb1VzZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSAmJiAhdGhlbWUoKS5zdXBwb3J0c0ZvY3Vz
UmluZyhzdHlsZVRvVXNlKSkKICAgICAgICAgYWRkUERGVVJMUmVjdChwYWludEluZm8sIHBhaW50
T2Zmc2V0KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQ7Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQoKTsKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgfHwg
c3R5bGVUb1VzZS5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKQEAgLTE1ODEsNyArMTU4MSw3IEBA
IHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgQ29sb3Igb3V0bGluZUNvbG9yID0gc3R5bGVU
b1VzZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogICAg
IGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBvdXRsaW5lQ29sb3IuaGFzQWxwaGEoKTsKICAg
ICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5i
ZWdpblRyYW5zcGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0PihvdXRsaW5lQ29sb3IuYWxw
aGEoKSkgLyAyNTUpOworICAgICAgICBncmFwaGljc0NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lM
YXllcihzdGF0aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAg
ICAgICAgb3V0bGluZUNvbG9yID0gQ29sb3Iob3V0bGluZUNvbG9yLnJlZCgpLCBvdXRsaW5lQ29s
b3IuZ3JlZW4oKSwgb3V0bGluZUNvbG9yLmJsdWUoKSk7CiAgICAgfQogCkBAIC0xNTg5LDEwICsx
NTg5LDEwIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHBhaW50T3V0bGluZUZv
ckxpbmUoZ3JhcGhpY3NDb250ZXh0LCBwYWludE9mZnNldCwgcmVjdHMuYXQoaSAtIDEpLCByZWN0
cy5hdChpKSwgcmVjdHMuYXQoaSArIDEpLCBvdXRsaW5lQ29sb3IpOwogCiAgICAgaWYgKHVzZVRy
YW5zcGFyZW5jeUxheWVyKQotICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogfQogCi12b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAor
dm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGxhc3RsaW5l
LCBjb25zdCBMYXlvdXRSZWN0JiB0aGlzbGluZSwgY29uc3QgTGF5b3V0UmVjdCYgbmV4dGxpbmUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciBvdXRs
aW5lQ29sb3IpCiB7CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFp
bnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
TAogICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkTmV4dExpbmUgPSBzbmFwcGVkSW50UmVjdChwYWlu
dE9mZnNldC54KCkgKyBuZXh0bGluZS54KCksIDAsIG5leHRsaW5lLndpZHRoKCksIDApOwogICAg
IAogICAgIC8vIGxlZnQgZWRnZQotICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250
ZXh0LAorICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgIEZs
b2F0UmVjdChGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgsCiAg
ICAgICAgIHBpeGVsU25hcHBlZEJveC55KCkgLSAobGFzdGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNs
aW5lLngoKSA8IGxhc3RsaW5lLngoKSB8fCAobGFzdGxpbmUubWF4WCgpIC0gMSkgPD0gdGhpc2xp
bmUueCgpID8gb3V0bGluZVdpZHRoIDogMCkpLAogICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25h
cHBlZEJveC54KCksCkBAIC0xNjI2LDcgKzE2MjYsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFp
bnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
TAogICAgICAgICBhbnRpYWxpYXMpOwogICAgIAogICAgIC8vIHJpZ2h0IGVkZ2UKLSAgICBkcmF3
TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICBkcmF3TGluZUZvckJveFNpZGUo
Z3JhcGhpY3NDb250ZXh0LAogICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBw
ZWRCb3gubWF4WCgpLAogICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlz
RW1wdHkoKSB8fCBsYXN0bGluZS5tYXhYKCkgPCB0aGlzbGluZS5tYXhYKCkgfHwgKHRoaXNsaW5l
Lm1heFgoKSAtIDEpIDw9IGxhc3RsaW5lLngoKSA/IG91dGxpbmVXaWR0aCA6IDApKSwKICAgICAg
ICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApAQCAt
MTYzOCw3ICsxNjM4LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgYW50aWFs
aWFzKTsKICAgICAvLyB1cHBlciBlZGdlCiAgICAgaWYgKHRoaXNsaW5lLngoKSA8IGxhc3RsaW5l
LngoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9h
dFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAg
ICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCksCiAgICAgICAgICAg
ICBGbG9hdFBvaW50KHN0ZDo6bWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lk
dGgsIChsYXN0bGluZS5pc0VtcHR5KCkgPyAxMDAwMDAwIDogcGl4ZWxTbmFwcGVkTGFzdExpbmUu
eCgpKSksCkBAIC0xNjQ5LDcgKzE2NDksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAg
ICAgICAgICAgYW50aWFsaWFzKTsKICAgICAKICAgICBpZiAobGFzdGxpbmUubWF4WCgpIDwgdGhp
c2xpbmUubWF4WCgpKQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4
dCwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAg
ICAgIEZsb2F0UmVjdChGbG9hdFBvaW50KHN0ZDo6bWF4KGxhc3RsaW5lLmlzRW1wdHkoKSA/IC0x
MDAwMDAwIDogcGl4ZWxTbmFwcGVkTGFzdExpbmUubWF4WCgpLCBwaXhlbFNuYXBwZWRCb3gueCgp
IC0gb3V0bGluZVdpZHRoKSwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC55KCkgLSBvdXRs
aW5lV2lkdGgpLAogICAgICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgp
ICsgb3V0bGluZVdpZHRoLApAQCAtMTY1OSw3ICsxNjU5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEwKICAgICAgICAgICAgIG91dGxpbmVXaWR0aCwgYW50aWFsaWFzKTsKIAogICAgIGlmICh0
aGlzbGluZS54KCkgPT0gdGhpc2xpbmUubWF4WCgpKQotICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwKICAgICAgICAgICAgIEZsb2F0UmVjdChGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJv
eC54KCkgLSBvdXRsaW5lV2lkdGgsCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0g
b3V0bGluZVdpZHRoKSwKICAgICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1h
eFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2NzEsNyArMTY3MSw3IEBAIHZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMCiAKICAgICAvLyBsb3dlciBlZGdlCiAgICAgaWYgKHRoaXNsaW5lLngoKSA8IG5l
eHRsaW5lLngoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQs
CisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAg
ICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRo
LAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9h
dFBvaW50KHN0ZDo6bWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsICFu
ZXh0bGluZS5pc0VtcHR5KCkgPyBwaXhlbFNuYXBwZWROZXh0TGluZS54KCkgKyAxIDogMTAwMDAw
MCksCkBAIC0xNjgyLDcgKzE2ODIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5l
Rm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAg
ICAgICAgYW50aWFsaWFzKTsKICAgICAKICAgICBpZiAobmV4dGxpbmUubWF4WCgpIDwgdGhpc2xp
bmUubWF4WCgpKQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwK
KyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAg
IEZsb2F0UmVjdChGbG9hdFBvaW50KHN0ZDo6bWF4KCFuZXh0bGluZS5pc0VtcHR5KCkgPyBwaXhl
bFNuYXBwZWROZXh0TGluZS5tYXhYKCkgOiAtMTAwMDAwMCwgcGl4ZWxTbmFwcGVkQm94LngoKSAt
IG91dGxpbmVXaWR0aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gubWF4WSgpKSwKICAg
ICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0
aCwKQEAgLTE2OTIsNyArMTY5Miw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAg
ICAgICBvdXRsaW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUueCgpID09
IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0Nv
bnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGlu
ZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAg
ICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggOTJiY2ViNWI2ZWU0NzIxOWQ3
NDlhNTYxOGNiYTgxNDczMGIyNWRlNS4uNDUwYmIwZjk5NTY4NmYxZWVmZjEzZGU1YzZlMWQ0Nzdk
MGE0ODk3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTcz
LDcgKzE3Myw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVuZGVyUHRyPFJlbmRlcklubGluZT4g
Y2xvbmUoKSBjb25zdDsKIAotICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIHByZXZMaW5lLCBj
b25zdCBMYXlvdXRSZWN0JiB0aGlzTGluZSwKKyAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBw
cmV2TGluZSwgY29uc3QgTGF5b3V0UmVjdCYgdGhpc0xpbmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIG5leHRMaW5lLCBjb25zdCBDb2xvcik7CiAgICAg
UmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlvbkJlZm9yZShSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggN2RlZGU3MWNjNGQ0MzQxNGU4M2E5ZjhhNzE3NTk2MjlhYjdkYWQ3My4uNzQzMDlmZGMyODFm
ZjgyYTYxYzk1NTIxZTc3MDY4MjJjODVmNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC0xNzg3LDkgKzE3ODcsOSBAQCBzdGF0aWMgTGF5b3V0UmVjdCBw
YWludGluZ0V4dGVudChjb25zdCBSZW5kZXJMYXllciYgY3VycmVudExheWVyLCBjb25zdCBSZW5k
ZXJMYQogICAgIHJldHVybiBpbnRlcnNlY3Rpb24odHJhbnNwYXJlbmN5Q2xpcEJveChjdXJyZW50
TGF5ZXIsIHJvb3RMYXllciwgUGFpbnRpbmdUcmFuc3BhcmVuY3lDbGlwQm94LCBSb290T2ZUcmFu
c3BhcmVuY3lDbGlwQm94LCBwYWludEJlaGF2aW9yKSwgcGFpbnREaXJ0eVJlY3QpOwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIGNvbnN0IExh
eW91dFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFp
bnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpICYmIG1fdXNlZFRyYW5zcGFyZW5jeSkpCisgICAgaWYg
KGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBh
aW50aW5nSW5mby5wYWludEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSB0cmFuc3BhcmVudFBhaW50
aW5nQW5jZXN0b3IoKTsKQEAgLTE3OTgsMjIgKzE3OTgsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6
YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBM
YXllclAKICAgICAKICAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8u
cGFpbnRCZWhhdmlvcikpIHsKICAgICAgICAgbV91c2VkVHJhbnNwYXJlbmN5ID0gdHJ1ZTsKLSAg
ICAgICAgY29udGV4dC0+c2F2ZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAg
TGF5b3V0UmVjdCBhZGp1c3RlZENsaXBSZWN0ID0gcGFpbnRpbmdFeHRlbnQoKnRoaXMsIHBhaW50
aW5nSW5mby5yb290TGF5ZXIsIGRpcnR5UmVjdCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ip
OwogICAgICAgICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNj
dW11bGF0aW9uKTsKICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZENsaXBSZWN0ID0gc25h
cFJlY3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCByZW5kZXJlcigpLmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFw
cGVkQ2xpcFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXAocGl4ZWxTbmFwcGVkQ2xpcFJlY3Qp
OwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAgICAgaWYgKGhhc0JsZW5kTW9k
ZSgpKQotICAgICAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQt
PmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUoKSk7CisgICAgICAgICAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVu
ZE1vZGUoKSk7CiAjZW5kaWYKIAotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxh
eWVyKHJlbmRlcmVyKCkub3BhY2l0eSgpKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKHJlbmRlcmVyKCkub3BhY2l0eSgpKTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9T
SVRJTkcpCiAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAgICAgICAgICAgIGNvbnRleHQt
PnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxl
bmRNb2RlTm9ybWFsKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7CiAjZW5kaWYK
IAogI2lmZGVmIFJFVkVBTF9UUkFOU1BBUkVOQ1lfTEFZRVJTCkBAIC0zNTQxLDcgKzM1NDEsNyBA
QCBib29sIFJlbmRlckxheWVyOjpzaG93c092ZXJmbG93Q29udHJvbHMoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMpCit2
b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMpCiB7CiAgICAgLy8gRG9uJ3QgZG8g
YW55dGhpbmcgaWYgd2UgaGF2ZSBubyBvdmVyZmxvdy4KICAgICBpZiAoIXJlbmRlcmVyKCkuaGFz
T3ZlcmZsb3dDbGlwKCkpCkBAIC0zNjA1LDcgKzM2MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQ
b2ludAogICAgIHBhaW50UmVzaXplcihjb250ZXh0LCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBkYW1h
Z2VSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJv
eCgpOwogICAgIEFTU0VSVChib3gpOwpAQCAtMzYxNSw3ICszNjE1LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRQb2ludCYgcGEKICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0KSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkp
IHsKKyAgICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVw
ZGF0ZVNjcm9sbENvcm5lclN0eWxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjI4
LDEwICszNjI4LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byBwYWludCB3aGl0ZSBpZiB3ZSBoYXZlIG92ZXJsYXkgc2Nyb2xsYmFycywgc2luY2Ug
d2UgbmVlZAogICAgIC8vIHRvIHNlZSB3aGF0IGlzIGJlaGluZCBpdC4KICAgICBpZiAoIWhhc092
ZXJsYXlTY3JvbGxiYXJzKCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGFic1JlY3QsIENv
bG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoYWJzUmVjdCwgQ29sb3I6OndoaXRlLCBib3gtPnN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3Qp
Cit2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCkKIHsKICAg
ICBSZWZQdHI8SW1hZ2U+IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0U2l6ZSBjb3JuZXJS
ZXNpemVyU2l6ZTsKQEAgLTM2NDcsMTggKzM2NDcsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJh
d1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5
b3UKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tE
aXJlY3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2F2
ZSgpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsg
Y29ybmVyUmVzaXplclNpemUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXpl
ckNvcm5lclJlY3QuaGVpZ2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7Ci0gICAg
ICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjApKTsKLSAgICAgICAgY29udGV4
dC0+ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCku
Y29sb3JTcGFjZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkp
OwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZXNpemVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJS
ZXNpemVyU2l6ZS53aWR0aCgpLCByZXNpemVyQ29ybmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVy
UmVjdC5oZWlnaHQoKSAtIGNvcm5lclJlc2l6ZXJTaXplLmhlaWdodCgpKTsKKyAgICAgICAgY29u
dGV4dC5zY2FsZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFj
ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOworICAgICAg
ICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHJlc2l6ZXJD
b3JuZXJSZWN0Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3JuZXJSZXNpemVyU2l6ZSwgY29ybmVyUmVz
aXplclNpemUpLCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigp
LnN0eWxlKCkuY29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgp
LCBpbWFnZVJlY3QpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0
IExheW91dFJlY3QmIGRhbWFnZVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQs
IGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5
bGUoKS5yZXNpemUoKSA9PSBSRVNJWkVfTk9ORSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY3MSw3
ICszNjcxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBpZiAoIWFic1JlY3QuaW50
ZXJzZWN0cyhkYW1hZ2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQt
PnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKKyAgICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRy
b2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVJlc2l6ZXJTdHlsZSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMzY4NiwxNCArMzY4NiwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bgogICAgIC8vIERyYXcgYSBmcmFtZSBhcm91bmQgdGhlIHJlc2l6ZXIgKDFweCBncmV5IGxpbmUp
IGlmIHRoZXJlIGFyZSBhbnkgc2Nyb2xsYmFycyBwcmVzZW50LgogICAgIC8vIENsaXBwaW5nIHdp
bGwgZXhjbHVkZSB0aGUgcmlnaHQgYW5kIGJvdHRvbSBlZGdlcyBvZiB0aGlzIGZyYW1lLgogICAg
IGlmICghaGFzT3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAobV92QmFyIHx8IG1faEJhcikpIHsKLSAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChhYnNSZWN0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LmNsaXAoYWJzUmVj
dCk7CiAgICAgICAgIExheW91dFJlY3QgbGFyZ2VyQ29ybmVyID0gYWJzUmVjdDsKICAgICAgICAg
bGFyZ2VyQ29ybmVyLnNldFNpemUoTGF5b3V0U2l6ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIExh
eW91dFVuaXQ6OmZyb21QaXhlbCgxKSwgbGFyZ2VyQ29ybmVyLmhlaWdodCgpICsgTGF5b3V0VW5p
dDo6ZnJvbVBpeGVsKDEpKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAg
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgICAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2VyQ29ybmVyKSk7CisgICAg
ICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVz
cygxLjBmKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwcGVk
SW50UmVjdChsYXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CiAKQEAgLTM3NjEsNyArMzc2MSw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3Jv
bGxHcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3Jv
bGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYg
ZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50
QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3Qg
TGF5b3V0U2l6ZSYgc3VicGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhh
dmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKIHsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0
czsKIApAQCAtMzc3Miw3ICszNzcyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LAogICAgICAg
ICB3aWRnZXQtPnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwg
UmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRP
dmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0
KiBzdWJ0cmVlUGFpbnRSb290KQogewogICAgIGlmICghbV9jb250YWluc0RpcnR5T3ZlcmxheVNj
cm9sbGJhcnMpCiAgICAgICAgIHJldHVybjsKQEAgLTM3OTcsMTggKzM3OTcsMTggQEAgc3RhdGlj
IGJvb2wgaW5Db250YWluaW5nQmxvY2tDaGFpbihSZW5kZXJMYXllciogc3RhcnRMYXllciwgUmVu
ZGVyTGF5ZXIqIGVuZExheWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJh
ZGl1c0NsaXBwaW5nUnVsZSBydWxlKQordm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IENsaXBSZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1
bGUpCiB7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJlcigpLmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogICAgIGJvb2wgbmVlZHNDbGlwcGluZyA9IGNsaXBS
ZWN0LnJlY3QoKSAhPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgaWYgKG5lZWRz
Q2xpcHBpbmcgfHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250ZXh0
LT5zYXZlKCk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgaWYgKG5lZWRzQ2xpcHBp
bmcpIHsKICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3RlZENsaXBSZWN0ID0gY2xpcFJlY3QucmVj
dCgpOwogICAgICAgICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVs
QWNjdW11bGF0aW9uKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgIGNvbnRl
eHQuY2xpcChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIGRldmljZVNj
YWxlRmFjdG9yKSk7CiAgICAgfQogCiAgICAgaWYgKGNsaXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMo
KSkgewpAQCAtMzgxOSw3ICszODE5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBHcmFwaGljc0NvbnQKICAgICAg
ICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllci0+
cmVuZGVyZXIoKS5zdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpICYmIGluQ29udGFpbmluZ0Jsb2Nr
Q2hhaW4odGhpcywgbGF5ZXIpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3Rl
ZENsaXBSZWN0ID0gTGF5b3V0UmVjdCh0b0xheW91dFBvaW50KGxheWVyLT5vZmZzZXRGcm9tQW5j
ZXN0b3IocGFpbnRpbmdJbmZvLnJvb3RMYXllcikpLCBsYXllci0+c2l6ZSgpKTsKICAgICAgICAg
ICAgICAgICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11
bGF0aW9uKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QobGF5ZXIt
PnJlbmRlcmVyKCkuc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYWRqdXN0ZWRDbGlw
UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rv
cikpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5k
ZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3Qp
LnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxheWVyID09IHBh
aW50aW5nSW5mby5yb290TGF5ZXIpCkBAIC0zODI4LDEwICszODI4LDEwIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
R3JhcGhpY3NDb250CiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpyZXN0b3JlQ2xpcChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0
LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpyZXN0b3JlQ2xp
cChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlS
ZWN0LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgaWYgKGNsaXBSZWN0LnJlY3Qo
KSAhPSBwYWludERpcnR5UmVjdCB8fCBjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpCi0gICAg
ICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHBlcmZvcm1PdmVybGFwVGVzdHMoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwJiBv
dmVybGFwVGVzdFJlcXVlc3RzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpCkBAIC0zODc1LDEyICszODc1LDEyIEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBwYWludEZvckZpeGVkUm9vdEJhY2tncm91bmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVy
LCBSZW5kZXJMCiAgICAgcmV0dXJuIGxheWVyLT5yZW5kZXJlcigpLmlzUm9vdCgpICYmIChwYWlu
dEZsYWdzICYgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25s
eSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVy
RmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsK
ICAgICAgICAgLy8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2Vz
IHRocm91Z2ggY29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBl
bnN1cmUgdGhhdCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdy
b25nIHJvb3QgaW4gdGhpcyBjYXNlLgotICAgICAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250
cm9sVGludHMoKSB8fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9y
RmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKKyAgICAgICAgaWYgKGNvbnRleHQudXBkYXRpbmdD
b250cm9sVGludHMoKSB8fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2
aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKSkKICAgICAgICAgICAgIHBhaW50RmxhZ3MgfD0g
UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0czsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tpbmco
KS0+cGFpbnRzSW50b1dpbmRvdygpCiAgICAgICAgICAgICAmJiAhYmFja2luZygpLT5wYWludHNJ
bnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkKQEAgLTM5NjQsNyArMzk2NCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQs
IHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRG
bGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBBU1NFUlQoaXNTZWxm
UGFpbnRpbmdMYXllcigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKTsKIApA
QCAtMzk4Miw5ICszOTgyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRz
QW5kUmVmbGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBwYWludExh
eWVyQ29udGVudHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogfQog
Ci1ib29sIFJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpCitib29sIFJlbmRlckxh
eWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgc2Nyb2xsaW5nT25NYWluVGhyZWFkID0gdHJ1ZTsK
QEAgLTQwMDIsOCArNDAwMiw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYm9vbCYKICAgICBpZiAoUGFn
ZSogcGFnZSA9IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCkpCiAgICAgICAgIGlzWm9vbWluZyA9
ICFwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5oYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKTsKICAg
ICBpZiAoc2Nyb2xsaW5nT25NYWluVGhyZWFkIHx8IGNvbnRlbnRzU2Nyb2xsQnlQYWludGluZyB8
fCBpc1pvb21pbmcpIHsKLSAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQtPnNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cygpOwotICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMoZmFsc2UpOworICAgICAgICBkaWRRdWFudGl6ZUZvbnRzID0gY29u
dGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKTsKKyAgICAgICAgY29udGV4dC5zZXRT
aG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA3Miw5ICs0MDcyLDkgQEAgUGF0aCBSZW5k
ZXJMYXllcjo6Y29tcHV0ZUNsaXBQYXRoKGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290
LCBMYXlvdXRSZWN0JgogICAgIHJldHVybiBQYXRoKCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6
OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwg
TGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHND
b21wdXRlZCkKK2Jvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRz
LCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKIHsKLSAgICBpZiAoIXJlbmRlcmVy
KCkuaGFzQ2xpcFBhdGgoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYg
KCFyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcm9vdFJlbGF0aXZlQm91bmRzQ29t
cHV0ZWQpIHsKQEAgLTQwODgsOCArNDA4OCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xp
cFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAg
ICAgICAgIFdpbmRSdWxlIHdpbmRSdWxlOwogICAgICAgICBMYXlvdXRTaXplIHBhaW50aW5nT2Zm
c2V0RnJvbVJvb3QgPSBMYXlvdXRTaXplKHNuYXBTaXplVG9EZXZpY2VQaXhlbChvZmZzZXRGcm9t
Um9vdCArIHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbiwgTGF5b3V0UG9pbnQoKSwg
cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKICAgICAgICAgUGF0
aCBwYXRoID0gY29tcHV0ZUNsaXBQYXRoKHBhaW50aW5nT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxh
dGl2ZUJvdW5kcywgd2luZFJ1bGUpOwotICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAg
IGNvbnRleHQtPmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKKyAgICAgICAgY29udGV4dC5zYXZl
KCk7CisgICAgICAgIGNvbnRleHQuY2xpcFBhdGgocGF0aCwgd2luZFJ1bGUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQwOTgsNyArNDA5OCw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mCiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3VtZW50
KCkuZ2V0RWxlbWVudEJ5SWQocmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24tPmZyYWdtZW50KCkp
OwogICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpj
bGlwUGF0aFRhZykgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHVzZSBhIHNhZmVyIGNhc3Qgc3VjaCBhcyB0b1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyKCkuCi0gICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZG8gYSBj
b250ZXh0LT5zYXZlKCkgYW5kIHJldHVybiB0cnVlIHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/
CisgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZG8gYSBjb250ZXh0LnNhdmUoKSBh
bmQgcmV0dXJuIHRydWUgc28gd2UgcmVzdG9yZSB0aGUgY29udGV4dD8KICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcio+KGVsZW1lbnQtPnJlbmRlcmVyKCkp
LT5hcHBseUNsaXBwaW5nVG9Db250ZXh0KHJlbmRlcmVyKCksIHJvb3RSZWxhdGl2ZUJvdW5kcywg
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBjb250ZXh0KTsKICAgICAgICAgfQogICAgIH0K
QEAgLTQxMDYsOSArNDEwNiw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKSBjb25z
dAorYm9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHBhaW50RmxhZ3Mg
JiBQYWludExheWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykKQEAgLTQxMjYsNyArNDEyNiw3
IEBAIGJvb2wgUmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUGFpbnRMYXllckZsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVw
RmlsdGVycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWlu
dGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290
UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5k
ZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYg
cm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKIHsK
ICAgICBpZiAoIWhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50RmxhZ3MpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTQxNjMsNyArNDE2Myw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVy
cyhHcmFwaGljc0NvCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCog
UmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciogZmls
dGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykKK0dy
YXBoaWNzQ29udGV4dCYgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5k
ZXJlckhlbHBlciogZmlsdGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRl
eHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXll
ckZyYWdtZW50cykKIHsKICAgICBBU1NFUlQoZmlsdGVyUGFpbnRlci0+aGFzU3RhcnRlZEZpbHRl
ckVmZmVjdCgpKTsKICAgICAvLyBBcHBseSB0aGUgY29ycmVjdCBjbGlwcGluZyAoaWUuIG92ZXJm
bG93OiBoaWRkZW4pLgpAQCAtNDE4NSw3ICs0MTg1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNv
bXBhcmVaSW5kZXgoUmVuZGVyTGF5ZXIqIGZpcnN0LCBSZW5kZXJMYXllciogc2Vjb25kKQogLy8g
VGhlc2UgbGF5ZXJzIHNob3VsZCBub3QgYmUgcGFpbnRlZCBpbiBhIHNpbWlsYXIgd2F5IGFzIHRo
ZSBvdGhlciBlbGVtZW50cyBjb2xsZWN0ZWQgaW4KIC8vIG5hbWVkIGZsb3dzIC0gcmVnaW9ucyAt
PiBuYW1lZCBmbG93cyAtIHNpbmNlIHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgY2xpcHBlZCB0
byB0aGUKIC8vIHJlZ2lvbnMgdmlld3BvcnQuCi12b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVk
TGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2
b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFp
bnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKCFpc1Jvb3RMYXllcigpKQogICAg
ICAgICByZXR1cm47CkBAIC00MjA2LDcgKzQyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TAogICAgICAgICBmaXhlZExheWVyLT5wYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywg
cGFpbnRGbGFncyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGlu
Z0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykKIHsKICAgICBBU1NFUlQoaXNTZWxmUGFpbnRpbmdMYXllcigpIHx8IGhhc1NlbGZQYWludGlu
Z0xheWVyRGVzY2VuZGFudCgpKTsKIApAQCAtNDI0OCwyNCArNDI0OCwyNSBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkaXNhYmxl
IHN1YnBpeGVsIHF1YW50aXphdGlvbiBmb3Igb3ZlcmZsb3cgY2xpcHMgb3Igc3ViZnJhbWVzIG9u
Y2Ugd2Ugc2Nyb2xsIHRob3NlCiAgICAgLy8gdGhpbmdzIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFk
LgogICAgIGJvb2wgZGlkUXVhbnRpemVGb250cyA9IHRydWU7Ci0gICAgYm9vbCBuZWVkVG9BZGp1
c3RTdWJwaXhlbFF1YW50aXphdGlvbiA9IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNv
bnRleHQsIGRpZFF1YW50aXplRm9udHMpOworICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4ZWxR
dWFudGl6YXRpb24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihvcmlnaW5hbENvbnRl
eHQsIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgLy8gQXBwbHkgY2xpcC1wYXRoIHRvIGNvbnRl
eHQuCiAgICAgTGF5b3V0U2l6ZSBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gb2Zmc2V0RnJv
bVJvb3Q7Ci0gICAgaWYgKHJlbmRlcmVyKCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYm
IChyZW5kZXJlcigpLmhhc0NsaXBQYXRoKCkgfHwgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoY29u
dGV4dCwgcGFpbnRGbGFncykpKQorICAgIGlmIChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWlu
aW5nQmxvY2soKSAmJiAocmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJ
c1BhaW50aW5nKG9yaWdpbmFsQ29udGV4dCwgcGFpbnRGbGFncykpKQogICAgICAgICBjb2x1bW5B
d2FyZU9mZnNldEZyb21Sb290ID0gdG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKHBh
aW50aW5nSW5mby5yb290TGF5ZXIsIExheW91dFBvaW50KCksIEFkanVzdEZvckNvbHVtbnMpKTsK
IAogICAgIGJvb2wgaGFzQ2xpcFBhdGggPSBmYWxzZTsKICAgICBpZiAoc2hvdWxkQXBwbHlDbGlw
UGF0aChwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkKLSAgICAg
ICAgaGFzQ2xpcFBhdGggPSBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHBhaW50aW5nSW5mbywgY29s
dW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVC
b3VuZHNDb21wdXRlZCk7CisgICAgICAgIGhhc0NsaXBQYXRoID0gc2V0dXBDbGlwUGF0aChvcmln
aW5hbENvbnRleHQsIHBhaW50aW5nSW5mbywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9v
dFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKICAgICBMYXll
clBhaW50aW5nSW5mbyBsb2NhbFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBjb250ZXh0OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gZmlsdGVyUGFpbnRlciA9
IHNldHVwRmlsdGVycyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRGbGFncywgY29s
dW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVC
b3VuZHNDb21wdXRlZCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gJm9yaWdpbmFs
Q29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9
IG9yaWdpbmFsQ29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVy
ZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMoKmNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLCBwYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290LCByb290UmVs
YXRpdmVCb3VuZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKICAgICBpZiAoZmlsdGVy
UGFpbnRlcikgewogICAgICAgICBjb250ZXh0ID0gZmlsdGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4
dCgpOwotICAgICAgICBpZiAoY29udGV4dCAhPSB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgJiYg
aGF2ZVRyYW5zcGFyZW5jeSkgeworICAgICAgICBpZiAoY29udGV4dCAhPSAmdHJhbnNwYXJlbmN5
TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFuc3BhcmVuY3kpIHsKICAgICAgICAgICAgIC8vIElmIHdl
IGhhdmUgYSBmaWx0ZXIgYW5kIHRyYW5zcGFyZW5jeSwgd2UgaGF2ZSB0byBlYWdlcmx5IHN0YXJ0
IGEgdHJhbnNwYXJlbmN5IGxheWVyIGhlcmUsIHJhdGhlciB0aGFuIHJpc2sgYSBjaGlsZCBsYXll
ciBsYXppbHkgc3RhcnRzIG9uZSB3aXRoIHRoZSB3cm9uZyBjb250ZXh0LgogICAgICAgICAgICAg
YmVnaW5UcmFuc3BhcmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KTsKICAgICAgICAgfQpAQCAt
NDMxMSw2MyArNDMxMiw2MyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgIGlmIChpc1Bh
aW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQpIHsKICAgICAgICAgLy8gUGFpbnQgb25seSB0aGUg
YmFja2dyb3VuZHMgZm9yIGFsbCBvZiB0aGUgZnJhZ21lbnRzIG9mIHRoZSBsYXllci4KICAgICAg
ICAgaWYgKHNob3VsZFBhaW50Q29udGVudCAmJiAhc2VsZWN0aW9uT25seSkKLSAgICAgICAgICAg
IHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgdHJh
bnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVU
cmFuc3BhcmVuY3ksCisgICAgICAgICAgICBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMobGF5
ZXJGcmFnbWVudHMsICpjb250ZXh0LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50aW5n
SW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKICAgICAgICAgICAgICAgICBs
b2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRl
cmVyKTsKICAgICB9CiAKICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRy
ZW4gd2l0aCBuZWdhdGl2ZSB6LWluZGljZXMuCiAgICAgaWYgKChpc1BhaW50aW5nU2Nyb2xsaW5n
Q29udGVudCAmJiBpc1BhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgfHwgKCFpc1BhaW50aW5nU2Ny
b2xsaW5nQ29udGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQpKQotICAgICAg
ICBwYWludExpc3QobmVnWk9yZGVyTGlzdCgpLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywg
bG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgKmNv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIAogICAgIGlm
IChpc1BhaW50aW5nQ29tcG9zaXRlZEZvcmVncm91bmQpIHsKICAgICAgICAgaWYgKHNob3VsZFBh
aW50Q29udGVudCkKLSAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0lu
Zm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCisgICAgICAgICAgICBwYWludEZv
cmVncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCB0cmFuc3BhcmVu
Y3lMYXllckNvbnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFy
ZW5jeSwKICAgICAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwg
c3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyLCBzZWxlY3Rpb25Pbmx5IHx8IHNlbGVjdGlvbkFu
ZEJhY2tncm91bmRzT25seSk7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFBhaW50T3V0bGluZSkK
LSAgICAgICAgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0
LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJl
bmRlcmVyKTsKKyAgICAgICAgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRz
LCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWlu
dFJvb3RGb3JSZW5kZXJlcik7CiAKICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3Jv
dW5kKSB7CiAgICAgICAgIC8vIFBhaW50IGFueSBjaGlsZCBsYXllcnMgdGhhdCBoYXZlIG92ZXJm
bG93LgotICAgICAgICBwYWludExpc3QobV9ub3JtYWxGbG93TGlzdC5nZXQoKSwgY29udGV4dCwg
bG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgIHBhaW50TGlzdCht
X25vcm1hbEZsb3dMaXN0LmdldCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2Fs
UGFpbnRGbGFncyk7CiAgICAgCiAgICAgICAgIC8vIE5vdyB3YWxrIHRoZSBzb3J0ZWQgbGlzdCBv
ZiBjaGlsZHJlbiB3aXRoIHBvc2l0aXZlIHotaW5kaWNlcy4KLSAgICAgICAgcGFpbnRMaXN0KHBv
c1pPcmRlckxpc3QoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CisgICAgICAgIHBhaW50TGlzdChwb3NaT3JkZXJMaXN0KCksICpjb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgZml4
ZWQgZWxlbWVudHMgZnJvbSBmbG93IHRocmVhZHMuCi0gICAgICAgIHBhaW50Rml4ZWRMYXllcnNJ
bk5hbWVkRmxvd3MoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7
CisgICAgICAgIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoKmNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhp
cyBpcyBhIHJlZ2lvbiwgcGFpbnQgaXRzIGNvbnRlbnRzIHZpYSB0aGUgZmxvdyB0aHJlYWQncyBs
YXllci4KICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCkKLSAgICAgICAgICAgIHBhaW50
Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBs
b2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgICAgIHBhaW50Rmxv
d1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9j
YWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgfQogCiAgICAgaWYgKGlzUGFp
bnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiBoYXNTY3JvbGxiYXJzKCkpCi0gICAgICAgIHBhaW50
T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9j
YWxQYWludGluZ0luZm8pOworICAgICAgICBwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVu
dHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbyk7CiAKICAgICBp
ZiAoZmlsdGVyUGFpbnRlcikgewotICAgICAgICBjb250ZXh0ID0gYXBwbHlGaWx0ZXJzKGZpbHRl
clBhaW50ZXIuZ2V0KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIGxheWVyRnJhZ21lbnRzKTsKKyAgICAgICAgY29udGV4dCA9ICZhcHBseUZpbHRlcnMoZmls
dGVyUGFpbnRlci5nZXQoKSwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgbGF5ZXJGcmFnbWVudHMpOwogICAgICAgICBmaWx0ZXJQYWludGVyID0gbnVsbHB0cjsK
ICAgICB9CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2Ugbm93IHVzZSB0aGUgb3JpZ2lu
YWwgdHJhbnNwYXJlbmN5IGNvbnRleHQuCi0gICAgQVNTRVJUKHRyYW5zcGFyZW5jeUxheWVyQ29u
dGV4dCA9PSBjb250ZXh0KTsKKyAgICBBU1NFUlQoJnRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9
PSBjb250ZXh0KTsKIAogICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIShzZWxlY3Rpb25P
bmx5IHx8IHNlbGVjdGlvbkFuZEJhY2tncm91bmRzT25seSkpIHsKICAgICAgICAgaWYgKHNob3Vs
ZFBhaW50TWFzayhwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkg
ewogICAgICAgICAgICAgLy8gUGFpbnQgdGhlIG1hc2sgZm9yIHRoZSBmcmFnbWVudHMuCi0gICAg
ICAgICAgICBwYWludE1hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOworICAgICAgICAg
ICAgcGFpbnRNYXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQ
YWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIShwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdN
YXNrUGhhc2UpICYmIChwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdD
bGlwUGF0aFBoYXNlKSkgewogICAgICAgICAgICAgLy8gUmUtdXNlIHBhaW50Q2hpbGRDbGlwcGlu
Z01hc2tGb3JGcmFnbWVudHMgdG8gcGFpbnQgYmxhY2sgZm9yIHRoZSBjb21wb3NpdGluZyBjbGlw
cGluZyBtYXNrLgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50
cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWlu
dFJvb3RGb3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9y
RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGlmICgobG9jYWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ2hpbGRDbGlwcGluZ01h
c2tQaGFzZSkpIHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBib3JkZXIgcmFkaXVzIG1hc2sg
Zm9yIHRoZSBmcmFnbWVudHMuCi0gICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9y
RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgc3Vi
dHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGlu
Z01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5n
SW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNDM4Niw3ICs0Mzg3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBs
eWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBM
YXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3Ms
IGNvbnN0IExheW91dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0KQogewogICAgIC8vIFRoaXMgaW52
b2x2ZXMgc3VidHJhY3Rpbmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIgaW4gb3VyIGN1
cnJlbnQgY29vcmRpbmF0ZSBzcGFjZSwgYnV0IHByZXNlcnZpbmcKICAgICAvLyB0aGUgYWNjdW11
bGF0ZWQgZXJyb3IgZm9yIHN1Yi1waXhlbCBsYXlvdXQuCkBAIC00NDAyLDggKzQ0MDMsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBncmFwaGljcyBjb250
ZXh0IHRvIHRoZSBzbmFwcGluZyBwb3NpdGlvbiB0byBhdm9pZCBvZmYtZGV2aWNlLXBpeGVsIHBv
c2l0aW5nLgogICAgIHRyYW5zZm9ybS50cmFuc2xhdGVSaWdodChkZXZpY2VQaXhlbFNuYXBwZWRP
ZmZzZXRGb3JUaGlzTGF5ZXIud2lkdGgoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhp
c0xheWVyLmhlaWdodCgpKTsKICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtLgotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+
Y29uY2F0Q1RNKHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5jb25jYXRD
VE0odHJhbnNmb3JtLnRvQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gTm93IGRvIGEgcGFp
bnQgd2l0aCB0aGUgcm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExheW91dFNpemUg
YWRqdXN0ZWRTdWJwaXhlbEFjY3VtdWxhdGlvbiA9IG9mZnNldEZvclRoaXNMYXllciAtIExheW91
dFNpemUoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKQEAgLTQ0MTIsNyAr
NDQxMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3Jt
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICBwYWludExheWVyQ29udGVudHNB
bmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdz
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+
KiBsaXN0LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50
TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNDU5Nyw3ICs0NTk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUGFpbnRpbmdJ
bmZvRm9yRnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnMKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3Mg
cGFpbnRGbGFncykKIHsKICAgICBMYXllckZyYWdtZW50cyBlbmNsb3NpbmdQYWdpbmF0aW9uRnJh
Z21lbnRzOwogICAgIExheW91dFNpemUgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdDsK
QEAgLTQ2MjksNyArNDYzMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRM
YXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgfQogfQog
Ci12b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdy
YXBoaWNzQ29udGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXll
ckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQmIHRy
YW5zcGFyZW5jeUxheWVyQ29udGV4dCwKICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVu
Y3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwK
ICAgICBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcikKIHsKQEAgLTQ2
NTcsNyArNDY1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgfQogfQogCi12b2lk
IFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNz
Q29udGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdt
ZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFy
ZW5jeUxheWVyQ29udGV4dCwKICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWlu
dERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgbG9jYWxQYWludGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKICAgICBS
ZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgYm9vbCBzZWxlY3Rpb25P
bmx5KQogewpAQCAtNDcxNCw3ICs0NzE1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3Jl
Z3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAg
ICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJl
Y3QsIGNsaXBwZWRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0IExheWVyRnJhZ21l
bnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2Ug
cGhhc2UsIGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5n
SW5mbywgUGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlcikKIHsKICAgICBib29sIHNob3VsZENsaXAgPSBsb2NhbFBhaW50
aW5nSW5mby5jbGlwVG9EaXJ0eVJlY3QgJiYgbGF5ZXJGcmFnbWVudHMuc2l6ZSgpID4gMTsKQEAg
LTQ3MzYsNyArNDczNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMCiAgICAgfQogfQogCi12
b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVu
dHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxv
Y2FsUGFpbnRpbmdJbmZvLAogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVy
T2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzUxLDcgKzQ3NTIsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQ
YWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywKICAgICBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcikKIHsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGZyYWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKQEAgLTQ3NzEsNyArNDc3Miw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdt
ZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpw
YWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxk
Q2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdt
ZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYg
bG9jYWxQYWludGluZ0luZm8sCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9y
UmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21l
bnRzKSB7CkBAIC00NzkwLDcgKzQ3OTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxk
Q2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllcgogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCit2
b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3Qg
TGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbykKIHsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGZyYWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKICAgICAgICAgaWYgKGZy
YWdtZW50LmJhY2tncm91bmRSZWN0LmlzRW1wdHkoKSkKQEAgLTY5MTgsNyArNjkxOSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OmZpbHRlck5lZWRzUmVwYWludCgpCiAgICAgcmVuZGVyZXIoKS5yZXBh
aW50KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRl
UmVnaW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQq
IHJlZ2lvbiwgTGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCwgTGF5b3V0UG9pbnQgcGFpbnRPZmZz
ZXQsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24s
IExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWlu
dEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewog
ICAgIExheW91dFJlY3QgcmVnaW9uQ29udGVudEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVn
aW9uLT5sYXllck93bmVyKCkpLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgQ3VycmVudFJlbmRlclJl
Z2lvbk1haW50YWluZXIgcmVnaW9uTWFpbnRhaW5lcigqcmVnaW9uKTsKQEAgLTY5MjYsMTcgKzY5
MjcsMTcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdp
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW4KIAogICAgIExheW91dFNpemUgbW92ZU9m
ZnNldCA9IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25Mb2NhdGlvbigpIC0gKHBhaW50T2Zmc2V0
ICsgcmVnaW9uQ29udGVudEJveC5sb2NhdGlvbigpKSArIHJlZ2lvbi0+ZnJhZ21lbnRDb250YWlu
ZXIoKS5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUGFp
bnRPZmZzZXQgPSByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHModG9MYXlvdXRQb2ludChtb3ZlT2Zm
c2V0KSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNv
bnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLWFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpLCAtYWRqdXN0ZWRQYWludE9mZnNldC55KCkpOworICAgIGNvbnRleHQuc2F2ZSgpOwor
ICAgIGNvbnRleHQudHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgLWFkanVzdGVk
UGFpbnRPZmZzZXQueSgpKTsKIAogICAgIExheW91dFNpemUgc3VicGl4ZWxBY2N1bXVsYXRpb24g
PSBtb3ZlT2Zmc2V0IC0gdG9MYXlvdXRTaXplKExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQpKTsKICAgICBwYWludERpcnR5UmVjdC5tb3ZlKG1vdmVPZmZzZXQpOwogICAgIHBhaW50KGNv
bnRleHQsIHBhaW50RGlydHlSZWN0LCBMYXlvdXRTaXplKC1zdWJwaXhlbEFjY3VtdWxhdGlvbi53
aWR0aCgpLCAtc3VicGl4ZWxBY2N1bXVsYXRpb24uaGVpZ2h0KCkpLCBwYWludEJlaGF2aW9yLCBu
dWxscHRyLCBwYWludEZsYWdzIHwgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyk7CiAgICAg
cmVnaW9uLT5yZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKTsKLSAgICBjb250ZXh0
LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5
ZXI6OnBhaW50Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21l
bnRzJiBmcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lk
IFJlbmRlckxheWVyOjpwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBM
YXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZs
YWdzKQogewogICAgIGlmICghcmVuZGVyZXIoKS5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29u
dGFpbmVyKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKaW5kZXggYjZhMTI4Y2E4ZWY5NDVkMDA2ZTE4Yjc5MDlhYzkxNzVjN2MyYWI0My4uZWQx
YjQwMDI0Njc0ODE3YjI3ZTdiNDcxNzZhMDYzZTE2ZjJlMmI3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTI2MCw5ICsyNjAsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQm
IGxvY2FsUG9pbnQpOwogICAgIEludFNpemUgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJ
bnRQb2ludCYgYWJzb2x1dGVQb2ludCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmZsb3dD
b250cm9scyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMgPSBmYWxzZSk7Ci0gICAg
dm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRSZXNpemVyKEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdl
UmVjdCk7CisgICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5n
T3ZlcmxheUNvbnRyb2xzID0gZmFsc2UpOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKKyAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVT
Y3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKTsKIApAQCAtNDYwLDEzICs0NjAsMTMgQEAgcHVibGljOgog
ICAgIC8vIHBhaW50cyB0aGUgbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVjdCBm
cm9tIGJhY2sgdG8KICAgICAvLyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3Ig
bW91c2UgZXZlbnRzIGJ5IHdhbGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhl
IHBvaW50IGZyb20gZnJvbnQgdG8gYmFjay4KLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBp
eGVsQWNjdW11bGF0aW9uID0gTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhh
dmlvck5vcm1hbCwKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91
dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9u
ID0gTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgUGFpbnRMYXll
ckZsYWdzID0gMCk7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYsIEhpdFRlc3RSZXN1bHQmKTsKLSAgICB2b2lkIHBhaW50T3Zl
cmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdl
UmVjdCwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVs
bHB0cik7CisgICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVj
dCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOwogCi0gICAgdm9pZCBwYWludE5hbWVkRmxv
d1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCosIExheW91dFJlY3QsIExheW91dFBvaW50LCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhh
dmlvck5vcm1hbCwgUGFpbnRMYXllckZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludE5hbWVkRmxv
d1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCosIExheW91dFJlY3QsIExheW91dFBvaW50LCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhh
dmlvck5vcm1hbCwgUGFpbnRMYXllckZsYWdzID0gMCk7CiAKICAgICBzdHJ1Y3QgQ2xpcFJlY3Rz
Q29udGV4dCB7CiAgICAgICAgIENsaXBSZWN0c0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXIqIGlu
Um9vdExheWVyLCBDbGlwUmVjdHNUeXBlIGluQ2xpcFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJh
clNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92
ZXJsYXlTY3JvbGxiYXJTaXplLCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwIGluUmVzcGVjdE92
ZXJmbG93Q2xpcCA9IFJlc3BlY3RPdmVyZmxvd0NsaXApCkBAIC03MTcsOCArNzE3LDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNvbXB1dGVSZXBhaW50UmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygp
OwogICAgIHZvaWQgY2xlYXJSZXBhaW50UmVjdHMoKTsKIAotICAgIHZvaWQgY2xpcFRvUmVjdChj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IENsaXBSZWN0
JiwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMp
OwotICAgIHZvaWQgcmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVj
dCYgcGFpbnREaXJ0eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CisgICAgdm9pZCBjbGlwVG9SZWN0
KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQ2xpcFJl
Y3QmLCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1bGUgPSBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1
cyk7CisgICAgdm9pZCByZXN0b3JlQ2xpcChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRS
ZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xpcFJlY3QmKTsKIAogICAgIGJvb2wgc2hvdWxk
UmVwYWludEFmdGVyTGF5b3V0KCkgY29uc3Q7CiAKQEAgLTc2OCw0MiArNzY4LDQyIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7
CiAKLSAgICBib29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdyYXBoaWNzQ29udGV4
dCosIGJvb2wmIGRpZFF1YW50aXplRm9udHMpOworICAgIGJvb2wgc2V0dXBGb250U3VicGl4ZWxR
dWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0JiwgYm9vbCYgZGlkUXVhbnRpemVGb250cyk7CiAK
ICAgICBQYXRoIGNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9v
dCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBXaW5kUnVsZSYpIGNvbnN0OwogCi0g
ICAgYm9vbCBzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJv
b3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAg
IGJvb2wgc2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290
UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKIAotICAg
IGJvb2wgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiwgUGFpbnRMYXll
ckZsYWdzKSBjb25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJI
ZWxwZXI+IHNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQqLCBMYXllclBhaW50aW5nSW5mbyYs
IFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91
dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0
ZWQpOwotICAgIEdyYXBoaWNzQ29udGV4dCogYXBwbHlGaWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRl
cmVySGVscGVyKiwgR3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRp
bmdJbmZvJiwgTGF5ZXJGcmFnbWVudHMmKTsKKyAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50
aW5nKEdyYXBoaWNzQ29udGV4dCYsIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZpbHRlcnMoR3JhcGhp
Y3NDb250ZXh0JiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMs
IGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdyYXBoaWNzQ29udGV4
dCYgb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVyRnJhZ21lbnRzJik7
CiAKLSAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0lu
TmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBh
aW50TGF5ZXJGbGFncyk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9u
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZs
YWdzKTsKLSAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBM
YXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7Ci0gICAgdm9pZCBw
YWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBQYWludExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJM
YXllcio+KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWlu
dExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludEZp
eGVkTGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50c0Fu
ZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQ
YWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MsIGNvbnN0IExheW91dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpKTsK
KyAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExpc3QoVmVj
dG9yPFJlbmRlckxheWVyKj4qLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CiAKICAgICB2b2lkIGNvbGxlY3RGcmFnbWVudHMoTGF5
ZXJGcmFnbWVudHMmLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRS
ZWN0JiBkaXJ0eVJlY3QsCiAgICAgICAgIFBhZ2luYXRpb25JbmNsdXNpb25Nb2RlLAogICAgICAg
ICBDbGlwUmVjdHNUeXBlLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBpbk92ZXJsYXlT
Y3JvbGxiYXJTaXplUmVsZXZhbmN5LCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCogbGF5
ZXJCb3VuZGluZ0JveCA9IG51bGxwdHIsIFNob3VsZEFwcGx5Um9vdE9mZnNldFRvRnJhZ21lbnRz
ID0gSWdub3JlUm9vdE9mZnNldEZvckZyYWdtZW50cyk7CiAgICAgdm9pZCB1cGRhdGVQYWludGlu
Z0luZm9Gb3JGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYsIFBhaW50TGF5ZXJGbGFncywgYm9vbCBzaG91bGRQYWludENvbnRlbnQsIGNvbnN0IExheW91
dFNpemUmIG9mZnNldEZyb21Sb290KTsKLSAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIEdyYXBoaWNzQ29u
dGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAorICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5k
Rm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgR3Jh
cGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgICAgIGNvbnN0IExh
eW91dFJlY3QmIHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhhdmVUcmFuc3BhcmVu
Y3ksIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0
KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGlj
c0NvbnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50Rm9yZWdy
b3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYs
IEdyYXBoaWNzQ29udGV4dCYgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25z
dCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNw
YXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9i
amVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsCiAgICAgICAgIGJvb2wgc2VsZWN0aW9uT25s
eSk7Ci0gICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQ
aGFzZSwgY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsK
LSAgICB2b2lkIHBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZy
YWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7Ci0g
ICAgdm9pZCBwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFp
bnRpbmdSb290Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJl
cik7Ci0gICAgdm9pZCBwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKKyAg
ICB2b2lkIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlLCBj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5k
ZXJlcik7CisgICAgdm9pZCBwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZv
aWQgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mKTsKKyAgICB2b2lk
IHBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jv
b3RGb3JSZW5kZXJlcik7CisgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAg
ICB2b2lkIHBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwogCiAgICAgUmVu
ZGVyTGF5ZXIqIHRyYW5zcGFyZW50UGFpbnRpbmdBbmNlc3RvcigpOwotICAgIHZvaWQgYmVnaW5U
cmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQgYmVnaW5UcmFuc3Bh
cmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBj
b25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RM
YXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIs
IGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCiAg
ICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mLCBib29sIGFwcGxpZWRUcmFuc2Zvcm0sCkBAIC05MzgsNyArOTM4LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVNjcm9sbENvcm5lclN0eWxlKCk7CiAgICAgdm9pZCB1cGRhdGVSZXNp
emVyU3R5bGUoKTsKIAotICAgIHZvaWQgZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KTsKKyAgICB2b2lk
IGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRS
ZWN0JiByZXNpemVyQ29ybmVyUmVjdCk7CiAKICAgICB2b2lkIHVwZGF0ZVBhZ2luYXRpb24oKTsK
IApAQCAtOTgyLDcgKzk4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IExheW91dFJlY3Qm
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLAogICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUqLCBkb3VibGUqIHpPZmZzZXRGb3JEZXNjZW5kYW50cywKICAgICAgICAgZG91Ymxl
KiB6T2Zmc2V0LCBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHVuZmxhdHRlbmVkVHJh
bnNmb3JtU3RhdGUsIGJvb2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwotICAgIHZvaWQgcGFpbnRG
bG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7
CisgICAgdm9pZCBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UGFpbnRMYXllckZsYWdzKTsKICAgICBib29sIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0
aW9uTGF5ZXIoQ2xpcFJlY3RzJikgY29uc3Q7CiAKICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCogY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDUwNjRjNGY4Y2Y4
NmVmM2U3MGEzZWU3N2RiMjJjMTI1NjZlYjQ3ZjkuLjM5MDQxYTc5OTVlOGQ2ZjZmMTllYTE3ZjY0
MTMzYzlmZWUzODExZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBH
cmFwaAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVy
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAg
Y29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIC8vIEluIHRoZSBjb29yZHMgb2Ygcm9vdExh
eWVyLgogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50
aW5nUGhhc2UgcGFpbnRpbmdQaGFzZSkKIHsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIsIEdyYXBoCiAgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVuY2xvc2lu
Z0ludFJlY3QoY29tcG9zaXRlZEJvdW5kc0luY2x1ZGluZ01hcmdpbigpKSk7CiAKICAgICAgICAg
Ly8gV2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBmb3IgaGl0IHRlc3RpbmcsIGJlY2F1
c2UgYm90aCBtZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNoZSBjbGlwUmVjdHMuCi0gICAgICAg
IHBhaW50SW50b0xheWVyKGdyYXBoaWNzTGF5ZXIsICZjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50
QmVoYXZpb3JOb3JtYWwsIHBhaW50aW5nUGhhc2UpOworICAgICAgICBwYWludEludG9MYXllcihn
cmFwaGljc0xheWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3JOb3JtYWwsIHBh
aW50aW5nUGhhc2UpOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFp
bnQoJnJlbmRlcmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVy
ID09IGxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CkBAIC0yMzU0LDggKzIzNTQsOCBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xh
eWVyKiBncmFwaGljc0xheWVyLCBHcmFwaAogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Ny
b2xsQ29ybmVyQW5kUmVzaXplci54KCksIC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnkoKSk7CiAg
ICAgICAgIExheW91dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gTGF5b3V0UmVjdChjbGlwKTsKICAg
ICAgICAgdHJhbnNmb3JtZWRDbGlwLm1vdmVCeShzY3JvbGxDb3JuZXJBbmRSZXNpemVyLmxvY2F0
aW9uKCkpOwotICAgICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0
LCBJbnRQb2ludCgpLCBzbmFwcGVkSW50UmVjdCh0cmFuc2Zvcm1lZENsaXApKTsKLSAgICAgICAg
bV9vd25pbmdMYXllci5wYWludFJlc2l6ZXIoJmNvbnRleHQsIEludFBvaW50KCksIHRyYW5zZm9y
bWVkQ2xpcCk7CisgICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4
dCwgSW50UG9pbnQoKSwgc25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAgICAg
IG1fb3duaW5nTGF5ZXIucGFpbnRSZXNpemVyKGNvbnRleHQsIEludFBvaW50KCksIHRyYW5zZm9y
bWVkQ2xpcCk7CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIH0KICNpZm5kZWYgTkRF
QlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5k
ZXggMjRlYjJiYmRiYjE0MjE1ZjMyNDBlOTdmNTNlMDVkZTllYjQ4NjQ5MS4uZDY2ZmI4MjE1NDgx
YjU5NWVlY2ExOTMzYjJiZWJkZjM0NTZiMDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaApAQCAtMzI2LDcgKzMyNiw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBoYXNUaWxlZEJhY2tpbmdGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiAo
bV9jaGlsZENvbnRhaW5tZW50TGF5ZXIgJiYgbV91c2luZ1RpbGVkQ2FjaGVMYXllcik7IH0KICAg
ICBHcmFwaGljc0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX3VzaW5nVGlsZWRDYWNoZUxheWVyID8gbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCkg
OiBudWxscHRyOyB9CiAKLSAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFp
bnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOworICAgIHZvaWQgcGFpbnRJ
bnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIHBhaW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLCBHcmFwaGljc0xheWVyUGFpbnRp
bmdQaGFzZSk7CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHVwZGF0ZUdlb21ldHJ5Lgog
ICAgIHZvaWQgYWRqdXN0QW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kc0ZvckZsb3dUaHJlYWQoTGF5
b3V0UmVjdCYgYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcywgY29uc3QgUmVuZGVyTGF5ZXIqIGNv
bXBvc2l0aW5nQW5jZXN0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4OTU1NmUzMWMzYTEzZmE1NzQzNGQ3
OGM2ZTJmMThjYTIzNGQ1ZjhkLi42ZjQ1ZTk2Nzg1ZWZjM2JmMDE5NjM2NmNmZDBhMmY3NmZmYzBm
ZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcApAQCAtMjg2Niw3ICsyODY2LDcgQEAgdm9pZCBwYWludFNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWMK
ICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsYmFyUmVjdC54KCksIC1zY3JvbGxiYXJSZWN0
LnkoKSk7CiAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBjbGlwOwogICAgIHRyYW5zZm9y
bWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsYmFyUmVjdC5sb2NhdGlvbigpKTsKLSAgICBzY3JvbGxiYXIt
PnBhaW50KCZjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgIHNjcm9sbGJhci0+cGFpbnQo
Y29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIApA
QCAtMjg4Myw3ICsyODgzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29u
dGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3IKICAgICAgICAgY29u
dGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lci54KCksIC1zY3JvbGxDb3JuZXIueSgpKTsKICAg
ICAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdy
YWxQb3NpdGlvbmVkSXRlbXM7CiAgICAgICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xs
Q29ybmVyLmxvY2F0aW9uKCkpOwotICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGFp
bnRTY3JvbGxDb3JuZXIoJmNvbnRleHQsIHRyYW5zZm9ybWVkQ2xpcCk7CisgICAgICAgIG1fcmVu
ZGVyVmlldy5mcmFtZVZpZXcoKS5wYWludFNjcm9sbENvcm5lcihjb250ZXh0LCB0cmFuc2Zvcm1l
ZENsaXApOwogICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNDBmNWUzMmNmNTAyY2JiZGUw
YmY1M2M0MGMzM2EyNDFmNDY1YTM3Ny4uZTNjYjc5NmJmZjQ3MzZmNDdkYzZhMTE2NmU4ZTQ0MmVi
MGY0NjA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApA
QCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxiYXIoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgICAgICAgICBt
X3ZCYXItPndpZHRoKCksCiAgICAgICAgICAgICBoZWlnaHQoKSAtIChib3JkZXJUb3AoKSArIGJv
cmRlckJvdHRvbSgpKSk7CiAgICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KHNjcm9sbFJlY3Qp
OwotICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVkSW50UmVj
dChwYWludEluZm8ucmVjdCkpOworICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250
ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC0z
OTcsNyArMzk3LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICB9CiAKICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwotICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGNvbG9yU3BhY2UpOwogCiAg
ICAgVGV4dFJ1biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9u
LCBpdGVtU3R5bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRp
KCkpLCB0cnVlLCBUZXh0UnVuOjpOb1JvdW5kaW5nKTsKICAgICBGb250Q2FzY2FkZSBpdGVtRm9u
dCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFJlbmRl
ckxpc3RCb3g6OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JgogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5kcmF3QmlkaVRleHQoaXRlbUZvbnQsIHRleHRSdW4sIHJvdW5kZWRJ
bnRQb2ludChyLmxvY2F0aW9uKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdCaWRp
VGV4dChpdGVtRm9udCwgdGV4dFJ1biwgcm91bmRlZEludFBvaW50KHIubG9jYXRpb24oKSkpOwog
fQogCiB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgaW50IGxpc3RJbmRleCkK
QEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91
bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwogICAgICAgICBMYXlv
dXRSZWN0IGl0ZW1SZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdElu
ZGV4KTsKICAgICAgICAgaXRlbVJlY3QuaW50ZXJzZWN0KGNvbnRyb2xDbGlwUmVjdChwYWludE9m
ZnNldCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJl
Y3QoaXRlbVJlY3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBj
b2xvclNwYWNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcAppbmRleCBhODU1YTQ4ZTUyODgwOGIyNGNmOTVjODE3MjBlMGM5OTFj
NGI1ODYwLi44YmEwZDZkMzIxNGY0ZGM1NmFjYjAxNDg2NDYxODY0MDRmN2U1YWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk0LDE0
ICsxMTk0LDE0IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgRmxvYXRSZWN0IG1hcmtl
ciA9IGdldFJlbGF0aXZlTWFya2VyUmVjdCgpOwogICAgIG1hcmtlci5tb3ZlQnkoYm94T3JpZ2lu
KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAg
ICBpZiAoaXNJbWFnZSgpKSB7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlLT5p
bWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1h
cmtlcik7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1h
cmtlci5zaXplKCkpLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKICAgICAg
ICAgaWYgKHNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAg
TGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBz
ZWxSZWN0Lm1vdmVCeShib3hPcmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
c25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJl
Y3Qoc25hcHBlZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTIwOSwyNiArMTIwOSwyNiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZQogICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAg
TGF5b3V0UmVjdCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbFJl
Y3QubW92ZUJ5KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJ
bnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZElu
dFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgY29udGV4
dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICBjb250
ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
VGhpY2tuZXNzKDEuMGYpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgRUxpc3RTdHls
ZVR5cGUgdHlwZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkg
ewogICAgICAgICBjYXNlIERpc2M6Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxsaXBzZSht
YXJrZXIpOworICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKKyAgICAgICAgICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgY29udGV4dC0+ZHJh
d1JlY3QobWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1JlY3QobWFya2VyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMxNywyMiArMTMxNywyMiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZQogICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwog
ICAgIFRleHRSdW4gdGV4dFJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMs
IGZvbnQsIG1fdGV4dCwgc3R5bGUoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAgIGlmICghc3R5bGUoKS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgIG1hcmtlci5tb3ZlQnkoLWJveE9yaWdpbik7
CiAgICAgICAgIG1hcmtlciA9IG1hcmtlci50cmFuc3Bvc2VkUmVjdCgpOwogICAgICAgICBtYXJr
ZXIubW92ZUJ5KEZsb2F0UG9pbnQoYm94LngoKSwgYm94LnkoKSAtIGxvZ2ljYWxIZWlnaHQoKSkp
OwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRl
KG1hcmtlci54KCksIG1hcmtlci5tYXhZKCkpOwotICAgICAgICBjb250ZXh0LT5yb3RhdGUoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGRlZzJyYWQoOTAuKSkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xh
dGUoLW1hcmtlci54KCksIC1tYXJrZXIubWF4WSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xh
dGUobWFya2VyLngoKSwgbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQucm90YXRlKHN0
YXRpY19jYXN0PGZsb2F0PihkZWcycmFkKDkwLikpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoLW1hcmtlci54KCksIC1tYXJrZXIubWF4WSgpKTsKICAgICB9CiAKICAgICBGbG9hdFBvaW50
IHRleHRPcmlnaW4gPSBGbG9hdFBvaW50KG1hcmtlci54KCksIG1hcmtlci55KCkgKyBzdHlsZSgp
LmZvbnRNZXRyaWNzKCkuYXNjZW50KCkpOwogICAgIHRleHRPcmlnaW4gPSByb3VuZFBvaW50VG9E
ZXZpY2VQaXhlbHMoTGF5b3V0UG9pbnQodGV4dE9yaWdpbiksIGRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSwgc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwogCiAgICAgaWYg
KHR5cGUgPT0gQXN0ZXJpc2tzIHx8IHR5cGUgPT0gRm9vdG5vdGVzKQotICAgICAgICBjb250ZXh0
LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAgY29udGV4dC5k
cmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAg
Y29uc3QgVUNoYXIgc3VmZml4ID0gbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZh
bHVlKCkpOwogCkBAIC0xMzYzLDcgKzEzNjMsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQog
ICAgICAgICB9CiAgICAgICAgIHRleHRSdW4uc2V0VGV4dChTdHJpbmdWaWV3KHRvRHJhdykpOwog
Ci0gICAgICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwor
ICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJv
bHMuY3BwCmluZGV4IDIxNzEzODhlYWZlOGE4YzIzYmQzMTU5NmFjMGNlZTk0ODI4YjhiMWEuLmI1
MmE2YzliNGNkZGI2OTAxMzBjZmI5MWJlN2Y4ZGYyYjY0ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKQEAgLTkxLDkgKzkxLDkg
QEAgc3RhdGljIEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4
dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGMKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsK
ICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9v
bUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVp
Z2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRl
KHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21l
ZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29t
ZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0
LnkoKSk7CiAgICAgfQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CiB9CkBAIC0xMjgsNzYgKzEy
OCw3NiBAQCB2b2lkIFJlbmRlck1lZGlhQ29udHJvbHM6OmFkanVzdE1lZGlhU2xpZGVyVGh1bWJT
aXplKFJlbmRlclN0eWxlJiBzdHlsZSkKIAogYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWlu
dE1lZGlhQ29udHJvbHNQYXJ0KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIHBhcnQsIGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHIpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBh
aW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBNZWRp
YUVudGVyRnVsbHNjcmVlbkJ1dHRvbjoKICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0
b246CiAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogYnRu
ID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqPihvLm5v
ZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgZW50ZXJCdXR0b24gPSBidG4tPmRpc3BsYXlUeXBl
KCkgPT0gTWVkaWFFbnRlckZ1bGxzY3JlZW5CdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChlbnRlckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tN
ZWRpYVVJUGFydEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01l
ZGlhVUlQYXJ0KGVudGVyQnV0dG9uID8gV0tNZWRpYVVJUGFydEZ1bGxzY3JlZW5CdXR0b24gOiBX
S01lZGlhVUlQYXJ0RXhpdEZ1bGxzY3JlZW5CdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uOgogICAgIGNh
c2UgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b246CiAgICAgICAgIGlmIChNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1l
ZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCo+KG8ubm9kZSgpKSkg
ewogICAgICAgICAgICAgYm9vbCBjYXB0aW9uc1Zpc2libGUgPSBidG4tPmRpc3BsYXlUeXBlKCkg
PT0gTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChjYXB0aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0SGlkZUNsb3NlZENhcHRpb25z
QnV0dG9uIDogV0tNZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAg
ICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChjYXB0aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0
SGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIDogV0tNZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9u
c0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJt
aW5lU3RhdGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFN
dXRlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFVbk11dGVCdXR0b246CiAgICAgICAgIGlmIChNZWRp
YUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9s
TXV0ZUJ1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgYXVkaW9F
bmFibGVkID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhTXV0ZUJ1dHRvbjsKLSAgICAgICAg
ICAgIHdrRHJhd01lZGlhVUlQYXJ0KGF1ZGlvRW5hYmxlZCA/IFdLTWVkaWFVSVBhcnRNdXRlQnV0
dG9uIDogV0tNZWRpYVVJUGFydFVuTXV0ZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdN
ZWRpYVVJUGFydChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdLTWVk
aWFVSVBhcnRVbk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhUGF1c2VCdXR0b246CiAgICAgY2FzZSBNZWRpYVBsYXlCdXR0b246CiAgICAg
ICAgIGlmIChNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAg
IGJvb2wgY2FuUGxheSA9IGJ0bi0+ZGlzcGxheVR5cGUoKSA9PSBNZWRpYVBsYXlCdXR0b247Ci0g
ICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChjYW5QbGF5ID8gV0tNZWRpYVVJUGFydFBsYXlC
dXR0b24gOiBXS01lZGlhVUlQYXJ0UGF1c2VCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoY2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDogV0tNZWRpYVVJ
UGFydFBhdXNlQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVJld2luZEJ1dHRvbjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJ
UGFydFJld2luZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRSZXdpbmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVJl
dHVyblRvUmVhbHRpbWVCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRTZWVrVG9SZWFsdGltZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRTZWVrVG9SZWFsdGltZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhU2Vla0JhY2tCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRTZWVrQmFja0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQ
YXJ0KFdLTWVkaWFVSVBhcnRTZWVrQmFja0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhU2Vla0ZvcndhcmRCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRTZWVrRm9yd2FyZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlh
VUlQYXJ0KFdLTWVkaWFVSVBhcnRTZWVrRm9yd2FyZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lZGlhU2xpZGVyOiB7CiAgICAgICAgIGlmIChIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQobykpIHsKICAgICAgICAgICAgIEZs
b2F0UmVjdCB1bnpvb21lZFJlY3QgPSBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29u
dGV4dChvLCBwYWludEluZm8sIHIpOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFj
ayhwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVk
aWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1l
ZGlhRWxlbWVudC0+Y3VycmVudFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRl
cm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVNsaWRlclRyYWNrKHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVkaWFFbGVt
ZW50LT5wZXJjZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1lZGlhRWxl
bWVudC0+Y3VycmVudFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTWVk
aWFTbGlkZXJUaHVtYjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRp
bWVsaW5lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0VGltZWxpbmVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChX
S01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyQ29udGFpbmVyLCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVk
aWFVSVBhcnQoV0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyOgotICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVk
aWFVSVBhcnQoV0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyVGh1bWI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQ
YXJ0KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01l
ZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwor
ICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVsbFNjcmVlblZvbHVtZVNs
aWRlciwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5l
U3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVt
ZVNsaWRlclRodW1iOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVs
bFNjcmVlblZvbHVtZVNsaWRlclRodW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
V0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRl
eHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE1lZGlhVGltZWxpbmVDb250YWluZXI6Ci0gICAgICAgIHdrRHJhd01l
ZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVk
aWFVSVBhcnQoV0tNZWRpYVVJUGFydEJhY2tncm91bmQsIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheToKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcAppbmRleCA3ZTFmZDViNGM0ZjY3ZjgzNjE3NmEyNWQxMWQ0OTk5YzdlZjc4YjJiLi41
OWM2M2MwYTBiYzJmNWQxMmJmMWMyNGEyNWM3NjQ4ZjY1OGQyNTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTU3MCw3ICs1
NzAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpmbG93VGhyZWFkUG9ydGlv
bk92ZXJmbG93UmVjdChjb25zdCBMYXlvdXRSZWN0JgogCiB2b2lkIFJlbmRlck11bHRpQ29sdW1u
U2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQq
IGZsb3dUaHJlYWQgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKQEAgLTU4OCw3ICs1ODgsNyBA
QCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChjb2xDb3VudCA8PSAxKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhc0xpbmVzKHBh
aW50SW5mby5jb250ZXh0KTsKKyAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhc0xp
bmVzKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgaWYgKGZsb3dUaHJlYWQtPnByb2dyZXNz
aW9uSXNJbmxpbmUoKSkgewogICAgICAgICBib29sIGxlZnRUb1JpZ2h0ID0gc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgXiBmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQo
KTsKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENv
bHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICAg
ICAgICAgIExheW91dFVuaXQgcnVsZVRvcCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBw
YWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IHBhaW50T2Zmc2V0
LnkoKSArIHJ1bGVMb2dpY2FsTGVmdCAtIHJ1bGVUaGlja25lc3MgLyAyICsgcnVsZUFkZDsKICAg
ICAgICAgICAgICAgICBMYXlvdXRVbml0IHJ1bGVCb3R0b20gPSBpc0hvcml6b250YWxXcml0aW5n
TW9kZSgpID8gcnVsZVRvcCArIGNvbnRlbnRIZWlnaHQoKSA6IHJ1bGVUb3AgKyBydWxlVGhpY2tu
ZXNzOwogICAgICAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3QgPSBzbmFw
cGVkSW50UmVjdChydWxlTGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0IC0gcnVsZUxlZnQsIHJ1bGVC
b3R0b20gLSBydWxlVG9wKTsKLSAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKnBh
aW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9y
LCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKHBhaW50SW5mby5jb250ZXh0KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LCBib3hT
aWRlLCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0ID0gY3VyckxvZ2lj
YWxMZWZ0T2Zmc2V0OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5T
ZXQ6OnBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjb2xDb3VudDsgaSsrKSB7CiAgICAg
ICAgICAgICBydWxlUmVjdC5tb3ZlKHN0ZXApOwogICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNu
YXBwZWRSdWxlUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJ1bGVSZWN0KTsKLSAgICAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZSgqcGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZFJ1bGVSZWN0
LCBib3hTaWRlLCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICAg
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBw
ZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlh
cyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDk3OWU5Y2ZmNzNjMmJlZDlkMDk3MzZiOGJiYzZhMTc3MGZkMzI0N2Qu
LmM4MDUxZDkxYTNmYTEyYWVhYmFhYWU2YmFjNTY0YTllZmU2NjIwNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE8KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSBkb3duY2Fz
dDxFbGVtZW50Pigqbm9kZSkuZ2V0QXR0cmlidXRlKGhyZWZBdHRyKTsKICAgICBpZiAoaHJlZi5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRVUkxG
b3JSZWN0KG5vZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0
KHVybFJlY3QpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFVSTEZvclJlY3Qobm9kZS0+
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChocmVmKSwgc25hcHBlZEludFJlY3QodXJsUmVjdCkpOwog
fQogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZXBsYWNlZC5jcHAKaW5kZXggOGM5OGJiYTg1NDYzNjBmYTAyZWQ1Y2I1YWE3N2UyNTRhMGFlZjI5
ZC4uZmQyMDUwNGVjM2Q1Y2NlODFhYjYxNGFhNjJkNTViZDcwNzE0MzQ0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0xNzgsMTAgKzE3OCwxMCBA
QCB2b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgY29tcGxldGVseUNsaXBwZWRP
dXQgPSB0cnVlOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlm
IHdlIGhhdmUgYSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3Jl
Z3JvdW5kIGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCi0gICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7
CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHJvdW5kZWRJbm5lclJlY3QgPSBGbG9hdFJv
dW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwKICAg
ICAgICAgICAgICAgICBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgp
ICsgYm9yZGVyQm90dG9tKCksIHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdS
aWdodCgpICsgYm9yZGVyUmlnaHQoKSwgdHJ1ZSwgdHJ1ZSkpOwotICAgICAgICAgICAgY2xpcFJv
dW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwgcm91bmRlZElubmVy
UmVjdCk7CisgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8uY29udGV4
dCgpLCBwYWludFJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xODksNyArMTg5LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgcGFpbnRS
ZXBsYWNlZChwYWludEluZm8sIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogCiAgICAgICAgIGlmIChz
dHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwog
ICAgIH0KICAgICAgICAgCiAgICAgLy8gVGhlIHNlbGVjdGlvbiB0aW50IG5ldmVyIGdldHMgY2xp
cHBlZCBieSBib3JkZXItcmFkaXVzIHJvdW5kaW5nLCBzaW5jZSB3ZSB3YW50IGl0IHRvIHJ1biBy
aWdodCB1cCB0byB0aGUgZWRnZXMgb2YKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbmRlclJl
cGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogICAgIGlmIChkcmF3U2VsZWN0aW9uVGludCkgewogICAgICAgICBMYXlvdXRS
ZWN0IHNlbGVjdGlvblBhaW50aW5nUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAg
ICBzZWxlY3Rpb25QYWludGluZ1JlY3QubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9u
UGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50
UmVjdChzZWxlY3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxpY2EuY3BwCmluZGV4IDM3NzIwZmUzODljMTkzNmM4ZGUyNjVkYzZlYzRh
MWZiY2QyMDczM2YuLjYxZDBhMTdiMzhhMTk4ZDJmY2RmMGUwNmRhYjQyN2UyNjIxMmQ5ZTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKQEAgLTc2LDcgKzc2
LDcgQEAgdm9pZCBSZW5kZXJSZXBsaWNhOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBSZW5kZXJMYXllciogcm9vdFBh
aW50aW5nTGF5ZXIgPSBsYXllcigpLT50cmFuc2Zvcm0oKSA/IGxheWVyKCktPnBhcmVudCgpIDog
bGF5ZXIoKS0+ZW5jbG9zaW5nVHJhbnNmb3JtZWRBbmNlc3RvcigpOwogICAgICAgICBSZW5kZXJM
YXllcjo6TGF5ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKHJvb3RQYWludGluZ0xheWVyLCBw
YWludEluZm8ucmVjdCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgTGF5b3V0U2l6ZSgpLCAwKTsKICAg
ICAgICAgUmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFncyBmbGFncyA9IFJlbmRlckxheWVyOjpQ
YWludExheWVySGF2ZVRyYW5zcGFyZW5jeSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQXBwbGll
ZFRyYW5zZm9ybSB8IFJlbmRlckxheWVyOjpQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzIHwg
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb247Ci0gICAgICAgIGxheWVy
KCktPnBhcmVudCgpLT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0LCBwYWludGluZ0luZm8s
IGZsYWdzKTsKKyAgICAgICAgbGF5ZXIoKS0+cGFyZW50KCktPnBhaW50TGF5ZXIocGFpbnRJbmZv
LmNvbnRleHQoKSwgcGFpbnRpbmdJbmZvLCBmbGFncyk7CiAgICAgfSBlbHNlIGlmIChwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8s
IGFkanVzdGVkUGFpbnRPZmZzZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmNwcAppbmRleCBjMzY0MTBkNTcyMDUyMmUxZGI5ZjI0ZjgwMDg5MzYwODA1
NTk5ODQ3Li4yNzdkYWM4ZGZhNGNjM2EzM2VlYWRkMjdlMWYxZTgzNjJiM2M2MDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAyLDkgKzEw
Miw5IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNj
cm9sbGJhclBhcnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCit2b2lkIFJlbmRl
clNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KQogewotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygp
KSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1
cGRhdGVTY3JvbGxiYXJQYXJ0cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUyLDcg
KzI1Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KFNjcm9s
bGJhclBhcnQgcGFydFR5cGUpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFp
bnRQYXJ0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJQYXJ0IHBh
cnRUeXBlLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50
UGFydChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0
VHlwZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBw
YXJ0UmVuZGVyZXIgPSBtX3BhcnRzLmdldChwYXJ0VHlwZSk7CiAgICAgaWYgKCFwYXJ0UmVuZGVy
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZjZj
ODVjOTc3YzBiNGJmZDNlZmI2OThhZGJiYWNkZDAwMDc5N2Q0Ni4uZjI3ZWMwM2JiYjA5MDc4MGQ0
MmUzNDdiNmMyM2FhNGQ2ZDhjMDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3gq
IG93bmluZ1JlbmRlcmVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50UGFydChHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJQYXJ0LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFBh
cnQoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyUGFydCwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgSW50UmVjdCBidXR0b25SZWN0KFNjcm9sbGJhclBhcnQpOwogICAgIEludFJlY3QgdHJhY2tS
ZWN0KGludCBzdGFydExlbmd0aCwgaW50IGVuZExlbmd0aCk7CkBAIC02Nyw3ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNl
dEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAppbmRleCAxZDcxYTg5YjFjY2Q5
ODVkMjYzZmMyZTJhMGU1Mzg3Nzg5MjUzOTAzLi4wY2JlYzBmYzkzNGYxNmVkZWYxNDUwZDg1MDQ3
NDA1MmE3ZGYwOTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwCkBAIC0xNTUsMjMgKzE1NSwyMyBAQCB2b2lkIFJlbmRlclNjcm9sbGJh
clBhcnQ6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3Qq
IHJlYwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclBh
cnQ6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAg
ICAvLyBNYWtlIHN1cmUgb3VyIGRpbWVuc2lvbnMgbWF0Y2ggdGhlIHJlY3QuCiAgICAgc2V0TG9j
YXRpb24ocmVjdC5sb2NhdGlvbigpIC0gdG9MYXlvdXRTaXplKHBhaW50T2Zmc2V0KSk7CiAgICAg
c2V0V2lkdGgocmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAK
LSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIXN0eWxlKCku
b3BhY2l0eSgpKQorICAgIGlmIChncmFwaGljc0NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFzdHlsZSgpLm9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3Qg
dXNlIFJlbmRlckxheWVycyBmb3Igc2Nyb2xsYmFyIHBhcnRzLCBzbyB3ZSBuZWVkIHRvIGhhbmRs
ZSBvcGFjaXR5IGhlcmUuCiAgICAgLy8gT3BhY2l0eSBmb3IgU2Nyb2xsYmFyQkdQYXJ0IGlzIGhh
bmRsZWQgYnkgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OndpbGxQYWludFNjcm9sbGJhcigpLgogICAg
IGJvb2wgbmVlZHNUcmFuc3BhcmVuY3lMYXllciA9IG1fcGFydCAhPSBTY3JvbGxiYXJCR1BhcnQg
JiYgc3R5bGUoKS5vcGFjaXR5KCkgPCAxOwogICAgIGlmIChuZWVkc1RyYW5zcGFyZW5jeUxheWVy
KSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXAocmVjdCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihzdHlsZSgpLm9wYWNpdHkoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5z
YXZlKCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOworICAgICAgICBncmFw
aGljc0NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdHlsZSgpLm9wYWNpdHkoKSk7CiAg
ICAgfQogICAgIAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCkBAIC0xODcsOCArMTg3LDggQEAg
dm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdAogICAgIHBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQp
OwogCiAgICAgaWYgKG5lZWRzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwotICAgICAgICBncmFwaGljc0NvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAppbmRleCA3YTcx
ZmE3MzlmOGQ4NTExYzQ5NGEwMDRhNDM5MzM3MmYxMzQzMWNhLi44NjU5OTE0MmE5ZmNiYWUyYzU4
ZTg1YjBkMGRiMTgyN2RhZDlhZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogICAgIAotICAgIHZvaWQgcGFpbnRJbnRvUmVj
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3Qm
KTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKICAgICAvLyBTY3JvbGxiYXIgcGFydHMgbmVl
ZHMgdG8gYmUgcmVuZGVyZWQgYXQgZGV2aWNlIHBpeGVsIGJvdW5kYXJpZXMuCiAgICAgdmlydHVh
bCBMYXlvdXRVbml0IG1hcmdpblRvcCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdl
clZhbHVlKG1fbWFyZ2luQm94LnRvcCgpKSk7IHJldHVybiBtX21hcmdpbkJveC50b3AoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAK
aW5kZXggMDlkOTY1MjE4ZTg3NWVkNjc0YTRiY2EzNzJmOGI5YjVlYTI4Mzc4YS4uZGI1Mjg4ZmRj
NWU1NTI2YTQzZjBhYmVmYjk3ZDk2Y2ZkNGQwODZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0xMjUsMzUgKzEyNSwzNSBA
QCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KLSAgICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxi
YXIuZnJhbWVSZWN0KCkpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFy
KS5wYWludFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXIuZnJhbWVSZWN0
KCkpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFy
KS5wYWludFBhcnQoJmNvbnRleHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsKKyAgICBkb3duY2FzdDxS
ZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFRyYWNrQkdQYXJ0
LCByZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJT
Y3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZjb250ZXh0LCBwYXJ0LCByZWN0KTsKKyAg
ICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQs
IHBhcnQsIHJlY3QpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVy
U2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7Cisg
ICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0
LCBwYXJ0LCByZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFy
KS5wYWludFBhcnQoJmNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVu
ZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJl
Y3QpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhl
bWUuaAppbmRleCA0N2YwZjgwMzNlYjA5NGMwNGQxOTQzYWVmNjc4NDFlZjk2NDE4MjA4Li5mN2U0
MTlkMDVhMWI0MzE0NzdjZDU1NTJmOGM2ZGMzMGRjOWU5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxD
b3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5l
clJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3Jv
bGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIm
IHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xs
YmFyLCBldmVudCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDQ1NWZjZTg5MjlkMDVmMmVhMTAxM2Y3
M2U3ZmUzZWJiN2Q5NDk5OGUuLmJkMWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
CiAgICAgaWYgKCFjV2lkdGggfHwgIWNIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRTaXpl
IGNvbnRlbnRTaXplKGNXaWR0aCwgY0hlaWdodCk7CiAgICAgTGF5b3V0UG9pbnQgY29udGVudExv
Y2F0aW9uID0gbG9jYXRpb24oKSArIHBhaW50T2Zmc2V0OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZv
aWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikK
ICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxl
KCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShp
bWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1
YWxpdHlTY2FsaW5nKSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlk
ZUN1cnNvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmlu
ZGV4IGM3MGE0ZDEyMDA3YTg0MjdjMjljMjU0NjI1N2QzNWEzMDU3MzIwYTYuLjQ4NTU5NWExYjgw
NjRhNjMyZjlmODUzNDRkOWNlMWY4ZDYzOTZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlLmNwcApAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwCiAgICAgTGF5b3V0UmVjdCByZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogICAgIHN1YnRy
YWN0Q2FwdGlvblJlY3QocmVjdCk7CiAKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZv
LmNvbnRleHQpOworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9
IGRldGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsK
ICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChyZWN0LmxvY2F0
aW9uKCksIGJsZWVkQXZvaWRhbmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZv
LCByZWN0LCBzdHlsZSgpLCBOb3JtYWwpOwogICAgIHBhaW50QmFja2dyb3VuZChwYWludEluZm8s
IHJlY3QsIGJsZWVkQXZvaWRhbmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKaW5kZXggMTdlNWFjNDU0MGI0NzNiYWU2ZmE2ZjliNTc1MzZlNGM0MzRk
ODY1Ny4uMTE1ZmZjNzk3NDg2Yjc5YTlmY2M0OGM4YjdjMDg2OWM2YzdjZDhmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyMDEsOCArMTIw
MSw4IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmRlcnMoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYgKHBhaW50UmVjdC5tYXhZKCkg
KyB0YWJsZSgpLT5vdXRlckJvcmRlckJvdHRvbSgpIDw9IGxvY2FsUmVwYWludFJlY3QueSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OwotICAgIGlmICghdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVl
KCkgfHwgZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmICgh
dGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkgfHwgZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlRm9yQ2VsbEZsb3cgPSB0aGlzLT5zdHlsZUZvckNlbGxGbG93KCk7CkBAIC0xMjQ0LDcgKzEy
NDQsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIAogICAgIGZvciAoQ29sbGFwc2Vk
Qm9yZGVyKiBib3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKTsgYm9yZGVyOyBib3JkZXIgPSBi
b3JkZXJzLm5leHRCb3JkZXIoKSkgewogICAgICAgICBpZiAoYm9yZGVyLT5ib3JkZXJWYWx1ZS5p
c1NhbWVJZ25vcmluZ0NvbG9yKCp0YWJsZSgpLT5jdXJyZW50Qm9yZGVyVmFsdWUoKSkpCi0gICAg
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoYm9yZGVyLT54MSwgYm9yZGVyLT55MSksIEZsb2F0UG9pbnQoYm9yZGVyLT54Miwg
Ym9yZGVyLT55MikpLCBib3JkZXItPnNpZGUsCisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludChib3JkZXItPngxLCBib3Jk
ZXItPnkxKSwgRmxvYXRQb2ludChib3JkZXItPngyLCBib3JkZXItPnkyKSksIGJvcmRlci0+c2lk
ZSwKICAgICAgICAgICAgICAgICBib3JkZXItPmJvcmRlclZhbHVlLmNvbG9yKCksIGJvcmRlci0+
c3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgfQogfQpAQCAtMTI3NSwxMSArMTI3NSwxMSBA
QCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheQogICAgICAgICAvLyBXZSBoYXZlIHRvIGNsaXAgaGVy
ZSBiZWNhdXNlIHRoZSBiYWNrZ3JvdW5kIHdvdWxkIHBhaW50CiAgICAgICAgIC8vIG9uIHRvcCBv
ZiB0aGUgYm9yZGVycyBvdGhlcndpc2UuICBUaGlzIG9ubHkgbWF0dGVycyBmb3IgY2VsbHMgYW5k
IHJvd3MuCiAgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGJhY2tncm91bmRPYmplY3QtPmhhc0xh
eWVyKCkgJiYgKGJhY2tncm91bmRPYmplY3QgPT0gdGhpcyB8fCBiYWNrZ3JvdW5kT2JqZWN0ID09
IHBhcmVudCgpKSAmJiB0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCk7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIHNob3Vs
ZENsaXApOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSwgc2hvdWxkQ2xpcCk7CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7
CiAgICAgICAgICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgYm9yZGVyTGVmdCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAog
ICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpLCBo
ZWlnaHQoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkpOwotICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAgfQogICAgICAgICBwYWludEZpbGxMYXll
cnMocGFpbnRJbmZvLCBjLCBiZ0xheWVyLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQs
IHNuYXBwZWRJbnRSZWN0KGZyYW1lUmVjdCgpKS5zaXplKCkpLCBCYWNrZ3JvdW5kQmxlZWROb25l
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGM5MTBh
YjZmNmFiMDY5YmE0YjYzMjUyMjRmZWEwMDEyYzQ2ZjdlNTMuLjNlOWQ4YTVmYjFjYWJjOTEwZDI4
NGRhMTVmM2RkNzBlNGM2YWM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFJlbmRlclRh
YmxlU2VjdGlvbjo6cGFpbnRSb3dHcm91cEJvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgYm9vbCBhbgogICAgIHJlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICBpZiAo
cmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3TGluZUZvckJveFNpZGUo
KnBhaW50SW5mby5jb250ZXh0LCByZWN0LCBzaWRlLCBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihib3JkZXJDb2xvciksIGJvcmRlclN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOworICAgIGRy
YXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCByZWN0LCBzaWRlLCBzdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3JkZXJDb2xvciksIGJvcmRlclN0eWxlLCAwLCAwLCBh
bnRpYWxpYXMpOwogfQogCiBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpvZmZzZXRMZWZ0Rm9yUm93
R3JvdXBCb3JkZXIoUmVuZGVyVGFibGVDZWxsKiBjZWxsLCBjb25zdCBMYXlvdXRSZWN0JiByb3dH
cm91cFJlY3QsIHVuc2lnbmVkIHJvdykKQEAgLTExNjksMTEgKzExNjksMTEgQEAgdm9pZCBSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmYKIHsKICAgICBpZiAodGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkt
PnByZWNlZGVuY2UoKSA+IEJST1dHUk9VUCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChwYWlu
dEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29u
dGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICBib29sIGFudGlhbGlhcyA9
IHNob3VsZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBib29sIGFudGlh
bGlhcyA9IHNob3VsZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIExh
eW91dFJlY3Qgcm93R3JvdXBSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsK
ICAgICByb3dHcm91cFJlY3QubW92ZUJ5KC1MYXlvdXRQb2ludChvdXRlckJvcmRlckxlZnQoJnN0
eWxlKSwgKGJvcmRlclNpZGUgPT0gQlNSaWdodCkgPyAwIDogb3V0ZXJCb3JkZXJUb3AoJnN0eWxl
KSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3YTJi
OTc2Y2Q2OTkyYmU1MmI2MDBmNjBiZGI0MDZmNWZlNjRjMTBjLi5kY2FjNGZhNzMxNmVjMzViMGU2
MWJjMjAwZDgyMjFlYTYwMjNlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5jcHAKQEAgLTI2NywxMiArMjY3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNv
bnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAg
ICAgLy8gSWYgcGFpbnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29u
dHJvbCB0aW50cywgdGhlbiBqdXN0IGJhaWwuCiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0aW5nIGNv
bnRyb2wgdGludHMsIGp1c3Qgc2NoZWR1bGUgYSByZXBhaW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0
cyB0aW50aW5nCiAgICAgLy8gZm9yIHRoYXQgY29udHJvbC4KLSAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRl
eHQoKS51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGlmIChjb250cm9sU3VwcG9y
dHNUaW50cyhib3gpKQogICAgICAgICAgICAgYm94LnJlcGFpbnQoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBib3guc3R5bGUo
KS5hcHBlYXJhbmNlKCk7CkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFp
bnQoY29uc3QgUmVuZGVyQm94JiBib3gsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNv
bnMKICAgICBjYXNlIEJ1dHRvblBhcnQ6CiAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0Ogog
ICAgICAgICB1cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoYm94LCBjb250cm9sU3RhdGVz
KTsKLSAgICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgY29uc3RfY2Fz
dDxHcmFwaGljc0NvbnRleHQqPihwYWludEluZm8uY29udGV4dCksIGRldmljZVBpeGVsU25hcHBl
ZFJlY3QsIGJveC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCkuZnJhbWVWaWV3
KCksIGRldmljZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IpOworICAgICAgICBtX3RoZW1l
LT5wYWludChwYXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQ
aXhlbFNuYXBwZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygp
LmZyYW1lVmlldygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDExLDcg
KzQxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBD
b250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAKIGJvb2wgUmVuZGVyVGhlbWU6OnBh
aW50Qm9yZGVyT25seShjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShJ
T1MpCkBAIC00NjUsNyArNDY1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5
KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW4KIAogYm9vbCBS
ZW5kZXJUaGVtZTo6cGFpbnREZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYg
KHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5m
by5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBJbnRSZWN0IGludGVncmFsU25hcHBlZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsK
QEAgLTEwNTMsOCArMTA1Myw4IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3Mo
Y29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRp
Y2tSZWdpb25XaWR0aCA9IHRyYWNrQm91bmRzLmhlaWdodCgpIC0gdGh1bWJTaXplLndpZHRoKCk7
CiAgICAgfQogICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRp
b25zKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihvLnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJ
bmZvLmNvbnRleHQoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioby5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlv
bnMtPml0ZW0oaSk7IGkrKykgewogICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+
KCpub2RlKSk7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93
bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZv
aWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRYKHRpY2tQb3Np
dGlvbik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRpY2tSZWN0LnNldFkodGlja1Bvc2l0
aW9uKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0KTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdCh0aWNrUmVjdCk7CiAgICAgfQogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcAppbmRl
eCBkMGZjYWQ2OTYyMzRiM2RkZWU3MjQ1Y2Q5ODRkYjBlNDY4YWM3OWFiLi5iYWMxZDZmMjEwMGE1
OTU3ZjMxMDAzNGY5Mzc1YzljYTY0NjlmMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBib29sIFJlbmRlclRoZW1l
RWZsOjpwYWludFRoZW1lUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCwgRm9ybVR5cGUg
dHlwZSwgYwogICAgIGVkamVfb2JqZWN0X21lc3NhZ2Vfc2lnbmFsX3Byb2Nlc3MoZW50cnktPmVk
amUoKSk7CiAgICAgZXZhc19yZW5kZXIoZWNvcmVfZXZhc19nZXQoZW50cnktPmNhbnZhcygpKSk7
CiAKLSAgICBjYWlyb190KiBjYWlybyA9IGluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm8gPSBpbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKS0+Y3IoKTsKICAgICBBU1NFUlQoY2Fpcm8pOwogCiAgICAgY2Fpcm9fc2F2ZShjYWlybyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAxODZi
NzYwMTQ5ZTZhZWU2MGMwZGFjYjc0MjJlOTA1NzQyODc2MWIxLi5mZWZiYjI0YjU2NDgyNGUzNDYz
OWM1MTkwOWVkM2YwNmM3ZDM5MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUd0ay5jcHAKQEAgLTUyNiwxNiArNTI2LDE2IEBAIHN0YXRpYyB2b2lkIHBhaW50VG9n
Z2xlKGNvbnN0IFJlbmRlclRoZW1lR3RrKiB0aGVtZSwgR1R5cGUgd2lkZ2V0VHlwZSwgY29uc3Qg
UmVuCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0
PEd0a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CiAKICAgICBpZiAod2lkZ2V0VHlwZSA9PSBHVEtfVFlQ
RV9DSEVDS19CVVRUT04pCi0gICAgICAgIGd0a19yZW5kZXJfY2hlY2soY29udGV4dCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfY2hlY2so
Y29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGVsc2UK
LSAgICAgICAgZ3RrX3JlbmRlcl9vcHRpb24oY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmICh0aGVtZS0+aXNGb2N1
c2VkKHJlbmRlck9iamVjdCkpIHsKICAgICAgICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0KHJlY3Qp
OwogICAgICAgICBnaW50IGluZGljYXRvclNwYWNpbmc7CiAgICAgICAgIGd0a19zdHlsZV9jb250
ZXh0X2dldF9zdHlsZShjb250ZXh0LCAiaW5kaWNhdG9yLXNwYWNpbmciLCAmaW5kaWNhdG9yU3Bh
Y2luZywgbnVsbHB0cik7CiAgICAgICAgIGluZGljYXRvclJlY3QuaW5mbGF0ZShpbmRpY2F0b3JT
cGFjaW5nKTsKLSAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGluZGljYXRvclJlY3QueCgpLCBpbmRpY2F0
b3JSZWN0LnkoKSwKKyAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5k
aWNhdG9yUmVjdC55KCksCiAgICAgICAgICAgICBpbmRpY2F0b3JSZWN0LndpZHRoKCksIGluZGlj
YXRvclJlY3QuaGVpZ2h0KCkpOwogICAgIH0KIApAQCAtNTk0LDggKzU5NCw4IEBAIHN0YXRpYyB2
b2lkIHJlbmRlckJ1dHRvbihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29u
dGV4dCwgY29uc3QgUmVuCiAgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250
ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfREVGQVVMVCk7CiAgICAgfQogCi0gICAgZ3RrX3JlbmRlcl9i
YWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCks
IGJ1dHRvblJlY3QuaGVpZ2h0KCkpOwotICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwg
YnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7
CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwg
YnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVy
X2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBi
dXR0b25SZWN0LmhlaWdodCgpKTsKIAogICAgIGlmICh0aGVtZS0+aXNGb2N1c2VkKHJlbmRlck9i
amVjdCkpIHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKQEAgLTYyNyw3ICs2
MjcsNyBAQCBzdGF0aWMgdm9pZCByZW5kZXJCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtT
dHlsZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbgogICAgICAgICAgICAgYnV0dG9uUmVjdC5t
b3ZlKGNoaWxkRGlzcGxhY2VtZW50WCwgY2hpbGREaXNwbGFjZW1lbnRZKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1
dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5k
ZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCks
IGJ1dHRvblJlY3QuaGVpZ2h0KCkpOwogICAgIH0KIH0KIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTc0NCw3ICs3NDQsNyBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyT2JqZWN0LCBjb25zdCBQYWludAogICAgIC8vIEZJWE1FOiBhZG9wdCBzdWJwaXhlbCB0aGVt
ZXMuCiAgICAgSW50UmVjdCByZWN0ID0gSW50UmVjdChyKTsKIAotICAgIGNhaXJvX3QqIGNhaXJv
Q29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAg
ICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpOwogICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nh
c3Q8R3RrVGV4dERpcmVjdGlvbj4oZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUo
KS5kaXJlY3Rpb24oKSkpOwogCiAgICAgLy8gUGFpbnQgdGhlIGJ1dHRvbi4KQEAgLTg4MCw4ICs4
ODAsOCBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbgogICAgICAgICBmbGFncyB8PSBHVEtfU1RB
VEVfRkxBR19GT0NVU0VEOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0
LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9i
YWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwot
ICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQs
IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmIChpc0ZvY3Vz
ZWQocmVuZGVyT2JqZWN0KSAmJiBpc0VuYWJsZWQocmVuZGVyT2JqZWN0KSkgewogICAgICAgICBn
Ym9vbGVhbiBpbnRlcmlvckZvY3VzOwpAQCAtODkwLDcgKzg5MCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBj
b25zdCBQYWluCiAgICAgICAgIGlmICghaW50ZXJpb3JGb2N1cykgewogICAgICAgICAgICAgSW50
UmVjdCBmb2N1c1JlY3QocmVjdCk7CiAgICAgICAgICAgICBmb2N1c1JlY3QuaW5mbGF0ZShmb2N1
c1dpZHRoICsgZm9jdXNQYWQpOwotICAgICAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54
KCksIGZvY3VzUmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkp
OworICAgICAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgp
LCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtOTA0LDcgKzkwNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4dEFy
ZWEoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvCiAgICAgcmV0
dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdka1Bp
eGJ1ZihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29u
c3QgSW50UmVjdCYgaWNvblJlY3QpCitzdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29uc3QgSW50UmVjdCYg
aWNvblJlY3QpCiB7CiAgICAgSW50U2l6ZSBpY29uU2l6ZShnZGtfcGl4YnVmX2dldF93aWR0aChp
Y29uKSwgZ2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KGljb24pKTsKICAgICBHUmVmUHRyPEdka1BpeGJ1
Zj4gc2NhbGVkSWNvbjsKQEAgLTkxNCw3ICs5MTQsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdka1Bp
eGJ1ZihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29u
cwogICAgICAgICBpY29uID0gc2NhbGVkSWNvbi5nZXQoKTsKICAgICB9CiAKLSAgICBjYWlyb190
KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJvX3QqIGNy
ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsK
ICAgICBnZGtfY2Fpcm9fc2V0X3NvdXJjZV9waXhidWYoY3IsIGljb24sIGljb25SZWN0LngoKSwg
aWNvblJlY3QueSgpKTsKICAgICBjYWlyb19wYWludChjcik7CkBAIC0xMDA4LDcgKzEwMDgsNyBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25Q
YXJ0KGNvbnN0IFJlbmRlck9iamVjdCYgcgogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRl
ck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMs
IHJlbmRlck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQo
KSwgaWNvblJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGlj
b24uZ2V0KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwMjcsNyAr
MTAyNyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0
b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplCiAgICAgICAgIGd0a1RleHREaXJlY3Rp
b24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLAogICAgICAgICBndGtJY29uU3Rh
dGUodGhpcywgcmVuZGVyT2JqZWN0KSwKICAgICAgICAgZ2V0SWNvblNpemVGb3JQaXhlbFNpemUo
cmVjdC5oZWlnaHQoKSkpOwotICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBp
Y29uLmdldCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRl
eHQoKSwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MTA0Nyw3ICsxMDQ3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRDYXBzTG9ja0luZGlj
YXRvcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY28KIHsKICAgICAvLyBUaGUg
b3RoZXIgcGFpbnQgbWV0aG9kcyBkb24ndCBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgcGFpbnRpbmcg
aXMgZGlzYWJsZWQgYmVjYXVzZSBSZW5kZXJUaGVtZSBhbHJlYWR5IGNoZWNrcyBpdAogICAgIC8v
IGJlZm9yZSBjYWxsaW5nIHRoZW0sIGJ1dCBwYWludENhcHNMb2NrSW5kaWNhdG9yKCkgaXMgY2Fs
bGVkIGJ5IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSB3aGljaCBkb2Vzbid0IGNoZWNrIGl0
LgotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlm
IChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBpbnQgaWNvblNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFp
bnRDYXBzTG9ja0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY28K
ICAgICAgICAgcmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBpY29uU2l6ZSwKICAgICAgICAgcmVj
dC55KCkgKyAocmVjdC5oZWlnaHQoKSAtIGljb25TaXplKSAvIDIsCiAgICAgICAgIGljb25TaXpl
LCBpY29uU2l6ZSk7Ci0gICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24u
Z2V0KCksIGljb25SZWN0KTsKKyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgp
LCBpY29uLmdldCgpLCBpY29uUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMDIs
MTUgKzExMDIsMTUgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBpZiAoIWlzRW5hYmxl
ZChyZW5kZXJPYmplY3QpKQogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29u
dGV4dCwgR1RLX1NUQVRFX0ZMQUdfSU5TRU5TSVRJVkUpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNr
Z3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAg
IGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSk7CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBh
aW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmIChpc0ZvY3VzZWQo
cmVuZGVyT2JqZWN0KSkgewogICAgICAgICBnaW50IGZvY3VzV2lkdGgsIGZvY3VzUGFkOwogICAg
ICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUoY29udGV4dCwgImZvY3VzLWxpbmUtd2lk
dGgiLCAmZm9jdXNXaWR0aCwgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQsIG51bGxwdHIpOwog
ICAgICAgICBJbnRSZWN0IGZvY3VzUmVjdChyZWN0KTsKICAgICAgICAgZm9jdXNSZWN0LmluZmxh
dGUoZm9jdXNXaWR0aCArIGZvY3VzUGFkKTsKLSAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVj
dC54KCksIGZvY3VzUmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0
KCkpOworICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCksIGZvY3VzUmVjdC55KCks
IGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGd0
a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19B
Q1RJVkU7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19j
YXN0PEd0a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CiAKLSAgICBndGtfcmVuZGVyX3NsaWRlcihjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAorICAgIGd0a19yZW5kZXJf
c2xpZGVyKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAogICAg
ICAgICBwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCA6IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CiAKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTE3NCw4ICsxMTc0LDggQEAgYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9i
amVjdCwgY29uc3QgUGEKIAogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0
LCBHVEtfU1RZTEVfQ0xBU1NfVFJPVUdIKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChj
b250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3Qu
eCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVu
ZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwor
ICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0
b3JlKGNvbnRleHQpOwogCkBAIC0xMTkzLDcgKzExOTMsNyBAQCBib29sIFJlbmRlclRoZW1lR3Rr
OjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25z
dCBQYQogICAgIHByb2dyZXNzUmVjdCA9IFJlbmRlclRoZW1lR3RrOjpjYWxjdWxhdGVQcm9ncmVz
c1JlY3QocmVuZGVyT2JqZWN0LCBwcm9ncmVzc1JlY3QpOwogCiAgICAgaWYgKCFwcm9ncmVzc1Jl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcHJvZ3Jlc3NSZWN0LngoKSwg
cHJvZ3Jlc3NSZWN0LnkoKSwgcHJvZ3Jlc3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWln
aHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfYWN0aXZpdHkoY29udGV4dCwgcGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcHJvZ3Jlc3NSZWN0LngoKSwgcHJvZ3Jl
c3NSZWN0LnkoKSwgcHJvZ3Jlc3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWlnaHQoKSk7
CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwogICAgIHJldHVybiBm
YWxzZTsKQEAgLTEyNTYsOCArMTI1Niw4IEBAIHN0YXRpYyB2b2lkIHBhaW50U3BpbkFycm93QnV0
dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBjCiAgICAg
YnV0dG9uUmVjdC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIDIpOwogICAgIGd0a19zdHlsZV9j
b250ZXh0X3NldF9qdW5jdGlvbl9zaWRlcyhjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtKdW5jdGlv
blNpZGVzPihqdW5jdGlvbikpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQs
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54
KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0
KCkpOwotICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1
dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9i
YWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgp
LCBidXR0b25SZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBh
aW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgp
LCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgp
KTsKIAogICAgIC8vIFBhaW50IGFycm93IGNlbnRlcmVkIGluc2lkZSBidXR0b24uCiAgICAgLy8g
VGhpcyBjb2RlIGlzIGJhc2VkIG9uIGd0a3NwaW5idXR0b24uYyBjb2RlLgpAQCAtMTI4Myw3ICsx
MjgzLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRTcGluQXJyb3dCdXR0b24oUmVuZGVyVGhlbWUqIHRo
ZW1lLCBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIGMKICAgICBnaW50IGhlaWdodCA9ICh3aWR0
aCArIDEpIC8gMjsKIAogICAgIGFycm93UmVjdC5tb3ZlKChhcnJvd1JlY3Qud2lkdGgoKSAtIHdp
ZHRoKSAvIDIsIChhcnJvd1JlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMik7Ci0gICAgZ3RrX3Jl
bmRlcl9hcnJvdyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIGFuZ2xlLCBhcnJvd1JlY3QueCgpLCBhcnJvd1JlY3QueSgpLCB3aWR0aCk7CisgICAg
Z3RrX3JlbmRlcl9hcnJvdyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBhbmdsZSwgYXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgp
OwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIH0KQEAgLTE0MTcs
NyArMTQxNyw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFGdWxsU2NyZWVuU3R5bGVT
aGVldCgpCiB9CiAjZW5kaWYKIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBj
b25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCitib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludE1lZGlhQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IGNoYXIqIHN5bWJv
bGljSWNvbk5hbWUsIGNvbnN0IGNoYXIqIGZhbGxiYWNrU3RvY2tJY29uTmFtZSkKIHsKICAgICBJ
bnRSZWN0IGljb25SZWN0KAogICAgICAgICByZWN0LngoKSArIChyZWN0LndpZHRoKCkgLSBtX21l
ZGlhSWNvblNpemUpIC8gMiwKQEAgLTE0MzYsNyArMTQzNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVH
dGs6Omhhc093bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihDb250cm9sUGFydCBwYXJ0KSBjb25z
dAogCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVu
ZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgInZpZXctZnVsbHNjcmVlbi1zeW1i
b2xpYyIsIEdUS19TVE9DS19GVUxMU0NSRUVOKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRv
bihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJ2aWV3LWZ1bGxzY3Jl
ZW4tc3ltYm9saWMiLCBHVEtfU1RPQ0tfRlVMTFNDUkVFTik7CiB9CiAKIGJvb2wgUmVuZGVyVGhl
bWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAg
LTE0NDYsNyArMTQ0Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0
dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGJvb2wgbXV0ZWQgPSBtZWRpYUVsZW1lbnQtPm11dGVkKCk7Ci0gICAg
cmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwg
cmVjdCwKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5m
by5jb250ZXh0KCksIHJlY3QsCiAgICAgICAgIG11dGVkID8gImF1ZGlvLXZvbHVtZS1tdXRlZC1z
eW1ib2xpYyIgOiAiYXVkaW8tdm9sdW1lLWhpZ2gtc3ltYm9saWMiLAogICAgICAgICBtdXRlZCA/
ICJhdWRpby12b2x1bWUtbXV0ZWQiIDogImF1ZGlvLXZvbHVtZS1oaWdoIik7CiB9CkBAIC0xNDYx
LDE5ICsxNDYxLDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBib29sIHNob3dQbGF5QnV0dG9uID0gbm9kZUhhc0NsYXNzKG5vZGUsICJwYXVz
ZWQiKTsKIAotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJ
bmZvLmNvbnRleHQsIHJlY3QsCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2Jq
ZWN0LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LAogICAgICAgICBzaG93UGxheUJ1dHRvbiA/
ICJtZWRpYS1wbGF5YmFjay1zdGFydC1zeW1ib2xpYyIgOiAibWVkaWEtcGxheWJhY2stcGF1c2Ut
c3ltYm9saWMiLAogICAgICAgICBzaG93UGxheUJ1dHRvbiA/IEdUS19TVE9DS19NRURJQV9QTEFZ
IDogR1RLX1NUT0NLX01FRElBX1BBVVNFKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFp
bnRNZWRpYVNlZWtCYWNrQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LCAibWVkaWEtc2Vlay1iYWNrd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9SRVdJ
TkQpOworICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCwgIm1lZGlhLXNlZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RP
Q0tfTUVESUFfUkVXSU5EKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNl
ZWtGb3J3YXJkQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4g
cGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LCAi
bWVkaWEtc2Vlay1mb3J3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElBX0ZPUldBUkQpOwor
ICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRl
eHQoKSwgcmVjdCwgIm1lZGlhLXNlZWstZm9yd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJ
QV9GT1JXQVJEKTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTE0ODcsNyArMTQ4
Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9u
c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlCiAgICAgICAgIGljb24gPSBnZXRTdG9ja1N5
bWJvbGljSWNvbkZvcldpZGdldFR5cGUoR1RLX1RZUEVfQ09OVEFJTkVSLCAidXNlci1pbnZpc2li
bGUtc3ltYm9saWMiLCBHVEtfU1RPQ0tfSlVTVElGWV9GSUxMLAogICAgICAgICAgICAgZ3RrVGV4
dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSksIGd0a0ljb25TdGF0
ZSh0aGlzLCByZW5kZXJPYmplY3QpLCBpY29uUmVjdC53aWR0aCgpKTsKICAgICB9Ci0gICAgcGFp
bnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsKKyAg
ICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgpLCBpY29uUmVj
dCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTE1MDcsOSArMTUwNyw5IEBAIGJv
b2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mCiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNv
bnRleHQoKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxl
KE5vU3Ryb2tlKTsKIAogICAgIGZsb2F0IG1lZGlhRHVyYXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1
cmF0aW9uKCk7CiAgICAgZmxvYXQgdG90YWxUcmFja1dpZHRoID0gci53aWR0aCgpOwpAQCAtMTUy
NywxNyArMTUyNywxNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJh
Y2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZgogICAgICAgICByYW5nZVJl
Y3Quc2V0V2lkdGgobGVuZ3RoUmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgpOwogICAgICAgICBpZiAo
aW5kZXgpCiAgICAgICAgICAgICByYW5nZVJlY3QubW92ZShzdGFydFJhdGlvICogdG90YWxUcmFj
a1dpZHRoLCAwKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QocmFuZ2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmFuZ2VS
ZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCi0g
ICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1i
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gby5zdHlsZSgpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBi
b3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZy
b21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0x
NTU2LDkgKzE1NTYsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplYwogICAgIGlmICghdm9sdW1l
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnNl
dFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAgIGludCByZWN0SGVpZ2h0ID0gcmVjdC5oZWln
aHQoKTsKICAgICBmbG9hdCB0cmFja0hlaWdodCA9IHJlY3RIZWlnaHQgKiB2b2x1bWU7CkBAIC0x
NTY3LDkgKzE1NjcsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplYwogICAgIHZvbHVtZVJlY3Qu
bW92ZSgwLCByZWN0SGVpZ2h0IC0gdHJhY2tIZWlnaHQpOwogICAgIHZvbHVtZVJlY3Quc2V0SGVp
Z2h0KGNlaWwodHJhY2tIZWlnaHQpKTsKIAotICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSks
CisgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh2b2x1bWVSZWN0
LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLAogICAgICAgICBzdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAg
Y29udGV4dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAppbmRl
eCA0YWNkMGE2ZTRkNTNkYzM5NDQ0MjlhYjgwNTNlMWIxMmZiNTUxZTU4Li4xYjljMGIzMzhiZDI2
YmZlZDFkMDk2N2E2N2M0OTA4OTE5NjkyZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB+UmVuZGVyVGhlbWVJT1MoKSB7IH0KIAogICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcigp
IGNvbnN0OwotICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJP
YmplY3QmIGJveCwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIEZsb2F0
UmVjdCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1D
b2xvcihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGVjNzJhZTMzOWE2MmU3ZGQ5NTAyMDcyOWExZGIy
ZGZmNDEwNDM3MGYuLjcwNDdmM2Q0M2JkMWZmNmQ2MjUzYjUzMjE1ZmM4YWJlOGRhYzBmY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTMyNCw3ICsz
MjQsNyBAQCBjb25zdCBDb2xvciYgUmVuZGVyVGhlbWVJT1M6OnNoYWRvd0NvbG9yKCkgY29uc3QK
ICAgICByZXR1cm4gY29sb3I7CiB9CiAKLUZsb2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91
bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0Zsb2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6
YWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBUbyBmaXggaW5u
ZXIgYm9yZGVyIGJsZWVkaW5nIGlzc3VlcyA8cmRhcjovL3Byb2JsZW0vOTgxMjUwNz4sIHdlIGNs
aXAgdG8gdGhlIG91dGVyIGJvcmRlciBhbmQgYXNzZXJ0IHRoYXQKICAgICAvLyB0aGUgYm9yZGVy
IGlzIG9wYXF1ZSBvciB0cmFuc3BhcmVudCwgdW5sZXNzIHdlJ3JlIGNoZWNrZWQgYmVjYXVzZSBj
aGVja2VkIHJhZGlvL2NoZWNrYm94ZXMgc2hvdyBubyBibGVlZGluZy4KQEAgLTMzMiw5ICszMzIs
OSBAQCBGbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRCb3JkZXJDbGlwKGNvbnN0
IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljcwogICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGlz
Q2hlY2tlZChib3gpID8gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHJlY3QpIDogc3R5
bGUuZ2V0Um91bmRlZEJvcmRlckZvcihyZWN0KTsKIAogICAgIGlmIChib3JkZXIuaXNSb3VuZGVk
KCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJv
cmRlcikpOworICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvcmRlcikpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+Y2xpcChib3JkZXIucmVjdCgp
KTsKKyAgICAgICAgY29udGV4dC5jbGlwKGJvcmRlci5yZWN0KCkpOwogCiAgICAgaWYgKGlzQ2hl
Y2tlZChib3gpKSB7CiAgICAgICAgIEFTU0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikuYWxwaGEoKSAlIDI1NSA9PSAwKTsKQEAgLTM2Nywx
MyArMzY3LDEzIEBAIHN0YXRpYyBDR1BvaW50IHNob3J0ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1Bv
aW50IGVuZCwgZmxvYXQgd2lkdGgpCiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2ti
b3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGNs
aXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0LCByZWN0KTsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CisgICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBh
aW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogCiAgICAgZmxvYXQgd2lkdGggPSBjbGlwLndpZHRo
KCk7CiAgICAgZmxvYXQgaGVpZ2h0ID0gY2xpcC5oZWlnaHQoKTsKIAotICAgIENHQ29udGV4dFJl
ZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAg
Q0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRp
ZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25jYXZlR3JhZGllbnQpLCBjbGlwLmxv
Y2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJw
b2xhdGlvbik7CiAKQEAgLTM5OCwxNSArMzk4LDE1IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFp
CiAgICAgICAgICAgICBzaG9ydGVuZWQobGluZVsyXSwgbGluZVsxXSwgbGluZVdpZHRoIC8gNC4w
ZikKICAgICAgICAgfTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0
aCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4w
ZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCi0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5kcmF3Sm9pbmVkTGluZXMoc2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5l
Q2FwU3F1YXJlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMo
c2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKIAotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNsaXAud2lkdGgoKSwgY2xpcC5o
ZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VU
aGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBjbGlwLmhlaWdodCgpKSAqIHRoaWNrbmVz
c1JhdGlvKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xv
cigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0pvaW5lZExpbmVzKGxpbmUsIDMsIHRy
dWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdKb2luZWRMaW5lcyhsaW5lLCAz
LCB0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBGbG9hdFBvaW50IGJvdHRvbUNlbnRlcihj
bGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAubWF4WSgpKTsKICAgICAgICAgZHJh
d0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNoYWRlR3JhZGllbnQp
LCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGlu
ZWFySW50ZXJwb2xhdGlvbik7CkBAIC00NTAsMTAgKzQ1MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEVsZW1lbgogCiBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJv
cmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIEZsb2F0
UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgp
LCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGlzQ2hlY2tlZChib3gp
KSB7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShDb25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCks
IGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAKQEAgLTQ2NSwxMCArNDY1LDEw
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJCiAgICAgICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAu
d2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAgICAgICAgY2xpcC5pbmZsYXRlWSgtY2xp
cC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKIAotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+ZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShjbGlwLCBDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
CiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWln
aHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CiAgICAgfQogICAg
IEZsb2F0UG9pbnQgYm90dG9tQ2VudGVyKGNsaXAueCgpICsgY2xpcC53aWR0aCgpIC8gMi4wLCBj
bGlwLm1heFkoKSk7CiAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdp
dGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54
KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC00ODEsMTUgKzQ4MSwx
NSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRleHRGaWVsZERlY29yYXRpb25zKGNvbnN0
IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYQogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IGJv
eC5zdHlsZSgpOwogICAgIEZsb2F0UG9pbnQgcG9pbnQocmVjdC54KCkgKyBzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4
dCgpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0
Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KHJlY3QpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVj
dEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChzdHlsZS5nZXRSb3VuZGVkQm9yZGVy
Rm9yKExheW91dFJlY3QocmVjdCkpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmco
Ym94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgLy8gVGhpcyBncmFk
aWVudCBnZXRzIGRyYXduIGJsYWNrIHdoZW4gcHJpbnRpbmcuCiAgICAgLy8gRG8gbm90IGRyYXcg
dGhlIGdyYWRpZW50IGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdG9wIGJvcmRlci4KICAgICBib29s
IHRvcEJvcmRlcklzSW52aXNpYmxlID0gIXN0eWxlLmhhc0JvcmRlcigpIHx8ICFzdHlsZS5ib3Jk
ZXJUb3BXaWR0aCgpIHx8IHN0eWxlLmJvcmRlclRvcElzVHJhbnNwYXJlbnQoKTsKICAgICBpZiAo
IWJveC52aWV3KCkucHJpbnRpbmcoKSAmJiAhdG9wQm9yZGVySXNJbnZpc2libGUpCi0gICAgICAg
IGRyYXdBeGlhbEdyYWRpZW50KHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
Z3JhZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwgcG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2lu
dE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBmKSksIExpbmVhckludGVycG9sYXRpb24p
OworICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLCBncmFkaWVudFdpdGhOYW1lKEluc2V0R3JhZGllbnQpLCBwb2ludCwgRmxvYXRQ
b2ludChDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50LnkoKSArIDMuMGYpKSwgTGluZWFySW50
ZXJwb2xhdGlvbik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02MTgsNyArNjE4LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0
IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IGJveC5zdHls
ZSgpOwogICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoID0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsK
ICAgICBGbG9hdFJlY3QgY2xpcChyZWN0LngoKSArIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCBy
ZWN0LnkoKSArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCksIHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJv
cmRlckxlZnRXaWR0aCgpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCByZWN0LmhlaWdodCgp
IC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwot
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBmbG9hdCBhZGp1c3RMZWZ0ID0gMC41OwogICAg
IGZsb2F0IGFkanVzdFJpZ2h0ID0gMC41OwpAQCAtNjI5LDkgKzYyOSw5IEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gm
IGJveCwgY29uc3QKICAgICB7CiAgICAgICAgIEZsb2F0UmVjdCB0aXRsZUNsaXAoY2xpcC54KCkg
LSBhZGp1c3RMZWZ0LCBjbGlwLnkoKSAtIGFkanVzdFRvcCwgY2xpcC53aWR0aCgpIC0gTWVudUxp
c3RCdXR0b25QYWRkaW5nUmlnaHQgKyBhZGp1c3RMZWZ0LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0
VG9wICsgYWRqdXN0Qm90dG9tKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNs
aXAsCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QodGl0bGVDbGlwLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5
bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRS
YWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgp
KSwgRmxvYXRTaXplKDAsIDApLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0g
c3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRv
bUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0
b21XaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApKSk7CiAKQEAgLTY0MywxOSArNjQzLDE5IEBAIGJv
b2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJCb3gmIGJveCwgY29uc3QKIAogICAgIGZsb2F0IHNlcGFyYXRvciA9IGNsaXAubWF4WCgp
IC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQ7CiAKLSAgICBib3guZHJhd0xpbmVGb3JCb3hT
aWRlKCpwYWludEluZm8uY29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0g
Ym9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQb2ludChzZXBhcmF0b3IsIGNsaXAubWF4
WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJv
cmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5bGUoKSwgMCwgMCk7CisgICAgYm94LmRy
YXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dChzZXBhcmF0b3IgLSBib3JkZXJUb3BXaWR0aCwgY2xpcC55KCkpLCBGbG9hdFBvaW50KHNlcGFy
YXRvciwgY2xpcC5tYXhZKCkpKSwgQlNSaWdodCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5ib3JkZXJUb3BTdHlsZSgpLCAwLCAw
KTsKIAogICAgIEZsb2F0UmVjdCBidXR0b25DbGlwKHNlcGFyYXRvciAtIGFkanVzdFRvcCwgY2xp
cC55KCkgLSBhZGp1c3RUb3AsIE1lbnVMaXN0QnV0dG9uUGFkZGluZ1JpZ2h0ICsgYWRqdXN0VG9w
ICsgYWRqdXN0UmlnaHQsIGNsaXAuaGVpZ2h0KCkgKyBhZGp1c3RUb3AgKyBhZGp1c3RCb3R0b20p
OwogCiAgICAgLy8gTm93IHBhaW50IHRoZSBidXR0b24gcG9ydGlvbi4KICAgICB7Ci0gICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZv
LmNvbnRleHQoKSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKICAgICAgICAg
ICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRl
clRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJp
Z2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5o
ZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKICAgICAg
ICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJv
cmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0
aCgpKSkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChidXR0b25DbGlw
LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJl
Y3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgIGRyYXdBeGlhbEdy
YWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNS
ZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFkaWVudCA6IENvbnZleEdyYWRpZW50KSwg
YnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGJ1dHRvbkNsaXAueCgpLCBidXR0b25D
bGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwogICAgIH0KQEAgLTY3MCw3ICs2NzAs
NyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMo
Y29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1
dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgoKSAtIGNvdW50ICogKHNpemUgKyBwYWRk
aW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlwLm1heFkoKSAtIDEwLjAsIHNpemUsIHNp
emUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdSYWlzZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41
ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKICAgICAgICAgICAgIGVsbGlwc2UubW92ZShzaXplICsgcGFkZGluZywgMCk7CiAgICAgICAg
IH0KICAgICB9ICBlbHNlIHsKQEAgLTY4OSwxMyArNjg5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwg
Y29uc3QKICAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQb2ludChhcnJvd1syXS54KCksIGFycm93
WzJdLnkoKSArIDEuMGYpOwogCiAgICAgICAgIGZsb2F0IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29u
dHJvbChib3gpID8gMC4yIDogMC41OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAu
MGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5Z29uKDMsIHNoYWRvdywgdHJ1ZSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4w
ZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJh
d0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsKIAotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZl
eFBvbHlnb24oMywgYXJyb3csIHRydWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHln
b24oMywgYXJyb3csIHRydWUpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTc1OSwx
MyArNzU5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVHJhY2soY29uc3Qg
UmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYKIAogICAgIC8vIERyYXcgdGhlIHRy
YWNrIGdyYWRpZW50LgogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgICAgICBJbnRT
aXplIGNvcm5lclNpemUoY29ybmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CiAgICAgICAgIEZsb2F0
Um91bmRlZFJlY3QgaW5uZXJCb3JkZXIodHJhY2tDbGlwLCBjb3JuZXJTaXplLCBjb3JuZXJTaXpl
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNs
aXBSb3VuZGVkUmVjdChpbm5lckJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyKTsKIAotICAgICAgICBDR0NvbnRleHRSZWYgY2dD
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBD
R0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICAgICAgSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQgPSByZWFkb25seSA/IGdyYWRp
ZW50V2l0aE5hbWUoUmVhZG9ubHlTbGlkZXJUcmFja0dyYWRpZW50KSA6IGdyYWRpZW50V2l0aE5h
bWUoU2xpZGVyVHJhY2tHcmFkaWVudCk7CiAgICAgICAgIGlmIChpc0hvcml6b250YWwpCiAgICAg
ICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50LCB0cmFja0NsaXAu
bG9jYXRpb24oKSwgRmxvYXRQb2ludCh0cmFja0NsaXAueCgpLCB0cmFja0NsaXAubWF4WSgpKSwg
TGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC03NzUsMTMgKzc3NSwxMyBAQCBib29sIFJlbmRlclRo
ZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQ
YWludEluZm8mCiAKICAgICAvLyBEcmF3IHRoZSB0cmFjayBib3JkZXIuCiAgICAgewotICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5m
by5jb250ZXh0KCkpOwogCi0gICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICBp
ZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwgMTc4
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcig3NiwgNzYsIDc2KSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBS
ZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRlZFJlY3RQYXRoID0gYWRvcHRDRihDR1Bh
dGhDcmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1BhdGhBZGRSb3VuZGVkUmVjdChyb3VuZGVk
UmVjdFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29ybmVyV2lkdGgsIGNvcm5lckhlaWdodCk7
CkBAIC04MTIsMTAgKzgxMiwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RTbGlkZXJU
aHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIAogYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVj
dCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5j
b250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwg
cGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBGbG9hdFJlY3QgY2xpcCA9IGFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7CiAKLSAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIEZsb2F0UG9pbnQgYm90dG9tQ2VudGVyKGNsaXAueCgp
ICsgY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5tYXhZKCkpOwogICAgIGlmIChpc1ByZXNzZWQo
Ym94KSkKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhO
YW1lKFNsaWRlclRodW1iT3BhcXVlUHJlc3NlZEdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBG
bG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwpA
QCAtODQ1LDE4ICs4NDUsMTggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jh
cihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBjb25zdCBp
bnQgcHJvZ3Jlc3NCYXJIZWlnaHQgPSA5OwogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsT2Zmc2V0
ID0gKHJlY3QuaGVpZ2h0KCkgLSBwcm9ncmVzc0JhckhlaWdodCkgLyAyLjA7CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAgICAgaWYgKHJlY3Qud2lkdGgoKSA8IDEwIHx8IHJlY3QuaGVpZ2h0KCkgPCA5KSB7CiAg
ICAgICAgIC8vIFRoZSByZWN0IGlzIHNtYWxsZXIgdGhhbiB0aGUgc3RhbmRhcmQgcHJvZ3Jlc3Mg
YmFyLiBXZSBjbGlwIHRvIHRoZSBlbGVtZW50J3MgcmVjdCB0byBhdm9pZAogICAgICAgICAvLyBs
ZWFraW5nIHBpeGVscyBvdXRzaWRlIHRoZSByZXBhaW50IHJlY3QuCi0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwKHJlY3QpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAo
cmVjdCk7CiAgICAgfQogCiAgICAgLy8gMSkgRHJhdyB0aGUgcHJvZ3Jlc3MgYmFyIHRyYWNrLgog
ICAgIC8vIDEuMSkgRHJhdyB0aGUgd2hpdGUgYmFja2dyb3VuZCB3aXRoIGdyZXkgZ3JhZGllbnQg
Ym9yZGVyLgotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
OwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygwLjY4KTsKLSAgICBjb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygw
LjY4KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKIAogICAgIGNv
bnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0LnkoKSArIHZlcnRpY2Fs
T2Zmc2V0OwogICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6
Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBG
bG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NC
YXJIZWlnaHQgLSAxKSk7CkBAIC04NjQsMjggKzg2NCwyOCBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBh
aW50SQogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwg
MHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29s
b3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlR3Jh
ZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29udGV4dC5zZXRT
dHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIENv
bG9yU3BhY2UgY29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgY29sb3JTcGFjZSk7
CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSksIGNvbG9yU3Bh
Y2UpOwogCiAgICAgUGF0aCB0cmFja1BhdGg7CiAgICAgRmxvYXRSZWN0IHRyYWNrUmVjdChyZWN0
LngoKSArIDAuMjUsIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjI1LCByZWN0LndpZHRo
KCkgLSAwLjUsIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41KTsKICAgICBGbG9hdFNpemUgcm91bmRl
ZENvcm5lclJhZGl1cyg1LCA0KTsKICAgICB0cmFja1BhdGguYWRkUm91bmRlZFJlY3QodHJhY2tS
ZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICBjb250ZXh0LT5kcmF3UGF0aCh0cmFja1Bh
dGgpOworICAgIGNvbnRleHQuZHJhd1BhdGgodHJhY2tQYXRoKTsKIAogICAgIC8vIDEuMikgRHJh
dyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYuIEl0IGlzIHN1cHBvc2VkIHRvIG92ZXJs
YXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBhbmQgZGFya2VyIHRoZSBzdHJva2VkIHBh
dGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0LngoKSwgcmVjdC55KCkgKyB2ZXJ0aWNhbE9m
ZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0JhckhlaWdodCk7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENv
cm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91
bmRlZENvcm5lclJhZGl1cykpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVk
Q29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzKSk7
CiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0ID0gcHJvZ3Jlc3NCYXJIZWlnaHQgLyAy
LjsKICAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBG
bG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFk
aWVudEhlaWdodCAtIDEuNSkpOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAs
IENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9y
U3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29udGV4dC5zZXRG
aWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIGNvbnRl
eHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biwgcmVjdC53aWR0aCgpLCB1cHBlckdyYWRpZW50SGVpZ2h0KSk7CisgICAgY29udGV4dC5maWxs
UmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qu
d2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwogCiAgICAgY29uc3QgYXV0byYgcmVuZGVy
UHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyZXIpOwogICAgIGlmIChy
ZW5kZXJQcm9ncmVzcy5pc0RldGVybWluYXRlKCkpIHsKQEAgLTg5OSwxMyArODk5LDEzIEBAIGJv
b2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC0+
c2V0RmlsbEdyYWRpZW50KGJhckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAog
ICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxv
YXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFy
SGVpZ2h0IC0gMSkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAu
MCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0MCkpOwogICAgICAgICBiYXJTdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMzgsIDEwNCwgMTY2KSk7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJlbGVhc2VO
b25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdy
YWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgICAgIFBhdGggYmFyUGF0aDsKICAgICAg
ICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBib29sIFJlbmRlclRo
ZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNv
bnN0IFBhaW50SQogICAgICAgICAgICAgbGVmdCA9IHJlY3QubWF4WCgpIC0gYmFyV2lkdGg7CiAg
ICAgICAgIEZsb2F0UmVjdCBiYXJSZWN0KGxlZnQgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgMC4yNSwgc3RkOjptYXgoYmFyV2lkdGggLSAwLjUsIDAuMCksIHByb2dyZXNzQmFy
SGVpZ2h0IC0gMC41KTsKICAgICAgICAgYmFyUGF0aC5hZGRSb3VuZGVkUmVjdChiYXJSZWN0LCBy
b3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd1BhdGgoYmFyUGF0aCk7
CisgICAgICAgIGNvbnRleHQuZHJhd1BhdGgoYmFyUGF0aCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtOTg0LDEwICs5ODQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRC
dXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnQKIAog
Ym9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQdXNoQnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNs
aXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBj
bGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0
KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGJveC5zdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNEYXJrKCkpCiAgICAg
ICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb252ZXhH
cmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChjbGlwLngoKSwgY2xpcC5tYXhZ
KCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICBlbHNlIHsKQEAgLTEwMTQsNyArMTAxNCw3
IEBAIGNvbnN0IGludCBrTXVsdGlwbGVUaHVtYm5haWxTaHJpbmtTaXplID0gMjsKIAogYm9vbCBS
ZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFJlbmRlck9iamVjdCYgYnV0dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJY29uKiBpY29uLCBGaWxlVXBs
b2FkRGVjb3JhdGlvbnMgZmlsZVVwbG9hZERlY29yYXRpb25zKQogewotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAog
ICAgIEludFNpemUgY29ybmVyU2l6ZShrVGh1bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzLCBrVGh1
bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzKTsKICAgICBDb2xvciBwaWN0dXJlRnJhbWVDb2xvciA9
IGJ1dHRvblJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IpOwpAQCAtMTAzMSwxMiArMTAzMSwxMiBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgc2ltcGxl
IGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQgbWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAg
ICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3IgPSBDb2xvcihidXR0b25SZW5kZXJlci5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciku
cmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVy
U2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRodW1i
bmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHRodW1ibmFpbFJlY3Qs
IGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgewot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJ
bmZvLmNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKHRodW1ibmFpbFJlY3QpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICAgICAgICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKHRodW1ibmFpbFJl
Y3QpOwogICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJbWFnZUNvbG9yLmlzRGFyaygpKQogICAg
ICAgICAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShDb252ZXhHcmFkaWVudCksIHRodW1ibmFpbFJlY3QubG9jYXRpb24oKSwgRmxvYXRQb2ludCh0
aHVtYm5haWxSZWN0LngoKSwgdGh1bWJuYWlsUmVjdC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0
aW9uKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTA1Miw4ICsxMDUyLDggQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFIKICAgICB9CiAKICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUg
YW5kIGljb24uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7Ci0gICAgaWNvbi0+cGFpbnQoKnBhaW50SW5mby5jb250ZXh0LCB0aHVtYm5h
aWxSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgaWNvbi0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgdGh1bWJu
YWlsUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggZGUyMmQwMGM4NjdlNDQwMGRlNDY4MzEwNmY0ZjQ3
NjIyM2UwZmZhMi4uZmI0ZTRjODBjODYyOTBkY2UxNmFjYWExOWRiZmI3ZDJmYTM2ZTkyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtODUwLDExICs4
NTAsMTEgQEAgTlNDb250cm9sU2l6ZSBSZW5kZXJUaGVtZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0
ZW1Gb250KFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByKQogewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAg
ICBOU1RleHRGaWVsZENlbGwgKnRleHRGaWVsZCA9IHRoaXMtPnRleHRGaWVsZCgpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOwogCiAgICAgW3RleHRGaWVsZCBzZXRFbmFibGVkOihpc0VuYWJsZWQobykgJiYgIWlz
UmVhZE9ubHlDb250cm9sKG8pKV07CiAgICAgW3RleHRGaWVsZCBkcmF3V2l0aEZyYW1lOk5TUmVj
dChyKSBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lk
IFJlbmRlclRoZW1lTWFjOjphZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KgogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFRleHRBcmVh
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIHdrRHJhd0JlemVsZWRU
ZXh0QXJlYShyLCBpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC05MDksNyArOTA5LDcgQEAgY29uc3QgaW50KiBSZW5kZXJUaGVt
ZU1hYzo6cG9wdXBCdXR0b25QYWRkaW5nKE5TQ29udHJvbFNpemUgc2l6ZSkgY29uc3QKIAogYm9v
bCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZv
LmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
cGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0UG9wdXBCdXR0b25DZWxsU3RhdGUocmVuZGVy
ZXIsIEludFNpemUocmVjdC5zaXplKCkpKTsKIAogICAgIE5TUG9wVXBCdXR0b25DZWxsKiBwb3B1
cEJ1dHRvbiA9IHRoaXMtPnBvcHVwQnV0dG9uKCk7CkBAIC05MjQsMTkgKzkyNCwxOSBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChyZWN0LndpZHRoKCkgPj0gbWluaW11bU1lbnVM
aXN0U2l6ZShyZW5kZXJlci5zdHlsZSgpKSkKICAgICAgICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0
ZVJlY3QocmVjdCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJnaW5zKCksIHpvb21MZXZlbCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAKICAgICAvLyBCZWZvcmUgWW9zZW1pdGUgd2UgZGlkIG5vdCB3YW50IHRoZSBj
ZWxsIHRvIGV2ZXIgZHJhdyBvdXRzaWRlIHRoZSBnaXZlbiByZWN0YW5nbGUuCiAjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTAwMAotICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGluZmxhdGVkUmVjdCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGluZmxh
dGVkUmVjdCk7CiAjZW5kaWYKIAogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAg
ICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwp
OwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAv
IHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0
ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55
KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZShpbmZsYXRlZFJlY3Qu
eCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2Fs
ZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsK
ICAgICB9CiAKICAgICBwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElm
TmVjZXNzYXJ5KHBvcHVwQnV0dG9uLCByZW5kZXJlciwgcGFpbnRJbmZvLCBpbmZsYXRlZFJlY3Qp
OwpAQCAtOTY0LDEwICs5NjQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZXRlcihj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKICAgICBpZiAo
IWlzPFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU0xldmVsSW5kaWNhdG9yQ2VsbCogY2VsbCA9IGxl
dmVsSW5kaWNhdG9yRm9yKGRvd25jYXN0PFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpKTsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAKICAgICBbY2VsbCBkcmF3V2l0aEZyYW1lOnJlY3QgaW5WaWV3OmRvY3VtZW50
Vmlld0ZvcihyZW5kZXJPYmplY3QpXTsKICAgICBbY2VsbCBzZXRDb250cm9sVmlldzpuaWxdOwpA
QCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jh
cihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICB0cmFja0lu
Zm8ucmVzZXJ2ZWQgPSAwOwogICAgIHRyYWNrSW5mby5maWxsZXIxID0gMDsKIAotICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3Rvciwg
Q29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNvbnRleHQsIHRydWUpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3Rvciwg
Q29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSwgdHJ1ZSk7CiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTExNDIsMTQgKzExNDIs
MTQgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICBISVRoZW1lRHJhd1RyYWNrKCZ0
cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAKICAgICBpZiAoIXJlbmRlclByb2dyZXNzLnN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoMiAq
IGluZmxhdGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qud2lkdGgoKSwgMCk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoLTEsIDEpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS50cmFuc2xhdGUoMiAqIGluZmxhdGVkUmVjdC54KCkgKyBpbmZsYXRlZFJl
Y3Qud2lkdGgoKSwgMCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRT
aXplKC0xLCAxKSk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZUJ1
ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0
LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRp
b24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjEwLDEwICsxMjEwLDEwIEBAIHZv
aWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBDb250ZXh0Q29udGFpbmVyIGNnQ29udGV4dENvbnRhaW5lcihwYWludEluZm8u
Y29udGV4dCk7CisgICAgQ29udGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWluZXIocGFpbnRJ
bmZvLmNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBjZ0NvbnRleHRDb250
YWluZXIuY29udGV4dCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgRmxvYXRSb3VuZGVkUmVjdCBi
b3JkZXIgPSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIp
KTsKICAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7CkBA
IC0xMjM5LDMzICsxMjM5LDMzIEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RC
dXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgUmV0YWlu
UHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVB
eGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShy
Lm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxz
ZSkpOwogCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5k
ZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRS
ZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4
dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5n
ZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJl
Y3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgp
LnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVj
dCh0b3BHcmFkaWVudCksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCku
dG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICAgICAgY29udGV4dCA9IGNn
Q29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5n
KGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICghYm90dG9tR3Jh
ZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIENHQ29udGV4
dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9tR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVj
dChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5i
b3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3Np
bmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvcmRlci5y
YWRpaSgpLmJvdHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAg
ICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAgQ0dD
b250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgfQog
CiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBh
aW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0
KGNvbnRleHQsIHIpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJv
cmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwog
ICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7
CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5nZXQo
KSk7CkBAIC0xMjkyLDEwICsxMjkyLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAg
aWYgKGJvdW5kcy53aWR0aCgpIDwgYXJyb3dXaWR0aCArIGFycm93UGFkZGluZ0xlZnQgKiByZW5k
ZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4
dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihyZW5kZXJl
ci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgcmVuZGVy
ZXIuc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJv
a2VTdHlsZShOb1N0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Io
cmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciks
IHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cxWzNdOwog
ICAgIGFycm93MVswXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgLSBzcGFjZUJldHdl
ZW5BcnJvd3MgLyAyLjBmKTsKQEAgLTEzMDMsNyArMTMwMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRl
cmVyLCBjCiAgICAgYXJyb3cxWzJdID0gRmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGgg
LyAyLjBmLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiAtIGFycm93SGVpZ2h0
KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5k
cmF3Q29udmV4UG9seWdvbigzLCBhcnJvdzEsIHRydWUpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cxLCB0cnVlKTsKIAogICAgIEZsb2F0UG9pbnQg
YXJyb3cyWzNdOwogICAgIGFycm93MlswXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkg
KyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAgLTEzMTEsNyArMTMxMSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cyWzJdID0gRmxvYXRQb2ludChsZWZ0RWRnZSAr
IGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiAr
IGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBhcnJvdwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdzIsIHRydWUpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0cnVlKTsKIAog
ICAgIENvbG9yIGxlZnRTZXBhcmF0b3JDb2xvcigwLCAwLCAwLCA0MCk7CiAgICAgQ29sb3Igcmln
aHRTZXBhcmF0b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0MCk7CkBAIC0xMzIxLDE0ICsxMzIxLDE0
IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgaW50IGxlZnRFZGdlT2ZTZXBhcmF0b3Ig
PSBzdGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJyb3dQYWRkaW5nTGVmdCAqIHJlbmRlcmVy
LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsgLy8gRklYTUU6IFJvdW5kPwogCiAgICAgLy8gRHJh
dyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6
b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4uCi0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VP
ZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VUaGlja25lc3MoMSk7IC8vIERlbGliZXJhdGVseSBpZ25vcmVzIHpvb20gc2luY2UgaXQgbG9v
a3MgbmljZXIgaWYgaXQgc3RheXMgdGhpbi4KKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9r
ZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBi
b3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVm
dEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9m
U2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0
RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2Vw
YXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0x
NDU0LDcgKzE0NTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1
c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KE5TQ2VsbAogICAgIGJvb2wgc2hvdWxk
RHJhd0ZvY3VzUmluZyA9IGlzRm9jdXNlZChyZW5kZXJlcikgJiYgcmVuZGVyZXIuc3R5bGUoKS5v
dXRsaW5lU3R5bGVJc0F1dG8oKTsKICAgICBib29sIHNob3VsZFVzZUltYWdlQnVmZmVyID0gcmVu
ZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkgIT0gMSB8fCBwYWdlLT5wYWdlU2NhbGVGYWN0
b3IoKSAhPSAxOwogICAgIGJvb2wgc2hvdWxkRHJhd0NlbGwgPSB0cnVlOwotICAgIGlmIChUaGVt
ZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJ
bmZvLmNvbnRleHQsIHJlY3QsIGRvY3VtZW50Vmlld0ZvcihyZW5kZXJlciksIHNob3VsZERyYXdD
ZWxsLCBzaG91bGREcmF3Rm9jdXNSaW5nLCBzaG91bGRVc2VJbWFnZUJ1ZmZlciwgcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSkpCisgICAgaWYgKFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5n
V2l0aFZpZXdJbnRvQ29udGV4dChjZWxsLCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCBkb2N1
bWVudFZpZXdGb3IocmVuZGVyZXIpLCBzaG91bGREcmF3Q2VsbCwgc2hvdWxkRHJhd0ZvY3VzUmlu
Zywgc2hvdWxkVXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpKQogICAg
ICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWlu
dCgpOwogfQogCkBAIC0xNDkxLDcgKzE0OTEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQog
ICAgICAgICBib3VuZHMuc2V0WChyLngoKSArIHIud2lkdGgoKSAvIDIgLSB6b29tZWRUcmFja1dp
ZHRoIC8gMik7CiAgICAgfQogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2Fs
Q29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBDR0NvbnRleHRSZWYg
Y29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbG9yU3BhY2VSZWYg
Y3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCkBAIC0xNDk5LDcgKzE0OTksNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIHBhaW50U2xpZGVyVGlja3MobywgcGFpbnRJ
bmZvLCByKTsKICNlbmRpZgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dCwgYm91bmRzKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5D
YWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwpAQCAtMTUx
MSw3ICsxNTExLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgbWFpblNoYWRp
bmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91
bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCBib3VuZHMubWF4
WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIEludFNpemUg
cmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMs
IHJhZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1
cykpOwogICAgIGNvbnRleHQgPSBsb2NhbENvbnRleHQuY2dDb250ZXh0KCk7CiAgICAgQ0dDb250
ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogCkBAIC0xNTMyLDcg
KzE1MzIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICA/IHNsaWRlclRodW1i
VmVydGljYWwoKQogICAgICAgICA6IHNsaWRlclRodW1iSG9yaXpvbnRhbCgpOwogCi0gICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7
CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8u
Y29udGV4dCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9u
ZCB0by4KICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2xpZGVyVGh1bWJDZWxsLCBvKTsKQEAgLTE1
NjgsMTYgKzE1NjgsMTYgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBpZiAoby5zdHls
ZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkKICAgICAgICAgYm91
bmRzLnNldEhlaWdodChib3VuZHMuaGVpZ2h0KCkgKyB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRp
bmcgKiBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBmbG9h
dCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRSZWN0
IHVuem9vbWVkUmVjdCA9IGJvdW5kczsKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAg
ICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxl
dmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0
KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVu
em9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJl
Y3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRS
ZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CiAgICAgfQogCiAgICAgW3NsaWRlclRodW1iQ2VsbCBkcmF3S25vYjp1bnpvb21lZFJlY3Rd
OwpAQCAtMTU4OCwxMiArMTU4OCwxMiBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRl
clRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogCiBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7
CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8u
Y29udGV4dCgpKTsKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNo
KCk7CiAKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUobywgcik7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAg
ICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCkBAIC0xNjAy
LDkgKzE2MDIsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIGlmICh6b29tTGV2ZWwg
IT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0Lndp
ZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9v
bWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwp
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0Lngo
KSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5z
bGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11
bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICAvLyBTZXQgdGhlIHNlYXJjaCBidXR0b24g
dG8gbmlsIGJlZm9yZSBkcmF3aW5nLiAgVGhlbiByZXNldCBpdCBzbyB3ZSBjYW4gZHJhdyBpdCBs
YXRlci4KQEAgLTE2ODUsNyArMTY4NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAg
aWYgKCFpbnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8u
Y29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChw
YWludEluZm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUoKmlucHV0LT5yZW5k
ZXJlcigpLCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFy
Y2goKTsKQEAgLTE2OTUsNyArMTY5NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAg
ZWxzZSBpZiAoW1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0gaXNIaWdobGlnaHRlZF0pCiAgICAg
ICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIHNldEhpZ2hsaWdodGVkOk5PXTsKIAotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29u
dGV4dCgpKTsKIAogICAgIGZsb2F0IHpvb21MZXZlbCA9IG8uc3R5bGUoKS5lZmZlY3RpdmVab29t
KCk7CiAKQEAgLTE3MDYsOSArMTcwNiw5IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAg
aWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1
bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5z
ZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3Qu
eSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2
ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11
bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpv
b21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29t
ZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIAogICAgIFtbc2VhcmNoIGNh
bmNlbEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVu
dFZpZXdGb3IobyldOwpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3Qm
IG8KICAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBh
aW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIHNldFNlYXJjaENlbGxTdGF0ZSgqaW5w
dXQtPnJlbmRlcmVyKCksIHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRo
aXMtPnNlYXJjaCgpOwpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dAogICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFp
bnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENv
bnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1
dC0+cmVuZGVyZXIoKSwgcik7CiAKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhp
cy0+c2VhcmNoKCk7CkBAIC0xODA3LDcgKzE4MDcsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
CiAgICAgaWYgKCFbc2VhcmNoIHNlYXJjaE1lbnVUZW1wbGF0ZV0pCiAgICAgICAgIFtzZWFyY2gg
c2V0U2VhcmNoTWVudVRlbXBsYXRlOnNlYXJjaE1lbnVUZW1wbGF0ZSgpXTsKIAotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgp
KTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCiAg
ICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91
bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChpbnB1dC0+cmVuZGVyQm94KCktPmNvbnRlbnRCb3hS
ZWN0KCkpKV07CkBAIC0xODE3LDkgKzE4MTcsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAg
ICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0
aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVj
dC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJl
Y3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29t
TGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRl
KC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWws
IHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56
b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIAogICAgIFtbc2VhcmNo
IHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1
bWVudFZpZXdGb3IobyldOwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwKICAgICBpZiAoIWNvbnRlbnRXaWR0aCB8fCAhY29udGVudEhlaWdodCkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4
dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRI
ZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IHJlbmRlckJsb2NrLmxv
Y2F0aW9uKCk7CkBAIC0xODk5LDcgKzE4OTksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLAog
ICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJl
Y3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250ZXh0LT5k
cmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBh
bGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5kcmF3
SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGln
bmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC0yMDYzLDEwICsyMDYzLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50SW1h
Z2VDb250cm9sc0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zCiAjaWYg
SEFWRShBUFBLSVRfU0VSVklDRV9DT05UUk9MU19TVVBQT1JUKQogICAgIE5TU2VydmljZXNSb2xs
b3ZlckJ1dHRvbkNlbGwgKmNlbGwgPSBzZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCgpOwogCi0g
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29u
dGV4dCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4
dChwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+
dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50
cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKIAogICAgIEludFJlY3QgaW5uZXJGcmFtZShJ
bnRQb2ludCgpLCByZWN0LnNpemUoKSk7CiAgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTppbm5lckZy
YW1lIGluVmlldzpkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpXTsKQEAgLTI0NjIsOCArMjQ2Miw4
IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAKICAgICBBdHRhY2htZW50TGF5b3V0IGxheW91
dChhdHRhY2htZW50KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9ICpwYWludElu
Zm8uY29udGV4dDsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KCZjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dCgpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29u
dGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0KTsKIAog
ICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKHBhaW50UmVjdC5sb2NhdGlvbigpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRl
eCA1NWMwOGQ1NjUyM2U5NWZkZTcyNTYzZWNlMjQ4ODFhZjEwMDkwM2NhLi40NzcxOTNjMTNlZTVm
YTk2M2E5NmQxNWE4ZmIyMDQ4ODc4ZGQ1MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3Qg
UGFpbnRJbmZvJiBwYQogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBjb250cm9sU2l6
ZUZvckZvbnQoby5zdHlsZSgpKTsKIAogICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0
ZVJlY3QociwgY2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXSwgY2hlY2tib3hNYXJnaW5zKGNv
bnRyb2xTaXplKSk7ICAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQ
YXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwg
Y29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZh
cmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4
dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnQKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gY29udHJvbFNpemVGb3JGb250
KG8uc3R5bGUoKSk7CiAgCiAgICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBpbmZsYXRlUmVjdChy
LCByYWRpb1NpemVzKClbY29udHJvbFNpemVdLCByYWRpb01hcmdpbnMoY29udHJvbFNpemUpKTsg
ICAgCi0gICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWlu
ZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChSYWRpb0J1dHRvblBhcnQsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUs
IGRldGVybWluZVN0YXRlKG8pKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTU3Nyw3ICs1
NzcsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgIH0gZWxzZQogICAgICAgICBwYXJ0
ID0gU2FmYXJpVGhlbWU6OlNxdWFyZUJ1dHRvblBhcnQ7CiAKLSAgICBwYWludFRoZW1lUGFydChw
YXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwg
Y29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChwYXJ0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNv
bnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC01ODUsNyArNTg1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQo
Y29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHAKIHsKICAgICBBU1NFUlQo
U2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6
OlRleHRGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
KE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAg
ICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4dEZpZWxkUGFydCwgcGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5l
U3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU5
OCwxMCArNTk4LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRp
Y2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWluCiAjaWYgZGVmaW5lZChTQUZB
UklfVEhFTUVfVkVSU0lPTikgJiYgU0FGQVJJX1RIRU1FX1ZFUlNJT04gPj0gMQogICAgIEFTU0VS
VChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoQ2Fw
c0xvY2tQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0Nv
bnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkwKTsKKyAgICBwYWludFRoZW1lUGFydChD
YXBzTG9ja1BhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIChO
U0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkwKTsKIAogICAgIHJldHVybiBmYWxz
ZTsKICNlbHNlCkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFp
bnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKIHsK
ICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQo
U2FmYXJpVGhlbWU6OlRleHRBcmVhUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRlcm1pbmVTdGF0ZShvKSAmIH5Gb2N1c2Vk
U3RhdGUpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpUZXh0QXJlYVBhcnQsIHBh
aW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAs
IGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC02NjIsNyArNjYyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51
TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaW4KICAgICBpZiAo
ci53aWR0aCgpID49IG1pbmltdW1NZW51TGlzdFNpemUoby5zdHlsZSgpKSkKICAgICAgICAgaW5m
bGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QoaW5mbGF0ZWRSZWN0LCBzaXplLCBwb3B1cEJ1dHRvbk1h
cmdpbnMoY29udHJvbFNpemUpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9u
UGFydCwgaW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250
cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KERyb3BEb3du
QnV0dG9uUGFydCwgaW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVj
dCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKIAogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTcyMyw5ICs3MjMsOSBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVM
aXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29ucwogICAgIGlmIChy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUo
KTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmQgPSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5
bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm91bmQucmFk
aWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKQEAgLTc0OSwzNCArNzQ5LDM0IEBAIHZvaWQgUmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvLCBjb25zCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gbGVmdFNoYWRpbmcgPSBh
ZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci54KCksICBy
LnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5n
ZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdo
dFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1h
a2Uoci5tYXhYKCksICByLnkoKSksIENHUG9pbnRNYWtlKHIubWF4WCgpIC0gcmFkaXVzLCByLnko
KSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QoYm91bmQpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRS
ZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGlu
Zy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBi
b3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXpl
KCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIGJvdW5kLnJh
ZGlpKCkudG9wTGVmdCgpLCBib3VuZC5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50
U2l6ZSgpKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9wU2hhZGluZy5n
ZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLnJlc3RvcmUoKTsKIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQs
IGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJ
bnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJh
ZGlpKCkuYm90dG9tUmlnaHQoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGll
bnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJv
dW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGlu
Zyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnJlc3RvcmUoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAg
ICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmQpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3Rv
cmUoKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC03OTgsMTAgKzc5OCwxMCBAQCBi
b29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZQogICAgIGlmIChib3VuZHMud2lkdGgoKSA8IGFycm93V2lk
dGggKyBhcnJvd1BhZGRpbmdMZWZ0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwog
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKE5vU3Ryb2tlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihy
ZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICBGbG9hdFBvaW50IGFy
cm93WzNdOwogICAgIGFycm93WzBdID0gRmxvYXRQb2ludChsZWZ0RWRnZSwgY2VudGVyWSAtIGFy
cm93SGVpZ2h0IC8gMi4wZik7CkBAIC04MDksNyArODA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGUKICAgICBhcnJvd1syXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8g
Mi4wZiwgY2VudGVyWSArIGFycm93SGVpZ2h0IC8gMi4wZik7CiAKICAgICAvLyBEcmF3IHRoZSBh
cnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywg
dHJ1ZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJv
dywgdHJ1ZSk7CiAKICAgICBDb2xvciBsZWZ0U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwog
ICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1LCAyNTUsIDI1NSwgNDApOwpAQCAtODE5
LDE3ICs4MTksMTcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICBpbnQgbGVmdEVkZ2VP
ZlNlcGFyYXRvciA9IHN0YXRpY19jYXN0PGludD4obGVmdEVkZ2UgLSBhcnJvd1BhZGRpbmdMZWZ0
KTsgLy8gRklYTUU6IFJvdW5kPwogCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBs
ZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tu
ZXNzKDEpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JD
b2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdM
aW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAorICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZT
ZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMubWF4WSgpKSk7CiAKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50
KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdMaW5lKElu
dFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLnkoKSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZTZXBh
cmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkzNSwxMCArOTM1LDEwIEBAIGJvb2wgUmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWludEluZm8mCiAgICAgZWxzZSBpZiAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlk
ZXJWZXJ0aWNhbFBhcnQpCiAgICAgICAgIGJvdW5kcy5zZXRSZWN0KEludFJlY3Qoci54KCkgKyBy
LndpZHRoKCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIsIHIueSgpLCB0cmFja1dpZHRoLCByLmhlaWdo
dCgpKSk7CiAKLSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZl
KCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LCBib3VuZHMucmVjdCgpKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2Fs
bGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVM
TCB9OwpAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xp
ZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgZWxz
ZQogICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngoKSwgIGJvdW5kcy5yZWN0KCkueSgpKSwg
Q0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksIGJvdW5kcy5yZWN0KCkubWF4WSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwUm91bmRlZFJlY3QoYm91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBS
b3VuZGVkUmVjdChib3VuZHMpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1h
aW5TaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIAogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTk2Nyw3ICs5NjcsNyBAQCBjb25zdCBmbG9hdCB2ZXJ0aWNhbFNsaWRlckhlaWdodFBh
ZGRpbmcgPSAwLjFmOwogYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYihj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByKQogewogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7Ci0gICAgcGFp
bnRUaGVtZVBhcnQoU2xpZGVyVGh1bWJQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIHIsIE5TU21hbGxDb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAg
IHBhaW50VGhlbWVQYXJ0KFNsaWRlclRodW1iUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgTlNTbWFsbENvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05OTAsNyArOTkwLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAg
cGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUGFydCwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJj
aEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChT
YWZhcmlUaGVtZTo6U2VhcmNoRmllbGRQYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLCByLCBjb250cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSks
IGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwNTEsNyAr
MTA1MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxC
dXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zCiAKICAgICBJbnRSZWN0IHNlYXJjaFJl
Y3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMo
KTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVj
dCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hG
aWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC0xMTA2LDcgKzExMDYsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdAogCiAgICAgSW50
UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3Jp
bmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFy
Y2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQo
U2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21S
ZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzAsNyArMTEzMCw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uCiAKICAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAotICAgIHBhaW50VGhlbWVQ
YXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8u
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJl
Y3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwor
ICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25Q
YXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBj
b250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVy
bWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDE2MzVhNzRlNTg4YjU4Y2Q5ZDQ5MTQx
NGYxY2ZjODdiM2VlYmJjYTUuLjcxNDc4ODliNWM4ODY1MDZiMjlmOTA5NmMwZDBkYjljZTIwYzgy
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAt
NjIyLDcgKzYyMiw3IEBAIFRoZW1lRGF0YSBSZW5kZXJUaGVtZVdpbjo6Z2V0VGhlbWVEYXRhKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgQ29udHJvbFN1YlBhcnQgc3ViCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0aGVtZSwgY29uc3QgVGhlbWVEYXRhJiB0
aGVtZURhdGEsIGNvbnN0IEludFJlY3QmIHIpCitzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgSEFORExFIHRoZW1l
LCBjb25zdCBUaGVtZURhdGEmIHRoZW1lRGF0YSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBi
b29sIGFscGhhQmxlbmQgPSBmYWxzZTsKICAgICBpZiAodGhlbWUpCkBAIC02NzcsNyArNjc3LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFh
bHBoYUJsZW5kICYmICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAo
IWFscGhhQmxlbmQgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAgICAg
IERJQlBpeGVsRGF0YTo6c2V0UkdCQUJpdG1hcEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygpLCBy
LCAyNTUpOwogfQogCkBAIC03NDYsNyArNzQ2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFp
bnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8K
ICAgICAgICAgcGFydCA9IFRGUF9URVhURklFTEQ7CiAgICAgfQogCi0gICAgZHJhd0NvbnRyb2wo
cGFpbnRJbmZvLmNvbnRleHQsIHJlbmRlcmVyLCB0aGVtZSwgVGhlbWVEYXRhKHBhcnQsIGRldGVy
bWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkpOworICAgIGRyYXdDb250cm9sKHBh
aW50SW5mby5jb250ZXh0KCksIHJlbmRlcmVyLCB0aGVtZSwgVGhlbWVEYXRhKHBhcnQsIGRldGVy
bWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkpOwogICAgIAogICAgIHJldHVybiBw
YWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
ciksIHBhaW50SW5mbywgRmxvYXRSZWN0KHJlY3QpKTsKIH0KQEAgLTgwOCw3ICs4MDgsNyBAQCBi
b29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3Qg
UmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgICAgICBidXR0b25SZWN0LnNldFdpZHRoKGJ1dHRv
blJlY3Qud2lkdGgoKSArIHZpc3RhTWVudUxpc3RCdXR0b25PdXRzZXQpOwogICAgIH0KIAotICAg
IGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJlciwgbWVudUxpc3RUaGVtZSgp
LCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0KTsKKyAgICBkcmF3Q29udHJvbChw
YWludEluZm8uY29udGV4dCgpLCByZW5kZXJlciwgbWVudUxpc3RUaGVtZSgpLCBnZXRUaGVtZURh
dGEocmVuZGVyZXIpLCBidXR0b25SZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTg5
Miw3ICs4OTIsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogCiAgICAgc3RhdGljIEltYWdl
KiBjYW5jZWxJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2Vs
IikubGVha1JlZigpOwogICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsUHJlc3NlZEltYWdlID0gSW1h
Z2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxQcmVzc2VkIikubGVha1JlZigp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaXNQcmVzc2VkKG8pID8gY2FuY2Vs
UHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5k
cyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoaXNQcmVzc2VkKG8pID8gY2Fu
Y2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJv
dW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05NDAsNyArOTQwLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJPYmplY3QmIG8KICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVu
dEJveC5oZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAgICAgCiAgICAgc3Rh
dGljIEltYWdlKiBtYWduaWZpZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
c2VhcmNoTWFnbmlmaWVyIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUo
KS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05NzUs
NyArOTc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGJvdW5kcy5zZXRZKHBhcmVu
dEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdodCgpICsgMSkgLyAy
KTsKIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllclJlc3VsdHMiKS5sZWFrUmVmKCk7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwgYm91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZShtYWdu
aWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTExMzksMTQgKzExMzksMTQgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJ
bmYKICAgICBpbnQgcmVtYWluaW5nID0gc3RhdGljX2Nhc3Q8aW50PigoMS4wIC0gZWxlbWVudC0+
dmFsdWVSYXRpbygpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5zaXplKCkud2lkdGgoKSkp
OwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZAotICAgIGRyYXdDb250cm9sKHBhaW50SW5m
by5jb250ZXh0LCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwgdGhlbWUsIHJlY3Qp
OworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRlck9iamVjdCwgcHJv
Z3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgcmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBwcm9ncmVz
cyBwb3J0aW9uCiAgICAgSW50UmVjdCBjb21wbGV0ZWRSZWN0KHJlY3QpOwogICAgIGNvbXBsZXRl
ZFJlY3QuY29udHJhY3QocmVtYWluaW5nLCAwKTsKIAogICAgIHRoZW1lLm1fcGFydCA9IFBQX0ZJ
TEw7Ci0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRlck9iamVjdCwgcHJv
Z3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgY29tcGxldGVkUmVjdCk7CisgICAgZHJhd0NvbnRyb2wo
cGFpbnRJbmZvLmNvbnRleHQoKSwgcmVuZGVyT2JqZWN0LCBwcm9ncmVzc0JhclRoZW1lKCksIHRo
ZW1lLCBjb21wbGV0ZWRSZWN0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggNWY3Y2UxY2U3NjlkYzE3NmU3NGJhNzA2
NjQyMzlhNmY4YWI5NGE4Ny4uZTkzNTVhYTljMTVmOTllMGZjMzE4MWU2ZDFmYjQ1NGI5NmM4NzM4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC0xODAsMTEg
KzE4MCwxMSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogCiAgICAgTGF5b3V0UmVjdCBjb250
ZW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29udGVudFJlY3QubW92ZUJ5KHBhaW50
T2Zmc2V0KTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4
dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwog
ICAgIGJvb2wgY2xpcCA9ICFjb250ZW50UmVjdC5jb250YWlucyhyZWN0KTsKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXApOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlwKTsKICAgICBpZiAo
Y2xpcCkKLSAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50UmVjdCk7CisgICAgICAgIGNvbnRl
eHQuY2xpcChjb250ZW50UmVjdCk7CiAKICAgICBpZiAoZGlzcGxheWluZ1Bvc3RlcikKICAgICAg
ICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCByZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCA4ZjBiNmU2MTk0ZTA3NTJkNjY3M2M5MjFlOWRjMmZiNjA3M2Ri
M2YzLi4wNGEwOGQ1ZGVkMDNiZDNlNWQzN2Q5N2FhYzFlNjM2MmQ5MDNlNWQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBS
ZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcgZ2FyYmFnZSBiZXR3
ZWVuIGNvbHVtbnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlmIChmcmFtZVZpZXco
KS5wYWdpbmF0aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCAmJiBwYWludElu
Zm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENv
bG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9y
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBw
YWludE9mZnNldCk7CiB9CkBAIC02MTMsMTIgKzYxMywxMiBAQCB2b2lkIFJlbmRlclZpZXc6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JikKICAgICAgICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXcoKS5k
b2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3Ig
PSAoYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgJiYgZG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3KCku
YmFzZUJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmFscGhh
KCkpIHsKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBw
YWludEluZm8uY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBiYWNr
Z3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CisgICAg
ICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gcGFpbnRJbmZvLmNv
bnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dyb3VuZENv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xlYXJSZWN0KHBhaW50SW5mby5y
ZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xlYXJSZWN0KHBhaW50SW5m
by5yZWN0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5jcHAKaW5kZXggYWM3Yzg4ODJjZmM1ODIzNjEzNTBhY2NjOTg3MTNmMTE4YmMxYjI1My4uOTk0
Y2IwYzJjZjZmZmU3ODI4NjdmNTJkMWYyY2E5MzQ3MDQyZWNkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIyOCwxNCArMjI4LDE0IEBAIHZvaWQgUmVu
ZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPCiAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9z
aXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29t
cG9zaXRpbmcgbGF5ZXIsCiAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0
IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8g
Zml4IHBsdWctaW4gZHJhd2luZy4KICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygp
KSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZz
ZXQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh3aWRnZXRQYWludE9m
ZnNldCk7CiAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNldCk7CiAgICAg
fQogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jb2xzaW5nL2ludGVncmFsIHNu
YXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVsIHNuYXBwZWQuCi0g
ICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVkSW50UmVjdChwYWlu
dFJlY3QpKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBl
ZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVy
bygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13aWRnZXRQYWludE9m
ZnNldCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC13aWRnZXRQYWlu
dE9mZnNldCk7CiAKICAgICBpZiAoaXM8RnJhbWVWaWV3PigqbV93aWRnZXQpKSB7CiAgICAgICAg
IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpOwpA
QCAtMjc1LDI2ICsyNzUsMjYgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgLy8gUHVzaCBhIGNsaXAgaWYgd2UgaGF2ZSBhIGJvcmRlciByYWRp
dXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhlIGZvcmVncm91bmQgY29udGVudCB0aGF0IGdl
dHMgcGFpbnRlZC4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qgcm91
bmRlZElubmVyUmVjdCA9IEZsb2F0Um91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJC
b3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAgIHBhZGRpbmdUb3AoKSArIGJvcmRlclRv
cCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSwgcGFkZGluZ0xlZnQoKSArIGJv
cmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpLCB0cnVlLCB0cnVlKSk7
Ci0gICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5jb250ZXh0LCBib3JkZXJS
ZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKKyAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFp
bnRJbmZvLmNvbnRleHQoKSwgYm9yZGVyUmVjdCwgcm91bmRlZElubmVyUmVjdCk7CiAgICAgfQog
CiAgICAgaWYgKG1fd2lkZ2V0KQogICAgICAgICBwYWludENvbnRlbnRzKHBhaW50SW5mbywgcGFp
bnRPZmZzZXQpOwogCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpCi0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkucmVzdG9yZSgpOwogCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2Fz
aCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1l
bnQoKS5wcmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMg
aW4gYWJzb2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgp
KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAg
ICB9CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5SZXNpemUoKSkKLSAgICAg
ICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBhaW50SW5mby5yZWN0KTsKKyAgICAgICAgbGF5ZXIo
KS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0KCksIHJvdW5kZWRJbnRQb2ludChhZGp1
c3RlZFBhaW50T2Zmc2V0KSwgcGFpbnRJbmZvLnJlY3QpOwogfQogCiB2b2lkIFJlbmRlcldpZGdl
dDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggMzlmOTc5ZDYzMzVmMzk4YzlkNzhi
NDEzNGY4M2FmZWJlZWIwN2NhMS4uYzlmMGEwODI1ODUyYTQ1YTQ0OTNhZmU3MzJjYTZhZDM3YzIx
ZjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAt
NDc1LDcgKzQ3NSw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25HYXAo
UmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgICAgICAgICAg
TGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qo
cm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAgICAgICAgICAgICAg
IGlmIChpc1ByZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2FwUmVjdC53aWR0aCgpID4gMCAmJiBnYXBS
ZWN0LmhlaWdodCgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAocGFpbnRJbmZvICYm
IGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJM
RSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3Qo
Z2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29s
b3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChnYXBS
ZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbiBtYXkgYmUgbm9uLWNvbnRpZ3VvdXMs
IHNlZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAgICAgICAgICByZXN1bHQudW5pdGVDZW50
ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDU5ZDFhN2Rl
NTY3NDcxMjdiMzAzNDU3NThhYzI2YTZmMWNjMTYxYTIuLmYxYzZiMTBlN2JkZGMyMzAxNmFjMDY1
MjVhZmEyNGY5MzkxM2EzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBw
YWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91
dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIGJvb2wgZGVidWdCb3JkZXJzRW5hYmxlZCA9IGZsb3cu
ZnJhbWUoKS5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCk7
CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAgICAgVGV4dFBh
aW50U3R5bGUgdGV4dFBhaW50U3R5bGUgPSBjb21wdXRlVGV4dFBhaW50U3R5bGUoZmxvdy5mcmFt
ZSgpLCBzdHlsZSwgcGFpbnRJbmZvKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoY29udGV4dCwgdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKaW5kZXggN2FhNTRmYjhjMjEzZDAzOGUxOTgzMWJkOTI1MTEwYTE4N2NlNGU0Zi4uYjZkZTc5
ZThiMjQ2NTk5ZmQyYTQ1OTI0Yzc2OTRhMjE3YTg4YjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTk1LDMz
ICs5NSwzMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJGbGV4aWJsZUJv
eDo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmIChpbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
KQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UG9p
bnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxv
Y2F0aW9uKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpp
bmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihp
bmZvLmNvbnRleHQoKSk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25l
c3MoMS4wZik7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7
Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xv
clNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYp
OworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNl
U1JHQik7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zm
c2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNl
dFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7Ci0gICAgaW5mby5jb250ZXh0LT5k
cmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9m
ZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7Ci0gICAgaW5mby5jb250
ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSksIEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0
ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOwotICAgIGlu
Zm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0
ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVk
T2Zmc2V0SGVpZ2h0KCkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBh
aW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBl
ZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7CisgICAgaW5mby5jb250
ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNu
YXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSksIEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0
ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOworICAgIGlu
Zm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSwgSW50
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgp
LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7
CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4
ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKICAgICAKICAgICBpbnQgdG9wU3RhcnQgPSBwYWRk
aW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigw
LCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8u
Y29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVz
dGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpICsgdG9wU3RhcnQpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChh
ZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFy
dCksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCkpOwogICAgIAogICAg
IGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFz
ZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZVNS
R0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWlu
dE9mZnNldC55KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBi
YXNlbGluZSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAppbmRleCA1MWYxNjhlYWViZjZhMmQ4YjNkZGZiN2EwNDE1YTc3NDI0ODJkMzA1
Li41MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3ZjA2NWQyZDdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmxheW91
dCgpCiB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludEluZm8mIGluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJNYXRoTUxCbG9jazo6
cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50
aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0
eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBSZW5kZXJCb3gqIGRlbm9taW5hdG9yV3JhcHBlciA9IGxhc3RDaGlsZEJveCgpOwpAQCAtMTUw
LDEyICsxNTAsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKIAogICAgIEludFBvaW50IGFk
anVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlv
bigpICsgZGVub21pbmF0b3JXcmFwcGVyLT5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMCwgbV9s
aW5lVGhpY2tuZXNzIC8gMikpOwogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xv
cihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JT
cGFjZVNSR0IpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNl
dCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsg
ZGVub21pbmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9saW5lVGhpY2tu
ZXNzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBkZW5vbWluYXRvcldyYXBwZXItPm9mZnNl
dFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBPcHRpb25hbDxpbnQ+
IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3Nl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwCmluZGV4IDE3NDY4YzExOTkzMDRhNzBkNjdiNzUwMGJlMmRiNzQwNzVkNDJlNzUuLmI4
NmUzNjI5YTZiNzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1NDc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3Bw
CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiB7CiAgICAgUmVuZGVy
TWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAgIGlmIChpbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8u
Y29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VG
b3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICBNYXRoTUxNZW5jbG9zZUVsZW1lbnQqIG1lbmNsb3NlID0gZG93bmNh
c3Q8TWF0aE1MTWVuY2xvc2VFbGVtZW50PihlbGVtZW50KCkpOwpAQCAtMTE0LDIzICsxMTQsMjMg
QEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgaW50IGhhbGZib3hXaWR0aCA9IHJl
Y3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIGludCBoYWxmYm94SGVpZ2h0ID0gcmVjdC5oZWlnaHQo
KSAvIDI7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpp
bmZvLmNvbnRleHQpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0g
ICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwor
ICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7CisgICAgICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAvLyBUT0RPIGFk
ZCBzdXBwb3J0IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAgICAgICAgaWYgKG5v
dGF0aW9uVmFsdWVzW2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBp
bmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGJveEhlaWdodCksIElu
dFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wKSk7CisgICAgICAgICAgICAgICAgaW5mby5jb250
ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgYm94SGVpZ2h0KSwgSW50UG9pbnQo
bGVmdCArIGJveFdpZHRoLCB0b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFs
dWVzW2ldID09ICJkb3duZGlhZ29uYWxzdHJpa2UiKQotICAgICAgICAgICAgICAgIGluZm8uY29u
dGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQobGVmdCArIGJveFdp
ZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5k
cmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRv
cCArIGJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0g
PT0gInZlcnRpY2Fsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdM
aW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCksIEludFBvaW50KGxlZnQgKyBo
YWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOworICAgICAgICAgICAgICAgIGluZm8uY29u
dGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCksIEludFBv
aW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwogICAgICAgICAgICAg
ZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImhvcml6b250YWxzdHJpa2UiKQotICAgICAg
ICAgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgaGFs
ZmJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wICsgaGFsZmJveEhlaWdo
dCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCAr
IGhhbGZib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ld
ID09ICJjaXJjbGUiKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAg
ICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNlKHJlY3QpOworICAgICAgICAgICAgICAgIGlu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdFbGxpcHNlKHJl
Y3QpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAibG9uZ2Rp
diIpCiAgICAgICAgICAgICAgICAgaXNEZWZhdWx0TG9uZ0RpdiA9IHRydWU7CiAgICAgICAgIH0K
QEAgLTE0NCw5ICsxNDQsOSBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIG1pZHhQb2ludCA9IHN0eWxlKCkucGFkZGluZ0xlZnQoKS52
YWx1ZSgpOwogICAgICAgICAgICAgcm9vdC5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQobGVm
dCwgdG9wKSwgRmxvYXRQb2ludChsZWZ0ICsgbWlkeFBvaW50LCB0b3AgKyBoYWxmYm94SGVpZ2h0
KSwgRmxvYXRQb2ludChsZWZ0LCB0b3AgKyBib3hIZWlnaHQpKTsKLSAgICAgICAgICAgIGluZm8u
Y29udGV4dC0+c3Ryb2tlUGF0aChyb290KTsKKyAgICAgICAgICAgIGluZm8uY29udGV4dCgpLnN0
cm9rZVBhdGgocm9vdCk7CiAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0TG9uZ0RpdikKLSAgICAg
ICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCksIElu
dFBvaW50KGxlZnQgKyBib3hXaWR0aCArIG1pZHhQb2ludCwgdG9wKSk7CisgICAgICAgICAgICAg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQo
bGVmdCArIGJveFdpZHRoICsgbWlkeFBvaW50LCB0b3ApKTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
T3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAKaW5kZXggOTM4ZjZiYzhlMGQwZjU5YzQ3MzJjOTkzMWM4NTgyMzIxY2Vj
ZTdkYS4uM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTljZGMxN2U0OTIyYzFhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAKQEAgLTE3OTcsMTIgKzE3OTcsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJNYXRoTUxP
cGVyYXRvcjo6cGFpbnRHbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0IEdseXBoRGF0YSYgZGEK
ICAgICB9CiAKICAgICAvLyBDbGlwcGluZyB0aGUgZW5jbG9zaW5nIEludFJlY3QgYXZvaWRzIGFu
eSBwb3RlbnRpYWwgaXNzdWVzIGF0IGpvaW5lZCBlZGdlcy4KLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5mby5jb250ZXh0LT5j
bGlwKGNsaXBCb3VuZHMpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihpbmZvLmNvbnRleHQoKSk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsK
IAogICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKICAgICBidWZmZXIuYWRkKGRhdGEuZ2x5cGgsIGRh
dGEuZm9udCwgYWR2YW5jZUZvckdseXBoKGRhdGEpKTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdH
bHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9y
aWdpbik7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRl
KCksICpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luKTsKIAogICAgIHJldHVybiBnbHlw
aFBhaW50UmVjdDsKIH0KQEAgLTE4MTgsNyArMTgxOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWludEluZm8mIGluZm8sIGNv
bnN0CiAgICAgaWYgKGZyb20ueSgpID09IHRvLnkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAK
ICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0
YS5leHRlbnNpb24oKSk7CiAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1M
T3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWludEluZm8mIGluZm8s
IGNvbnN0CiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0OwogICAgIGNsaXBC
b3VuZHMuc2hpZnRZRWRnZVRvKGZyb20ueSgpKTsKICAgICBjbGlwQm91bmRzLnNoaWZ0TWF4WUVk
Z2VUbyh0by55KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJpbW1pbmcgbWF5IHJl
bW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIHRvcCBvZiB0aGUgZXh0ZW5kZXIgZ2x5cGgs
IHNvIHdlIG1vdmUgaXQgdXAgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBvZmZzZXRUb0dseXBo
VG9wID0gZ2x5cGhCb3VuZHMueSgpICsgMjsKQEAgLTE4NTYsMTQgKzE4NTYsMTQgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgoUGFp
bnRJbmZvJiBpbmZvLCBjb24KICAgICBpZiAoZnJvbS54KCkgPT0gdG8ueCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8u
Y29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8u
Y29udGV4dCgpKTsKIAogICAgIC8vIENsaXBwaW5nIHRoZSBleHRlbmRlciByZWdpb24gaGVyZSBh
bGxvd3MgdXMgdG8gZHJhdyB0aGUgYm90dG9tIGV4dGVuZGVyIGdseXBoIGludG8gdGhlCiAgICAg
Ly8gcmVnaW9ucyBvZiB0aGUgYm90dG9tIGdseXBoIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgb3Zl
cmRyYXcgKGhhaXJ5IHBpeGVscykgYW5kIHNpbXBsaWZpZXMgbGF0ZXIgY2xpcHBpbmcuCiAgICAg
TGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0OwogICAgIGNsaXBCb3VuZHMuc2hpZnRY
RWRnZVRvKGZyb20ueCgpKTsKICAgICBjbGlwQm91bmRzLnNoaWZ0TWF4WEVkZ2VUbyh0by54KCkp
OwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJpbW1pbmcgbWF5IHJlbW92ZSB1cCB0byB0
d28gcGl4ZWxzIGZyb20gdGhlIGxlZnQgb2YgdGhlIGV4dGVuZGVyIGdseXBoLCBzbyB3ZSBtb3Zl
IGl0IGxlZnQgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBvZmZzZXRUb0dseXBoTGVmdCA9IC0y
OwpAQCAtMTg4NSwxMSArMTg4NSwxMSBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWlu
dChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogewogICAg
IFJlbmRlck1hdGhNTFRva2VuOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAKLSAgICBpZiAo
aW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBo
YXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IG1fc3Ry
ZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5w
YWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8
fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IG1fc3RyZXRjaHlEYXRhLm1vZGUo
KSA9PSBEcmF3Tm9ybWFsKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5mby5jb250ZXh0LT5z
ZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxD
b2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBE
cmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQo
KS5nbHlwaCk7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9y
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAog
ICAgICAgICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBjZWlsZWRJbnRQb2ludChwYWlu
dE9mZnNldCArIGxvY2F0aW9uKCkpOwogICAgICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBi
b3VuZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogICAgICAgICBMYXlvdXRQ
b2ludCBvcGVyYXRvck9yaWdpbihvcGVyYXRvclRvcExlZnQueCgpLCBvcGVyYXRvclRvcExlZnQu
eSgpIC0gZ2x5cGhCb3VuZHMueSgpKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3R2x5cGhz
KHN0eWxlKCkuZm9udENhc2NhZGUoKSwgKm1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKS5mb250LCBi
dWZmZXIsIDAsIDEsIG9wZXJhdG9yT3JpZ2luKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuZHJh
d0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICptX3N0cmV0Y2h5RGF0YS52YXJpYW50KCku
Zm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAppbmRleCBkZjE0YTg5OGQ2NWNjODlk
Y2NjMmQ2MWZhNWEwYmQ5MDdmZWQyMTJhLi5iNjkyZjc0NjllZjY2MzkzOWFhMzYyODk0Yzg2NTYz
ZWEwMGI0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwKIAogdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2Fs
T3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogewotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBp
bmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8
fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzdHlsZSgpLmZvbnRD
YXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpKSB7CkBAIC0xMjksMTMgKzEyOSwxMyBA
QCB2b2lkIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIEZsb2F0UG9pbnQgZGlwTGVmdFBvaW50KHN0
YXJ0WCAtIGdSYWRpY2FsRGlwTGVmdFBvaW50WEZyb250ICogZnJvbnRXaWR0aCwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkgKyByYWRpY2FsRGlwTGVmdFBvaW50WVBvcyk7CiAgICAgRmxvYXRQb2lu
dCBsZWZ0RW5kKHN0YXJ0WCAtIGZyb250V2lkdGgsIGRpcExlZnRQb2ludC55KCkgKyBnUmFkaWNh
bExlZnRFbmRZU2hpZnRFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKLSAgICBpbmZv
LmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgKiBz
dHlsZSgpLmZvbnRTaXplKCkpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIGluZm8uY29udGV4dC0+c2V0TGluZUpvaW4oTWl0ZXJKb2luKTsKLSAgICBpbmZvLmNv
bnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUo
KS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0
cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGluZm8uY29udGV4dCgpLnNldExpbmVKb2luKE1pdGVySm9pbik7CisgICAgaW5mby5jb250
ZXh0KCkuc2V0TWl0ZXJMaW1pdChzdHlsZSgpLmZvbnRTaXplKCkpOwogCiAgICAgUGF0aCByb290
OwogCkBAIC0xNDcsOSArMTQ3LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6
OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAvLyBk
cmF3IHRvIGVuZAogICAgIHJvb3QuYWRkTGluZVRvKGxlZnRFbmQpOwogCi0gICAgaW5mby5jb250
ZXh0LT5zdHJva2VQYXRoKHJvb3QpOworICAgIGluZm8uY29udGV4dCgpLnN0cm9rZVBhdGgocm9v
dCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIG1hc2tTdGF0ZVNhdmVyKCppbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgbWFza1N0YXRlU2F2ZXIo
aW5mby5jb250ZXh0KCkpOwogCiAgICAgLy8gQnVpbGQgYSBtYXNrIHRvIGRyYXcgdGhlIHRoaWNr
IHBhcnQgb2YgdGhlIHJvb3QuCiAgICAgUGF0aCBtYXNrOwpAQCAtMTU5LDE3ICsxNTksMTcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBtYXNrLmFkZExpbmVUbyhkaXBMZWZ0UG9pbnQp
OwogICAgIG1hc2suYWRkTGluZVRvKEZsb2F0UG9pbnQoMiAqIGRpcExlZnRQb2ludC54KCkgLSBs
ZWZ0RW5kLngoKSwgMiAqIGRpcExlZnRQb2ludC55KCkgLSBsZWZ0RW5kLnkoKSkpOwogCi0gICAg
aW5mby5jb250ZXh0LT5jbGlwKG1hc2spOworICAgIGluZm8uY29udGV4dCgpLmNsaXAobWFzayk7
CiAKICAgICAvLyBEcmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSByb290LgotICAgIGluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzRW1zICog
c3R5bGUoKS5mb250U2l6ZSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldExpbmVDYXAoU3F1YXJl
Q2FwKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxUaGlj
a0xpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOworICAgIGluZm8uY29udGV4
dCgpLnNldExpbmVDYXAoU3F1YXJlQ2FwKTsKIAogICAgIFBhdGggbGluZTsKICAgICBsaW5lLm1v
dmVUbyhib3R0b21Qb2ludCk7CiAgICAgbGluZS5hZGRMaW5lVG8oZGlwTGVmdFBvaW50KTsKIAot
ICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChsaW5lKTsKKyAgICBpbmZvLmNvbnRleHQoKS5z
dHJva2VQYXRoKGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCBlYmUyZDM3MzU3Y2QxZTg2OWIx
YzllYzNiZWMxMDFkYzExYjliMmFlLi5hYzRhMTVkZDg0YTQ5MzQ0MmYzNDU5YzVhNDUwMjEzMTRh
MDE3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJv
b3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAg
ICAgCi0gICAgaWYgKGlzRW1wdHkoKSB8fCBpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpc0VtcHR5KCkg
fHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYmFzZSA9IGJhc2VX
cmFwcGVyKCk7CkBAIC0zMjgsMTYgKzMyOCwxNiBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBh
aW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkcmF3IHRoZSByYWRpY2FsIGxpbmUuCi0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKLSAg
ICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOwotICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNl
dFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOworICAgIGluZm8uY29udGV4dCgpLnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBUaGUgcHJlZmVycmVkIHdpZHRoIG9mIHRoZSBy
YWRpY2FsIGlzIHNvbWV0aW1lcyBpbmNvcnJlY3QsIHNvIHdlIGRyYXcgYSBzbGlnaHRseSBsb25n
ZXIgbGluZSB0byBlbnN1cmUgaXQgdG91Y2hlcyB0aGUgcmFkaWNhbCBzeW1ib2wgKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjYpLgogICAgIExheW91dFVuaXQg
c2l6ZUVycm9yID0gcmFkaWNhbC0+dHJhaWxpbmdTcGFjZUVycm9yKCk7CiAgICAgSW50UG9pbnQg
YWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxvY2F0
aW9uKCkgKyBiYXNlLT5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoLXNpemVFcnJvciwgLShtX3Zl
cnRpY2FsR2FwICsgbV9ydWxlVGhpY2tuZXNzIC8gMikpKTsKLSAgICBpbmZvLmNvbnRleHQtPmRy
YXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChh
ZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkgKyBzaXplRXJyb3Is
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5l
KGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3Rl
ZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkgKyBzaXplRXJyb3IsIGFkanVz
dGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdy
YXBwZXI+IFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyOjpjcmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJl
bmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKaW5kZXggNThlYjllMjQwNjc2YTExNGRjMWI5NzY4Nzc1NjM0MmIzOTJm
Yjk2OS4uNjkyMjI4MTkxOGM0ODMxZTcyOTk1M2I2MjAyOTEyODgyOGQ1MThmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4Miw4ICsxODIsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1h
Z2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCkpOwogCiAg
ICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQo
KSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJh
eT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50
UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIHVuc2lnbmVkIHBp
eGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4IGExZjEwMzAwNGFi
NzhiYzMyNzE1NzdjMGYxMGVkNDYzYjg4NTNkYTUuLmIxMzc0ZTA4YjEwODQzNGRhZGU1MzJkNGRm
MTIwZGY3NzM0MWQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFZlY3RvcjxGbG9hdFNpemU+
IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlTm9uSW50cmluc2ljVGlsZVNjYWxlcygpCiAgICAgcmV0
dXJuIFZlY3RvcjxGbG9hdFNpemU+KE1heFBpZWNlLCBGbG9hdFNpemUoMSwgMSkpOwogfQogCi12
b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgIGJv
b2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApIGNvbnN0Cit2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91
dFNpemUmIHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0CiB7CiAgICAgU3R5bGVJbWFnZSogc3R5
bGVJbWFnZSA9IGltYWdlKCk7CiAgICAgQVNTRVJUKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+
aXNMb2FkZWQoKSk7CkBAIC0yMzgsMTMgKzIzOCwxMyBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpw
YWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVu
ZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29ybmVyUGllY2UocGll
Y2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQo
KSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNl
XSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQo
KSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNl
XSwgb3ApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2Fz
dDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxl
OwogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2Up
ID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6
U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0
c1twaWVjZV0sIHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBk
ZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3Bp
ZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IDRiZWYxYWY4N2NlNGQ1MzMy
OTNkMDBlMzE4NTQ1MzQ5ZGFkMWQwN2YuLjljMzJlNWNhYTQyMWVjN2ZiMmE0OTljMzZhNzk4NTI0
NmRjZWI1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5l
UGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBWZWN0b3I8
RmxvYXRTaXplPiBjb21wdXRlSW50cmluc2ljVGlsZVNjYWxlcyhjb25zdCBWZWN0b3I8RmxvYXRS
ZWN0PiYgZGVzdGluYXRpb25SZWN0cywgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHNvdXJjZVJl
Y3RzLCBFTmluZVBpZWNlSW1hZ2VSdWxlIGhSdWxlLCBFTmluZVBpZWNlSW1hZ2VSdWxlIHZSdWxl
KTsKICAgICBzdGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4gY29tcHV0ZU5vbkludHJpbnNpY1RpbGVT
Y2FsZXMoKTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyRWxlbWVu
dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IExheW91dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRyaW5zaWNTb3VyY2UsIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yLCBDb21wb3NpdGVPcGVyYXRvcikgY29uc3Q7CisgICAgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBMYXlvdXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc291cmNlLCBib29s
IGludHJpbnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJh
dG9yKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRhUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4g
bV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCmluZGV4IDgyMDdkZjQxOWJmMmFjMWIxODBmZDk4ZmNiMWI4MGM1MmU5Zjc1
MTQuLjM4ZWZiMmM5OTRjNmNlMzlkMmJiMGUyOTkwODY2N2Q1NGY5ZTBjOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAg
LTEwOCw3ICsxMDgsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6c2VsZldpbGxQYWludCgp
CiAKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlYzogZ3JvdXBzIHcvbyBjaGlsZHJl
biBzdGlsbCBtYXkgcmVuZGVyIGZpbHRlciBjb250ZW50LgpAQCAtMTIxLDcgKzEyMSw3IEBAIHZv
aWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmKQogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7
CiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNo
aWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY2hpbGRQYWludEluZm8uY29udGV4dCgpKTsKIAogICAgICAgICAvLyBMZXQg
dGhlIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIHN1YmNsYXNzIGNsaXAgaWYgbmVjZXNzYXJ5
CiAgICAgICAgIGFwcGx5Vmlld3BvcnRDbGlwKGNoaWxkUGFpbnRJbmZvKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCmluZGV4IGNiNmQ5
YzM3Yzg2M2I3M2VkZjNmOTUwZmUwOGJlYjgxM2MwNjFjMzUuLmZhZTM3MWFlY2ZkZTgxZWFiNzdi
ZTQ5NGYxMzk5ODY1NGViYTcwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcApAQCAtOTMsMTYgKzkzLDE2IEBAIHZvaWQgUmVuZGVy
U1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKQogICAgICAgICBsZW5ndGhDb250
ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgpLCBMZW5ndGhNb2RlSGVp
Z2h0KSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV91c2VQYXRoRmFsbGJh
Y2spIHsKICAgICAgICAgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb250ZXh0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5maWxsRWxsaXBzZShtX2ZpbGxCb3VuZGlu
Z0JveCk7CisgICAgY29udGV4dC5maWxsRWxsaXBzZShtX2ZpbGxCb3VuZGluZ0JveCk7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFz
VmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9p
ZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
IGNvbnN0CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShjb250ZXh0KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5zdHJva2VFbGxpcHNlKG1fZmlsbEJv
dW5kaW5nQm94KTsKKyAgICBjb250ZXh0LnN0cm9rZUVsbGlwc2UobV9maWxsQm91bmRpbmdCb3gp
OwogfQogCiBib29sIFJlbmRlclNWR0VsbGlwc2U6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IGI1ODdkMWFiMzMxNDcwMzIzMmY1ZDBlMDlj
MTc4Y2I1NWE5Y2I1MjYuLjlhNmZjMTJjZGVkYWJhMTU1MjVjNDRkYmE4OTNlOGNmNTllNmI0NzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5o
CkBAIC00Miw4ICs0Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6Omlz
RW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29u
c3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVu
dEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgY2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3Bw
CmluZGV4IDQ2OTg5MDdkZjk4ZTY5MjMxNTY0MjZkMTYyNTI0ZDAwYTdiNDBmZjUuLmI4NzkxYWU0
MDIzNDA0ZTJjYmMxMzJmNWRkYTE0MjY5ZTBkMmE3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtNTMs
MTggKzUzLDE4IEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0Ojpmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikK
IHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsK
IAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8uY29udGV4dCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obG9jYWxUcmFuc2Zv
cm0oKSk7CiAKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhp
cykpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7Cisg
ICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKG1fdmlld3BvcnQpOwogCiAgICAg
U1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwogICAgIGlmIChwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTAyMTY3OTgxMTMzZGNmY2E2ZTFl
NmUyNTQ4N2EzOTVlM2FhZDVjZi4uYjhhMTk2ZTk1MTM3MDFkNTZhYmVhNmI5MmNmYWQ0ZWQzMDNh
YzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQog
CiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZAorICAgIGlm
IChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKICAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gSElEREVOIHx8ICFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNDAsMTQgKzE0MCwxNCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICByZXR1cm47
CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGlsZFBhaW50SW5mby5j
b250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKG1fbG9jYWxUcmFu
c2Zvcm0pOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKSB7CiAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCgq
dGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAgIGlmIChyZW5kZXJpbmdDb250ZXh0Lmlz
UmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUo
KS5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NUQVRJQyAgJiYgcmVuZGVyaW5nQ29udGV4dC5i
dWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKKyAgICAgICAgICAgIGlmIChz
dHlsZSgpLnN2Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJpbmcoKSA9PSBCUl9TVEFUSUMgJiYgcmVu
ZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZChjaGls
ZFBhaW50SW5mbyk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFp
bnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiAgICAgaW1hZ2VFbGVtZW50KCku
cHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwog
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3Jj
UmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZmZXJlZEZvcmVn
cm91bmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5j
cHAKaW5kZXggOGU0MGQ4YmU5NTI3OGYyOWU2NmU3NmI2MTY3ZTY0YzBkYzQ5MjVkNi4uMWQwMTNh
ZDdjMWUwZThjNDAxNDAwODY4YTI3MjU5M2FiYWNhMmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02NCwxNyArNjQsMTcgQEAgRmxv
YXRSZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0cm9rZUJvdW5kaW5nQm94OwogfQogCi1zdGF0aWMgdm9pZCB1
c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgdm9p
ZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
aWYgKEdyYWRpZW50KiBncmFkaWVudCA9IGNvbnRleHQtPnN0cm9rZUdyYWRpZW50KCkpCi0gICAg
ICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOwotICAgIGVsc2UgaWYgKFBh
dHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0gICAgICAgIGNvbnRl
eHQtPnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKKyAgICBpZiAoR3JhZGllbnQqIGdyYWRpZW50
ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQorICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFk
aWVudCgqZ3JhZGllbnQpOworICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0
LnN0cm9rZVBhdHRlcm4oKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqcGF0dGVy
bik7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29udGV4dC0+c3Ry
b2tlQ29sb3IoKSwgY29udGV4dC0+c3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoY29udGV4dC5zdHJva2VDb2xvcigpLCBjb250ZXh0LnN0cm9rZUNvbG9y
U3BhY2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0
eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MCwxMyArOTAs
MTMgQEAgdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpIGNvbnN0CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkKICAgICAgICAgbm9u
U2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgdHJ1ZSk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIHRydWUpOwogICAg
IHVzZVN0cm9rZVN0eWxlVG9GaWxsKGNvbnRleHQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV96ZXJvTGVuZ3RoTGluZWNhcExvY2F0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICB1
c2VQYXRoID0gemVyb0xlbmd0aExpbmVjYXBQYXRoKG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlv
bnNbaV0pOwogICAgICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgpKQogICAgICAgICAgICAg
dXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKHVzZVBhdGgsIG5vblNjYWxpbmdUcmFuc2Zv
cm0pOwotICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqdXNlUGF0aCk7CisgICAgICAgIGNvbnRl
eHQuZmlsbFBhdGgoKnVzZVBhdGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCAwOGQ4OTExOWViYmFjMTliMTVlMDZhZmVj
YzdjNWVlMzQyYzA0OTI5Li5iYmQyMmRjNWIwY2I5Yjg1YzEyZTgxMGJlYjA0NDQxYzI5ZDg3Njhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAt
NDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VC
b3VuZGluZ0JveCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBo
aWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFw
ZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hh
cGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAK
ICAgICBib29sIHNob3VsZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAppbmRleCAwM2ZiYmI5
ZDUwODkzYzI1Njc4NTVjYmUxYTIzYjI2YTYyMWEyODg3Li5jYmM4OGY3ZjY2OTBhOTVjZWU5YjM2
MzE3MWQyOTU2ZTc4ZjA2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1JlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1
cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKICNlbmRpZgogfQogCi12b2lkIFJlbmRlclNWR1JlY3Q6
OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2b2lkIFJlbmRlclNW
R1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAg
aWYgKG1fdXNlUGF0aEZhbGxiYWNrKSB7CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hh
cGUoY29udGV4dCk7CkBAIC0xMDksMTggKzEwOSwxOCBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OmZp
bGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgLy8gc2hhZG93IGRy
YXdpbmcgbWV0aG9kLCB3aGljaCBkcmF3cyBhbiBleHRyYSBzaGFkb3cuCiAgICAgLy8gVGhpcyBp
cyBhIHdvcmthcm91bmQgZm9yIHN3aXRjaGluZyBvZmYgdGhlIGV4dHJhIHNoYWRvdy4KICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4OTkKLSAgICBpZiAo
Y29udGV4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsK
LSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gpOworICAgIGlmIChj
b250ZXh0Lmhhc1NoYWRvdygpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOworICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICNlbmRpZgogCi0gICAgY29udGV4dC0+ZmlsbFJlY3QobV9maWxsQm91bmRpbmdC
b3gpOworICAgIGNvbnRleHQuZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gpOwogfQogCi12b2lk
IFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29u
c3QKK3ZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1Zpc2libGVTdHJv
a2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyU1ZH
UmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC0+c3Ryb2tlUmVjdChtX2ZpbGxCb3VuZGlu
Z0JveCwgc3Ryb2tlV2lkdGgoKSk7CisgICAgY29udGV4dC5zdHJva2VSZWN0KG1fZmlsbEJvdW5k
aW5nQm94LCBzdHJva2VXaWR0aCgpKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdSZWN0OjpzaGFwZURl
cGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCA5NzAzMDFhYTc5ZjVj
M2RlMmViMzI4NmQzMGQxM2Y1ZGViNDE0ODlmLi4wMjZlZTYzMDliNTkxZWMxZjBjMzVjZDYzMjE1
Nzk1Mjc5MmU0ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1JlY3QuaApAQCAtNDgsOCArNDgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHko
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1No
YXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRh
aW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVE
ZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBj
b25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDhiOWE2Mjg5ZTI4MjA1Yzkw
YjFlMDRlM2M3ZDQ4YmQ1YTE4NWZhNTguLjVlNDc3NWJlMGI2YTAwNGM2ZjVjNjI2YWMzNDFhMzJi
OTFlNTdlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgY29uc3QgUmVuZAogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKLSAg
ICByZXR1cm4gYXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlciwgcmVuZGVyZXIub2JqZWN0
Qm91bmRpbmdCb3goKSwgcmVuZGVyZXIucmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSwg
Y29udGV4dCk7CisgICAgcmV0dXJuIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQocmVuZGVyZXIsIHJl
bmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCksIHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENv
b3JkaW5hdGVzKCksICpjb250ZXh0KTsKIH0KIAotYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgb2Jq
ZWN0Qm91bmRpbmdCb3gpCitib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0Jv
eCkKIHsKICAgICAvLyBJZiB0aGUgY3VycmVudCBjbGlwLXBhdGggZ2V0cyBjbGlwcGVkIGl0c2Vs
Ziwgd2UgaGF2ZSB0byBmYWxsYmFjayB0byBtYXNraW5nLgogICAgIGlmICghc3R5bGUoKS5zdmdT
dHlsZSgpLmNsaXBwZXJSZXNvdXJjZSgpLmlzRW1wdHkoKSkKQEAgLTEyMywxMiArMTIzLDExIEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAvLyBUaGUgU1ZHIHNwZWNpZmljYXRpb24gd2Fu
dHMgdXMgdG8gY2xpcCBldmVyeXRoaW5nLCBpZiBjbGlwLXBhdGggZG9lc24ndCBoYXZlIGEgY2hp
bGQuCiAgICAgaWYgKGNsaXBQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgY2xpcFBhdGguYWRkUmVj
dChGbG9hdFJlY3QoKSk7Ci0gICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgsIGNsaXBSdWxl
KTsKKyAgICBjb250ZXh0LmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwUnVsZSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5n
VG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIG9iamVj
dEJvdW5kaW5nQm94LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0
Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBjbGlwcGVyTWFza0ltYWdlID0g
YWRkUmVuZGVyZXJUb0NsaXBwZXIocmVuZGVyZXIpOwogICAgIGJvb2wgc2hvdWxkQ3JlYXRlQ2xp
cHBlck1hc2tJbWFnZSA9ICFjbGlwcGVyTWFza0ltYWdlOwpAQCAtMTQ1LDE3ICsxNDQsMTUgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKICAgICAgICAgaWYgKCFjbGlwcGVyTWFza0ltYWdlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFz
a0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIEFTU0VSVCht
YXNrQ29udGV4dCk7Ci0KLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENUTShhbmltYXRlZExv
Y2FsVHJhbnNmb3JtKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNs
aXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgbWFza0NvbnRleHQuY29uY2F0Q1RN
KGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIGNsaXBQYXRoIGNhbiBhbHNv
IGJlIGNsaXBwZWQgYnkgYW5vdGhlciBjbGlwUGF0aC4KICAgICAgICAgYXV0byogcmVzb3VyY2Vz
ID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKCp0aGlzKTsK
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyOwogICAgICAgICBib29s
IHN1Y2NlZWRlZDsKICAgICAgICAgaWYgKHJlc291cmNlcyAmJiAoY2xpcHBlciA9IHJlc291cmNl
cy0+Y2xpcHBlcigpKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCptYXNrQ29udGV4dCk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIobWFza0NvbnRleHQpOwogCiAgICAgICAgICAgICBpZiAoIWNsaXBw
ZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoKnRoaXMsIG9iamVjdEJvdW5kaW5nQm94LCByZXBh
aW50UmVjdCwgbWFza0NvbnRleHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE4MCwxNCArMTc3LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29u
dGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKIHsKICAgICBBU1NFUlQo
Y2xpcHBlck1hc2tJbWFnZSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0g
Y2xpcHBlck1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrQ29udGV4dCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRl
eHQoKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uOwog
ICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVz
OjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIG1hc2tDb250ZW50
VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91
bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi5zY2FsZU5v
blVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVp
Z2h0KCkpOwotICAgICAgICBtYXNrQ29udGV4dC0+Y29uY2F0Q1RNKG1hc2tDb250ZW50VHJhbnNm
b3JtYXRpb24pOworICAgICAgICBtYXNrQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFu
c2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gU3dpdGNoIHRvIGEgcGFpbnQgYmVoYXZpb3Ig
d2hlcmUgYWxsIGNoaWxkcmVuIG9mIHRoaXMgPGNsaXBQYXRoPiB3aWxsIGJlIHJlbmRlcmVkIHVz
aW5nIHNwZWNpYWwgY29uc3RyYWludHM6CkBAIC0yMjYsNyArMjIyLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShjb25zdCBDbGlwcGVy
TWFza0ltYWdlJgogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1NoYXBlKCkgJiYgIXJlbmRl
cmVyLT5pc1NWR1RleHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1hc2tD
b250ZXh0LT5zZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7CisgICAgICAgIG1hc2tDb250ZXh0LnNl
dEZpbGxSdWxlKG5ld0NsaXBSdWxlKTsKIAogICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIDx1
c2U+IGVsZW1lbnQsIHdlIG9idGFpbmVkIGl0cyByZW5kZXJlcmUgYWJvdmUsIHRvIHJldHJpZXZl
IGl0cyBjbGlwUnVsZS4KICAgICAgICAgLy8gV2UgaGF2ZSB0byBwYXNzIHRoZSA8dXNlPiByZW5k
ZXJlciBpdHNlbGYgdG8gcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoKSB0byBhcHBseSBpdCdz
IHgveS90cmFuc2Zvcm0vZXRjLiB2YWx1ZXMgd2hlbiByZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaApp
bmRleCA0NDE1Yjk0YjEzYTYyZGI2ZmJhNjNjZDA2MmZkZDRjODY2OTZiNDVjLi5iNzcwNDk2NTNk
YWNmNDVmYzAxZTUzNmQ5NjBkNTRhMTk2ZjRlZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIC8vIGNsaXBQYXRoIGNhbiBiZSBjbGlwcGVkIHRvbywgYnV0
IGRvbid0IGhhdmUgYSBib3VuZGluZ0JveCBvciByZXBhaW50UmVjdC4gU28gd2UgY2FuJ3QgY2Fs
bAogICAgIC8vIGFwcGx5UmVzb3VyY2UgZGlyZWN0bHkgYW5kIHVzZSB0aGUgcmVjdHMgZnJvbSB0
aGUgb2JqZWN0LCBzaW5jZSB0aGV5IGFyZSBlbXB0eSBmb3IgUmVuZGVyU1ZHUmVzb3VyY2VzCiAg
ICAgLy8gRklYTUU6IFdlIG1hZGUgYXBwbHlDbGlwcGluZ1RvQ29udGV4dCBwdWJsaWMgYmVjYXVz
ZSB3ZSBjYW5ub3QgY2FsbCBhcHBseVJlc291cmNlIG9uIEhUTUwgZWxlbWVudHMgKGl0IGFzc2Vy
dHMgb24gUmVuZGVyT2JqZWN0OjpvYmplY3RCb3VuZGluZ0JveCkKLSAgICBib29sIGFwcGx5Q2xp
cHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgYXBwbHlDbGlwcGluZ1RvQ29u
dGV4dChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
R3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGlu
Z0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgUmVuZGVy
U1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENs
aXBwZXJSZXNvdXJjZVR5cGU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIiOyB9CiAKLSAgICBib29sIHBhdGhPbmx5Q2xpcHBpbmco
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0
Jik7CisgICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGJvb2wgZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIG9i
amVjdEJvdW5kaW5nQm94KTsKICAgICB2b2lkIGNhbGN1bGF0ZUNsaXBDb250ZW50UmVwYWludFJl
Y3QoKTsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBhZGRSZW5kZXJlclRvQ2xpcHBlcihjb25zdCBS
ZW5kZXJPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZTMxODY1ZDgwM2MxM2QxNTBiNTcx
YjYxZGUwNzg2MWIwMjE3MTFmYy4uMDRlYWQxYThiZWE2NGE0YWYzNjMwNmFmZTc1OTE2YjlkMDdj
ODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE5OCwxMyArMTk4LDEyIEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIs
IGNvbnN0IFJlbmRlCiAgICAgLy8gU2V0IHRoZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdl
J3Mgc2V0dGluZ3MuCiAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJl
bmRlcmluZ01vZGUpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4
dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoc291cmNlR3JhcGhpY0Nv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3Vy
Y2VHcmFwaGljLT5jb250ZXh0KCk7CiAgIAogICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNC
dWZmZXIgPSBXVEY6Om1vdmUoc291cmNlR3JhcGhpYyk7CiAgICAgZmlsdGVyRGF0YS0+c2F2ZWRD
b250ZXh0ID0gY29udGV4dDsKIAotICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsK
KyAgICBjb250ZXh0ID0gJnNvdXJjZUdyYXBoaWNDb250ZXh0OwogCiAgICAgQVNTRVJUKCFtX2Zp
bHRlci5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICBtX2ZpbHRlci5zZXQoJnJlbmRlcmVyLCBX
VEY6Om1vdmUoZmlsdGVyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggY2JjYTEwM2Vm
MzA1Njk3OWVmNDY1YzJiNTdiNTMzN2E5OGI1ZDc0ZS4uYWNlYTIzMGM5ZDkyNWMzNDZlODBkNDI4
ZDk5ODJjNTg3OTVjZDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC02NSwxNiArNjUsMTUg
QEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFk
aWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0g
bWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKG1hc2tJbWFnZUNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgp
OwogICAgIEFTU0VSVChtYXNrSW1hZ2UpOwogICAgIHNhdmVkQ29udGV4dCA9IGNvbnRleHQ7Ci0g
ICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7CisgICAgY29udGV4dCA9ICZtYXNrSW1hZ2VD
b250ZXh0OwogICAgIGltYWdlQnVmZmVyID0gV1RGOjptb3ZlKG1hc2tJbWFnZSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRN
YXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYgaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGJvb2wgYm91bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50
VHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2so
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlciwgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCwg
Ym9vbCBib3VuZGluZ0JveE1vZGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFu
c2Zvcm0pCiB7CiAgICAgYXV0byogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0
ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigqb2JqZWN0KTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9j
ayk7CkBAIC0yMDcsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpw
b3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAg
ICAgIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKGdyYWRpZW50VHJhbnNmb3JtKTsKIAogICAg
ICAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Q7Ci0gICAgICAgICAgICBncmFkaWVudERhdGEt
PmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1RleHRNYXNrKGNvbnRl
eHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGll
bnRUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPnNldEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1hc2soKmNvbnRleHQsIG1faW1hZ2VCdWZm
ZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBl
czo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0pKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnREYXRhLT5ncmFk
aWVudCk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJlY3QpOwpAQCAt
MjIxLDEzICsyMjAsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgIGlm
IChwYXRoKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCpwYXRoKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUo
Y29udGV4dCk7CisgICAgICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgqY29udGV4dCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9TdHJva2VNb2RlKSB7
CiAgICAgICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VQ
YXRoKCpwYXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgICAg
IHNoYXBlLT5zdHJva2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBzaGFwZS0+c3Ry
b2tlU2hhcGUoKmNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCmlu
ZGV4IDhjM2JkYjM0NzUxMDQwNjk2N2JlNjgzNTYxNzMwYzAyZjllMGZhYTYuLjY5ZTVkYjE2ZmYx
MWQ2MWMwMDRjNWNiNWIwMTBlNTAyOTE2YjYwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92ZUNsaWVudEZyb21D
YWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAgIGlm
IChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSkKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNl
TWFya2VyOjptYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWFya2VyVHJh
bnNmb3JtYXRpb24pIGNvbnN0CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJgogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gaW5mbyhwYWludEluZm8pOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkp
OwogICAgIGluZm8uYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBSZW5kZXJTVkdDb250
YWluZXI6OnBhaW50KGluZm8sIEludFBvaW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCA1
MzBkYTNkNmZhZWQ0Yzc1YzdhZWZhYWZiMGM0MGVkMTU4N2M4YzU1Li5hZDM3ZDQ3Yzk4NDZhYzAw
NTNkYTUyYzU0ZGQ5YWY0YzMxZDVjZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtODAsMTQgKzgw
LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNr
SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVj
dCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CisgICAgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmNvbnRleHQsIGFic29sdXRlVHJhbnNm
b3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0
YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6
OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIEdyYXBoaWNzQ29u
dGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgp
OwotICAgIEFTU0VSVChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIG1h
c2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKIAogICAg
IC8vIEV2ZW50dWFsbHkgYWRqdXN0IHRoZSBtYXNrIGltYWdlIGNvbnRleHQgYWNjb3JkaW5nIHRv
IHRoZSB0YXJnZXQgb2JqZWN0Qm91bmRpbmdCb3guCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hc2tD
b250ZW50VHJhbnNmb3JtYXRpb247CkBAIC05NSw3ICs5NCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhLCBDCiAgICAgICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCA9IG9iamVjdC0+b2Jq
ZWN0Qm91bmRpbmdCb3goKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi50cmFu
c2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwogICAg
ICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3Vu
ZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIG1h
c2tJbWFnZUNvbnRleHQtPmNvbmNhdENUTShtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAg
ICAgICAgbWFza0ltYWdlQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlv
bik7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgY29udGVudCBpbnRvIHRoZSBJbWFnZUJ1ZmZl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA0YmMwZDk1MTJiMjkwYzcyN2Q3YTc3YzhiMjQ1ODQ5
OTljMWY2OWJlLi45Zjk1ZGQyNmIzMWIwZGU5NDg4NWUzOTU0MzY3YWJmYTQyNGQ4MGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCkBAIC0xODksMTMgKzE4OSwxMyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29u
dGV4dAogICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCpw
YXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBzaGFwZS0+ZmlsbFNo
YXBlKGNvbnRleHQpOworICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgqY29udGV4dCk7CiAg
ICAgfQogICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9kZSkgewogICAgICAg
ICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoKnBhdGgpOwogICAg
ICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZShjb250
ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZSgqY29udGV4dCk7CiAgICAgfQog
CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMjM3LDE2ICsyMzcsMTUgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJ
bWFnZShjb25zdCBQYXQKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2Ut
PmNvbnRleHQoKTsKLSAgICBBU1NFUlQodGlsZUltYWdlQ29udGV4dCk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAKICAgICAv
LyBUaGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRlcmVkIHNpemUsIHNv
IHRoZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVsYXRpb24pLgotICAg
IHRpbGVJbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKKyAgICB0aWxlSW1hZ2VD
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy53aWR0
aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkgLyB0aWxl
Qm91bmRhcmllcy5oZWlnaHQoKSkpOwogCiAgICAgLy8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zv
cm1hdGlvbnMuCiAgICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQotICAg
ICAgICB0aWxlSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsKKyAg
ICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsKIAog
ICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgaWYgKGF0dHJp
YnV0ZXMucGF0dGVybkNvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQ
RV9PQkpFQ1RCT1VORElOR0JPWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAppbmRleCBmNTAxYWJm
NDRiMjE0MTY3OWE2YjdhNjk4ZWZiMTcxODViZTU3MDI5Li5mYjg4ZmM4YjRiMjhiNzg1OWRkOGYy
MTViOTAyNTFkN2UwZDI4M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCkBAIC04MSwxMyAr
ODEsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnQKICAgICAgICAgaWYgKHBhdGgpCiAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgIGVsc2UgaWYgKHNoYXBl
KQotICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgIHNo
YXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgIH0KICAgICBpZiAocmVzb3VyY2VNb2RlICYg
QXBwbHlUb1N0cm9rZU1vZGUpIHsKICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBjb250
ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAg
ICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICBzaGFwZS0+c3Ry
b2tlU2hhcGUoKmNvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzRjN2Y2ODg2ZjUxYjIxMzI1OWU4ZGRj
Y2JmZWJkMGFkMjBkM2RlMC4uYzJmYWFhMjVlMTQzMmY2MGY3ODkxOGIwZjg1NzVlNDUyN2E4YTQ3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gRG9uJ3QgcGFpbnQsIGlmIHRoZSBjb250ZXh0IGV4cGxpY2l0bHkgZGlz
YWJsZWQgaXQuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBTVkcgb3V0bGluZXMgYXJlIHBhaW50ZWQgZHVyaW5nIFBhaW50
UGhhc2VGb3JlZ3JvdW5kLgpAQCAtMjU3LDE4ICsyNTcsMTggQEAgdm9pZCBSZW5kZXJTVkdSb290
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnQKIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8gYmVjYXVzZSBhcHBs
eVRyYW5zZm9ybSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdlIHJlY3QuCiAgICAgUGFpbnRJbmZvIGNo
aWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7Ci0gICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2
ZSgpOworICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAKICAgICAvLyBBcHBs
eSBpbml0aWFsIHZpZXdwb3J0IGNsaXAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAo
KSkKLSAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChzbmFwcGVkSW50UmVjdChv
dmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLmNsaXAoc25hcHBlZElu
dFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50KCkpKSk7CiAKICAgICAvLyBDb252ZXJ0IGZyb20gY29udGFpbmVyIG9mZnNldHMg
KGh0bWwgcmVuZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRyYW5zZm9ybSAoc3ZnIHJlbmRlcmVycyku
CiAgICAgLy8gVHJhbnNmb3JtIGZyb20gb3VyIHBhaW50IGNvbnRhaW5lcidzIGNvb3JkaW5hdGUg
c3lzdGVtIHRvIG91ciBsb2NhbCBjb29yZHMuCiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9m
ZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCk7CiAgICAgY2hpbGRQYWludEluZm8u
YXBwbHlUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlvbihhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpICogbG9jYWxUb0JvcmRlckJveFRy
YW5zZm9ybSgpKTsKIAotICAgIC8vIFNWR1JlbmRlcmluZ0NvbnRleHQgbXVzdCBiZSBkZXN0cm95
ZWQgYmVmb3JlIHdlIHJlc3RvcmUgdGhlIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIGJlY2F1c2Ug
YSBmaWx0ZXIgbWF5IGhhdmUKKyAgICAvLyBTVkdSZW5kZXJpbmdDb250ZXh0IG11c3QgYmUgZGVz
dHJveWVkIGJlZm9yZSB3ZSByZXN0b3JlIHRoZSBjaGlsZFBhaW50SW5mby5jb250ZXh0KCksIGJl
Y2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKICAgICAvLyBjaGFuZ2VkIHRoZSBjb250ZXh0IGFuZCBp
dCBpcyBvbmx5IHJldmVydGVkIHdoZW4gdGhlIFNWR1JlbmRlcmluZ0NvbnRleHQgZGVzdHJ1Y3Rv
ciBmaW5pc2hlcyBhcHBseWluZyB0aGUgZmlsdGVyLgogICAgIHsKICAgICAgICAgU1ZHUmVuZGVy
aW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgUmVu
ZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjaGlsZFBhaW50SW5mby5j
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUo
KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdSb290Ojp3aWxsQmVEZXN0cm95ZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBhMTljZGJi
NmM1YjE3YzNiN2VlYzg2NmNkNDU1NWFmNjY2NTYwZWIwLi45Nzc1OThlOGM2ZTY5ZWMzY2MzMWM0
NDNiZTg2YzczMjM0MTgyZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcApAQCAtOTIsMTIgKzkyLDEyIEBAIGJvb2wgUmVuZGVyU1ZHU2hh
cGU6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBwYXRoKCkuaXNFbXB0eSgpOwogfQogCi12
b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBj
b25zdAordm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LT5maWxsUGF0aChwYXRoKCkpOworICAgIGNvbnRl
eHQuZmlsbFBhdGgocGF0aCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdTaGFwZTo6
c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIEFTU0VS
VChtX3BhdGgpOwogICAgIFBhdGgqIHVzZVBhdGggPSBtX3BhdGguZ2V0KCk7CkBAIC0xMDUsNyAr
MTA1LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpCiAgICAgICAg
IHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1c2VQYXRoLCBub25TY2FsaW5nU3Ryb2tl
VHJhbnNmb3JtKCkpOwogCi0gICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqdXNlUGF0aCk7CisgICAg
Y29udGV4dC5zdHJva2VQYXRoKCp1c2VQYXRoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6
c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKQEAg
LTIyNSw4ICsyMjUsOSBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpzaG91bGRHZW5lcmF0ZU1hcmtl
clBvc2l0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc291cmNlcy0+bWFya2VyU3RhcnQoKSB8
fCByZXNvdXJjZXMtPm1hcmtlck1pZCgpIHx8IHJlc291cmNlcy0+bWFya2VyRW5kKCk7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFw
ZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250
ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7
CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIGZp
bGxQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291
cmNlKCp0aGlzLCBzdHlsZSwgZmFsbGJhY2tDb2xvcikpIHsKICAgICAgICAgaWYgKGZpbGxQYWlu
dGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29udGV4dCwgQXBwbHlU
b0ZpbGxNb2RlKSkKQEAgLTI0MCw4ICsyNDEsOSBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxs
U2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleAog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFJlbmRlclNWR1No
YXBlOjpzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4
dCYgb3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZv
cmlnaW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVy
U1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6
c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGZhbGxiYWNrQ29sb3IpKSB7CiAg
ICAgICAgIGlmIChzdHJva2VQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBz
dHlsZSwgY29udGV4dCwgQXBwbHlUb1N0cm9rZU1vZGUpKQpAQCAtMjU1LDEyICsyNTcsMTIgQEAg
dm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6
OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hh
cGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoIXN0
eWxlKCkuc3ZnU3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgZmFsc2Up
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxz
ZSk7CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkgewogICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsK
ICAgICAgICAgaWYgKCFzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KG5vblNjYWxpbmdUcmFu
c2Zvcm0sIHN0YXRlU2F2ZXIpKQpAQCAtMjc1LDEwICsyNzcsMTAgQEAgdm9pZCBSZW5kZXJTVkdT
aGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50SW5mbykKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsraSkgewogICAgICAg
ICBzd2l0Y2ggKHBhaW50T3JkZXIuYXQoaSkpIHsKICAgICAgICAgY2FzZSBQYWludFR5cGVGaWxs
OgotICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQp
OworICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5cGVTdHJva2U6Ci0g
ICAgICAgICAgICBzdHJva2VTaGFwZShjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAg
ICAgIHN0cm9rZVNoYXBlKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgaWYgKCFt
X21hcmtlclBvc2l0aW9ucy5pc0VtcHR5KCkpCkBAIC0yOTAsNyArMjkyLDcgQEAgdm9pZCBSZW5k
ZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50SW5mbykK
IAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKKyAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgcGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCiAgICAgICAgIHx8IHN0eWxlKCkudmlzaWJpbGl0
eSgpID09IEhJRERFTiB8fCBpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwpAQCAtMjk4
LDcgKzMwMCw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhaW50SW5m
byBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
Y2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9ybSk7CiAKICAgICBp
ZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKQEAgLTMw
Nyw3ICszMDksNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5p
c1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxl
JiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgICAgIGlmIChzdmdTdHls
ZS5zaGFwZVJlbmRlcmluZygpID09IFNSX0NSSVNQRURHRVMpCi0gICAgICAgICAgICAgICAgY2hp
bGRQYWludEluZm8uY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkQW50aWFsaWFzKGZhbHNl
KTsKIAogICAgICAgICAgICAgZmlsbFN0cm9rZU1hcmtlcnMoY2hpbGRQYWludEluZm8pOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgK
aW5kZXggNjExYmZkMTRiOWRkNjQ4YzJmMWQ3MzQyYjhhYmYyOWEyYmVhZWVhMi4uMTRjMzFjY2Zj
NjA0MzY5ZTg2MGVkYTE3ZjE1NjQ5Yjg3YjZlNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFs
IHsgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG5l
ZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbmVlZHNCb3Vu
ZGFyaWVzVXBkYXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRl
KCkgb3ZlcnJpZGUgZmluYWwgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBoYXNQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXRoLmdldCgpOyB9CkBAIC0xMTQsOSArMTE0LDkgQEAgcHJpdmF0
ZToKICAgICBGbG9hdFJlY3QgbWFya2VyUmVjdChmbG9hdCBzdHJva2VXaWR0aCkgY29uc3Q7CiAg
ICAgdm9pZCBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKLSAgICB2b2lkIGZpbGxTaGFwZShj
b25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCopOwotICAgIHZvaWQgc3Ryb2tlU2hh
cGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqKTsKLSAgICB2b2lkIHN0cm9r
ZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgZmlsbFNoYXBlKGNvbnN0IFJlbmRl
clN0eWxlJiwgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBzdHJva2VTaGFwZShjb25zdCBS
ZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc3Ryb2tlU2hhcGUoR3Jh
cGhpY3NDb250ZXh0Jik7CiAgICAgdm9pZCBmaWxsU3Ryb2tlTWFya2VycyhQYWludEluZm8mKTsK
ICAgICB2b2lkIGRyYXdNYXJrZXJzKFBhaW50SW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA0ZTA4ZjNmOWFhMjRmZDE4YmQy
MmM4YzU5OGJiOWFkOWVlZmQ0OTY5Li45MmI3MWU5YzY0ODUxMDhjZTJjN2JmMzQ3NTQwYzg3YTYy
ZDY1ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVh
ZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29ucwogCiB2b2lk
IFJlbmRlclNWR1RleHQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkp
CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUGFpbnRJbmZvIGJsb2NrSW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqYmxvY2tJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihibG9ja0luZm8uY29udGV4dCgpKTsKICAgICBibG9j
a0luZm8uYXBwbHlUcmFuc2Zvcm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKICAgICBSZW5k
ZXJCbG9jazo6cGFpbnQoYmxvY2tJbmZvLCBMYXlvdXRQb2ludCgpKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyLmNwcAppbmRleCAwMjcwM2QzZGY5NjA2YzhjYmJhZmI5YTVlZDUwMDU4NmMyMmZkOGQ1Li43
ODM3ZWI1MjRlZTI1YzI0YmE4ZmFmMDNkYjBkZjdlY2NmYWI1YTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
OjpkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCkKIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRD
b250YWluZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAg
IGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSkKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4IGQxZjRjNWMzZWFmOWYzYjkxMjhmM2MzYjk5
NzMyMzcyMGYzZTZmYjMuLmQ4OWJjZmU2ZTNmNmMwNWQzYjBkYzlmNGZkYjQ3MmZiOGU0MTUyODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0Jv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFNWR0lubGlu
ZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykK
IHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8
IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgUGFpbnRJbmZvIGNoaWxk
UGFpbnRJbmZvKHBhaW50SW5mbyk7CiAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CkBAIC00OCw3ICs0
OCw3IEBAIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBh
aW50SW5mbyYgcGFpbnRJbmZvKQogdm9pZCBTVkdJbmxpbmVGbG93Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0
LCBMYXlvdXRVbml0KQogewogICAgIEFTU0VSVChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pOwot
ICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSk7CisgICAg
QVNTRVJUKCFwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSk7CiAKICAgICBT
VkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQocmVuZGVyZXIoKSwgcGFpbnRJbmZv
LCBTVkdSZW5kZXJpbmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBpZiAocmVu
ZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IDgzYjE3NWRmYzU0
ODRlYTVlYjE1ZGMyOTYxYjgyYzA2Y2FjYzRlYzguLmVmOGYxOGVlY2VjYWJhOTE2MjU0YmI3M2Yy
MTY0MDM3MzJmYTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjIwLDEzICsyMjAsMTMgQEAgdm9pZCBTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAg
ICAgICAgIGlmICghbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhm
cmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIGZyYWdt
ZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogICAgICAgICBp
ZiAoIWZyYWdtZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOworICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogCi0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBzdHlsZS5j
b2xvclNwYWNlKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc2VsZWN0
aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBm
cmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGJhY2tn
cm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFn
bWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5kUG9zaXRpb24sICZzdHlsZSksIGJhY2tncm91
bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICBtX3BhaW50aW5nUmVzb3Vy
Y2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTI4OCwxNyArMjg4LDE3IEBA
IHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIFNWR1RleHRGcmFnbWVudCYgZnJhZ21l
bnQgPSBtX3RleHRGcmFnbWVudHMuYXQoaSk7CiAgICAgICAgIEFTU0VSVCghbV9wYWludGluZ1Jl
c291cmNlKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBmcmFnbWVudC5idWlsZEZy
YWdtZW50VHJhbnNmb3JtKGZyYWdtZW50VHJhbnNmb3JtKTsKICAgICAgICAgaWYgKCFmcmFnbWVu
dFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+
Y29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBTcGVjOiBB
bGwgdGV4dCBkZWNvcmF0aW9ucyBleGNlcHQgbGluZS10aHJvdWdoIHNob3VsZCBiZSBkcmF3biBi
ZWZvcmUgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0aGUgdGV4dCBpcyBy
ZW5kZXJlZCBvbiB0b3Agb2YgdGhlc2UgZGVjb3JhdGlvbnMuCiAgICAgICAgIGludCBkZWNvcmF0
aW9ucyA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAgICAgICAgIGlmIChkZWNv
cmF0aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQotICAgICAgICAgICAgcGFpbnREZWNv
cmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvblVuZGVybGluZSwgZnJhZ21l
bnQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRl
eHREZWNvcmF0aW9uVW5kZXJsaW5lLCBmcmFnbWVudCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9u
cyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpCi0gICAgICAgICAgICBwYWludERlY29yYXRpb24o
cGFpbnRJbmZvLmNvbnRleHQsIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIGZyYWdtZW50KTsKKyAg
ICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3Jh
dGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgYXV0byBwYWludE9yZGVyID0gc3R5
bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFpbnRPcmRlcigpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsraSkgewpAQCAtMzA3LDEzICsz
MDcsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgICAgICAgICBpZiAoIWhh
c0ZpbGwpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1f
cGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRmlsbE1vZGUgfCBBcHBseVRvVGV4dE1vZGU7
Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0LCAmc3R5bGUsIHNl
bGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9u
bHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAmc3R5
bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVk
VGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWlu
dFR5cGVTdHJva2U6CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxlU3Ryb2tlKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtX3BhaW50aW5nUmVz
b3VyY2VNb2RlID0gQXBwbHlUb1N0cm9rZU1vZGUgfCBBcHBseVRvVGV4dE1vZGU7Ci0gICAgICAg
ICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0LCAmc3R5bGUsIHNlbGVjdGlvblN0
eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAg
ICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAmc3R5bGUsIHNlbGVj
dGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJr
ZXJzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzogTGluZS10aHJvdWdoIHNob3Vs
ZCBiZSBkcmF3biBhZnRlciB0aGUgdGV4dCBpcyBmaWxsZWQgYW5kIHN0cm9rZWQ7IHRodXMsIHRo
ZSBsaW5lLXRocm91Z2ggaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZSB0ZXh0LgogICAgICAgICBp
ZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQotICAgICAgICAgICAg
cGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJv
dWdoLCBmcmFnbWVudCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNv
bnRleHQoKSwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQpOwogCiAgICAgICAg
IG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRGVmYXVsdE1vZGU7CiAgICAgfQpAQCAt
Mzc5LDE0ICszNzksMTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZWxlYXNlUGFpbnRpbmdS
ZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdAogCiBib29sIFNWR0lubGlu
ZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3ND
b250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgVGV4dFJ1biYgdGV4dFJ1biwg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIGJvb2wgYWNxdWlyZWRSZXNvdXJjZSA9IGFjcXVp
cmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHBhcmVudCgpLT5yZW5k
ZXJlcigpLCBzdHlsZSk7Ci0gICAgaWYgKCFhY3F1aXJlZFJlc291cmNlKQorICAgIGlmICghYWNx
dWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgc2NhbGluZ0ZhY3RvciwgcGFyZW50KCktPnJl
bmRlcmVyKCksIHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFNW
R19GT05UUykKICAgICAvLyBTVkcgRm9udHMgbmVlZCBhY2Nlc3MgdG8gdGhlIHBhaW50aW5nIHJl
c291cmNlIHVzZWQgdG8gZHJhdyB0aGUgY3VycmVudCB0ZXh0IGNodW5rLgotICAgIFRleHRSdW46
OlJlbmRlcmluZ0NvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQgPSB0ZXh0UnVuLnJlbmRlcmluZ0Nv
bnRleHQoKTsKLSAgICBpZiAocmVuZGVyaW5nQ29udGV4dCkKKyAgICBpZiAoYXV0byogcmVuZGVy
aW5nQ29udGV4dCA9IHRleHRSdW4ucmVuZGVyaW5nQ29udGV4dCgpKQogICAgICAgICBzdGF0aWNf
Y2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQpLT5zZXRB
Y3RpdmVQYWludGluZ1Jlc291cmNlKG1fcGFpbnRpbmdSZXNvdXJjZSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTSh0ZXh0UnVuKTsKQEAgLTQ5OSw3ICs0OTcsNyBAQCBzdGF0aWMgaW5saW5lIFJl
bmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4dERlY29yYXRpb24o
SW5saW5lRgogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRp
b24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkKK3ZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
VGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVu
dCkKIHsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCkgPT0gVGV4dERlY29yYXRpb25Ob25lKQogICAgICAgICByZXR1cm47CkBAIC01MjcsNyArNTI1
LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbgogICAgIH0KIH0KIAotdm9pZCBTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdt
ZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKQordm9pZCBTVkdJ
bmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQm
IGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKQogewog
ICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsKICAgICBBU1NFUlQobV9wYWludGluZ1Jl
c291cmNlTW9kZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUpOwpAQCAtNTQ5LDExICs1NDcsMTEgQEAg
dm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBmbG9hdCB3aWR0aCA9IGZyYWdtZW50LndpZHRo
OwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQu
Zm9udE1ldHJpY3MoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNv
bnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKICAgICAgICAgd2lkdGggKj0g
c2NhbGluZ0ZhY3RvcjsKICAgICAgICAgZGVjb3JhdGlvbk9yaWdpbi5zY2FsZShzY2FsaW5nRmFj
dG9yLCBzY2FsaW5nRmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEg
LyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOworICAgICAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGluZ0ZhY3RvciwgMSAvIHNjYWxpbmdGYWN0b3IpKTsKICAg
ICB9CiAKICAgICBkZWNvcmF0aW9uT3JpZ2luLm1vdmUoMCwgLXNjYWxlZEZvbnRNZXRyaWNzLmZs
b2F0QXNjZW50KCkgKyBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oZGVjb3JhdGlvbiwgc2Nh
bGVkRm9udE1ldHJpY3MsIHRoaWNrbmVzcykpOwpAQCAtNTYxLDExICs1NTksMTIgQEAgdm9pZCBT
VkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBUZXh0RGUKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5hZGRSZWN0KEZsb2F0
UmVjdChkZWNvcmF0aW9uT3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHRoaWNrbmVzcykpKTsKIAot
ICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBzY2FsaW5nRmFjdG9yLCBk
ZWNvcmF0aW9uUmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5bGUpKQotICAgICAgICByZWxlYXNlUGFp
bnRpbmdSZXNvdXJjZShjb250ZXh0LCAmcGF0aCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0UHRyID0gJmNvbnRleHQ7CisgICAgaWYgKGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRl
eHRQdHIsIHNjYWxpbmdGYWN0b3IsIGRlY29yYXRpb25SZW5kZXJlciwgJmRlY29yYXRpb25TdHls
ZSkpCisgICAgICAgIHJlbGVhc2VQYWludGluZ1Jlc291cmNlKGNvbnRleHRQdHIsICZwYXRoKTsK
IH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBl
bmRQb3NpdGlvbikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3Mo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFRleHRSdW4mIHRl
eHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBzdGFydFBvc2l0aW9u
LCBpbnQgZW5kUG9zaXRpb24pCiB7CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVy
KCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKQEAgLTU4Mywy
NCArNTgyLDI1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3Mo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsCiAKICAgICBGbG9hdFJlY3Qgc2hh
ZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2luLnkoKSAtIHNjYWxl
ZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwogCisgICAgR3Jh
cGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OwogICAgIGRvIHsKLSAgICAgICAg
aWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKGNvbnRleHQsIHNjYWxp
bmdGYWN0b3IsIHRleHRSdW4sIHN0eWxlKSkKKyAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3ND
b250ZXh0Rm9yVGV4dFBhaW50aW5nKHVzZWRDb250ZXh0LCBzY2FsaW5nRmFjdG9yLCB0ZXh0UnVu
LCBzdHlsZSkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBT
aGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKmNvbnRleHQsIHNoYWRvdywgc2hhZG93UmVjdCk7
CisgICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKnVzZWRDb250ZXh0LCBz
aGFkb3csIHNoYWRvd1JlY3QpOwogCiAgICAgICAgICAgICBpZiAoIXNoYWRvd0FwcGxpZXIuZGlk
U2F2ZUNvbnRleHQoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2Fs
aW5nRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgdXNlZENvbnRleHQtPnNhdmUoKTsKKyAgICAg
ICAgICAgIHVzZWRDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEg
LyBzY2FsaW5nRmFjdG9yKSk7CiAKLSAgICAgICAgICAgIHNjYWxlZEZvbnQuZHJhd1RleHQoY29u
dGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiArIHNoYWRvd0FwcGxpZXIuZXh0cmFPZmZzZXQoKSwg
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworICAgICAgICAgICAgc2NhbGVkRm9udC5kcmF3
VGV4dCgqdXNlZENvbnRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4
dHJhT2Zmc2V0KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKIAogICAgICAgICAgICAg
aWYgKCFzaGFkb3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOworICAgICAgICAgICAgICAgIHVzZWRDb250ZXh0LT5yZXN0b3JlKCk7
CiAgICAgICAgIH0KIAotICAgICAgICByZXN0b3JlR3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFp
bnRpbmcoY29udGV4dCwgdGV4dFJ1bik7CisgICAgICAgIHJlc3RvcmVHcmFwaGljc0NvbnRleHRB
ZnRlclRleHRQYWludGluZyh1c2VkQ29udGV4dCwgdGV4dFJ1bik7CiAKICAgICAgICAgaWYgKCFz
aGFkb3cpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIFNWR0lu
bGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgUmVuZGVyU3R5bAogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiB9CiAKLXZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25s
eSkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBh
aW50U2VsZWN0ZWRUZXh0T25seSkKIHsKICAgICBBU1NFUlQoc3R5bGUpOwogICAgIEFTU0VSVChz
ZWxlY3Rpb25TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5oCmluZGV4IDIzYzA3NjlmZTlmYTc3NjI4YmVkMDFlYTNjYjBjNzllNWFhY2Zi
NjguLjE3ZWNlZjNhY2E5NDVmNzFiMmU1ZmM4NDZhOTMxNWQyZmZjYTExM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC03NywxMCAr
NzcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0
UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIFRleHRSdW4m
LCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVzdG9yZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4
dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBUZXh0UnVuJik7CiAKLSAgICB2b2lkIHBhaW50
RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4
dEZyYWdtZW50Jik7Ci0gICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3ND
b250ZXh0KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlckJv
eE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRUZXh0V2l0
aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwgY29uc3Qg
U1ZHVGV4dEZyYWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbik7Ci0g
ICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJT
dHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGJvb2wgaGFzU2Vs
ZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CisgICAgdm9pZCBwYWludERlY29y
YXRpb24oR3JhcGhpY3NDb250ZXh0JiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFn
bWVudCYpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4
dCYsIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFk
b3dzKEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYsIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pOworICAgIHZv
aWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUq
IHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlv
biwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDIxMmExNjZlYzBjZjIwNzZm
YmM3M2IxMTM0YWU4YmJiZDY2MzczZjAuLmZiOWEwM2M1OTVlNjM2MDY5NmFlMWIzZmQ1ZmIyMTRj
ZjM2NGYwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTYsMTkgKzU2LDIwIEBAIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6On5TVkdSZW5kZXJpbmdDb250ZXh0KCkKIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYg
RW5kRmlsdGVyTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKG1fZmlsdGVyKTsKLSAgICAgICAgbV9m
aWx0ZXItPnBvc3RBcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBtX3BhaW50SW5mby0+Y29udGV4
dCwgQXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAwKTsKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRl
eHQgPSBtX3NhdmVkQ29udGV4dDsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRy
ID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgIG1fZmlsdGVyLT5wb3N0QXBwbHlS
ZXNvdXJjZSgqbV9yZW5kZXJlciwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAw
KTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKm1fc2F2ZWRDb250ZXh0KTsKICAg
ICAgICAgbV9wYWludEluZm8tPnJlY3QgPSBtX3NhdmVkUGFpbnRSZWN0OwogICAgIH0KIAogICAg
IGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kT3BhY2l0eUxheWVyKQotICAgICAgICBtX3BhaW50
SW5mby0+Y29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgbV9wYWludElu
Zm8tPmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAgaWYgKG1fcmVuZGVy
aW5nRmxhZ3MgJiBFbmRTaGFkb3dMYXllcikKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQt
PmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCku
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgUmVz
dG9yZUdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPnJlc3Rv
cmUoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5yZXN0b3JlKCk7CiB9CiAKIHZv
aWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgUGFpbnRJbmZvJiBwYWludEluZm8sIE5lZWRzR3JhcGhpY3NDb250
ZXh0U2F2ZSBuZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUpCkBAIC04NSw3ICs4Niw3IEBAIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgUGFpCiAKICAgICAvLyBXZSBuZWVkIHRvIHNhdmUgLyByZXN0b3JlIHRo
ZSBjb250ZXh0IGV2ZW4gaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KICAgICBpZiAobmVl
ZHNHcmFwaGljc0NvbnRleHRTYXZlID09IFNhdmVHcmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAg
bV9wYWludEluZm8tPmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRl
eHQoKS5zYXZlKCk7CiAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gUmVzdG9yZUdyYXBoaWNz
Q29udGV4dDsKICAgICB9CiAKQEAgLTExMSwyNCArMTEyLDI0IEBAIHZvaWQgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgUGFpCiAKICAgICBpZiAob3BhY2l0eSA8IDEgfHwgc2hhZG93IHx8IGhhc0JsZW5kTW9kZSB8
fCBpc29sYXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewogICAgICAgICBGbG9h
dFJlY3QgcmVwYWludFJlY3QgPSBtX3JlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcygpOwotICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcChyZXBhaW50UmVjdCk7
CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcChyZXBhaW50UmVjdCk7CiAKICAg
ICAgICAgaWYgKG9wYWNpdHkgPCAxIHx8IGhhc0JsZW5kTW9kZSB8fCBpc29sYXRlTWFza0ZvckJs
ZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewogCiAgICAgICAgICAgICBpZiAoaGFzQmxlbmRNb2Rl
KQotICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24obV9wYWludEluZm8tPmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBzdHlsZS5i
bGVuZE1vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRD
b21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRp
b24oKSwgc3R5bGUuYmxlbmRNb2RlKCkpOwogCi0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29u
dGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAgICAgICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKIAogICAg
ICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBtX3BhaW50SW5mby0+
Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jb21w
b3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgICAgICAgICBtX3Bh
aW50SW5mby0+Y29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BhaW50SW5mby0+Y29u
dGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgICAg
ICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZE9wYWNpdHlMYXllcjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChzaGFkb3cpIHsKLSAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5z
ZXRTaGFkb3coSW50U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwgcm91bmRUb0ludChzaGFk
b3ctPnkoKSkpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+YmVnaW5UcmFuc3Bh
cmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0U2hh
ZG93KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55
KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKDEpOwogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBFbmRTaGFkb3dMYXll
cjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIFBhaQogICAgICAgICAgICAgcmVmZXJlbmNlQm94LnNldEhlaWdodCh2aWV3cG9ydFNpemUu
aGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHJl
bmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0
LT5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VCb3gpLCBj
bGlwUGF0aC53aW5kUnVsZSgpKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5jbGlw
UGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VCb3gpLCBjbGlwUGF0
aC53aW5kUnVsZSgpKTsKICAgICB9CiAKICAgICBhdXRvKiByZXNvdXJjZXMgPSBTVkdSZXNvdXJj
ZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIoKm1fcmVuZGVyZXIpOwpAQCAtMTYx
LDI2ICsxNjIsMzUgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkKIAogICAgIGlmICghaXNSZW5k
ZXJpbmdNYXNrKSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2Vy
ID0gcmVzb3VyY2VzLT5tYXNrZXIoKSkgewotICAgICAgICAgICAgaWYgKCFtYXNrZXItPmFwcGx5
UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBtX3BhaW50SW5mby0+Y29udGV4dCwgQXBwbHlU
b0RlZmF1bHRNb2RlKSkKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9
ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOworICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtYXNr
ZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0UHRyLCBBcHBseVRv
RGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRl
eHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlw
cGVyID0gcmVzb3VyY2VzLT5jbGlwcGVyKCk7CiAgICAgaWYgKCFjbGlwUGF0aE9wZXJhdGlvbiAm
JiBjbGlwcGVyKSB7Ci0gICAgICAgIGlmICghY2xpcHBlci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5k
ZXJlciwgc3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVmYXVsdE1vZGUpKQor
ICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWludEluZm8tPmNvbnRl
eHQoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBjbGlwcGVyLT5hcHBseVJlc291cmNlKCptX3Jl
bmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICAgICAg
bV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWlzUmVuZGVyaW5nTWFz
aykgewogICAgICAgICBtX2ZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCk7CiAgICAgICAgIGlm
IChtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSBtX3BhaW50SW5mby0+
Y29udGV4dDsKKyAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0gJm1fcGFpbnRJbmZvLT5jb250
ZXh0KCk7CiAgICAgICAgICAgICBtX3NhdmVkUGFpbnRSZWN0ID0gbV9wYWludEluZm8tPnJlY3Q7
CiAgICAgICAgICAgICAvLyBSZXR1cm4gd2l0aCBmYWxzZSBoZXJlIG1heSBtZWFuIHRoYXQgd2Ug
ZG9uJ3QgbmVlZCB0byBkcmF3IHRoZSBjb250ZW50CiAgICAgICAgICAgICAvLyAoYmVjYXVzZSBp
dCB3YXMgZWl0aGVyIGRyYXduIGJlZm9yZSBvciBlbXB0eSkgYnV0IHdlIHN0aWxsIG5lZWQgdG8g
YXBwbHkgdGhlIGZpbHRlci4KICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gRW5kRmls
dGVyTGF5ZXI7Ci0gICAgICAgICAgICBpZiAoIW1fZmlsdGVyLT5hcHBseVJlc291cmNlKCptX3Jl
bmRlcmVyLCBzdHlsZSwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9EZWZhdWx0TW9kZSkp
CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWludEluZm8t
PmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9maWx0ZXItPmFwcGx5UmVz
b3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0UHRyLCBBcHBseVRvRGVmYXVsdE1vZGUp
OworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAg
ICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICAvLyBTaW5jZSB3ZSdyZSBjYWNoaW5nIHRoZSByZXN1bHRpbmcgYml0bWFwIGFuZCBkbyBu
b3QgaW52YWxpZGF0ZSBpdCBvbiByZXBhaW50IHJlY3QKQEAgLTI1NCw5ICsyNjQsOCBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UgogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAg
dHJhbnNmb3JtLnNjYWxlKHNjYWxlKS50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlvbigpKS5t
dWx0aXBseShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGltYWdl
Q29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4
dCk7Ci0gICAgaW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odHJhbnNmb3JtKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgaW1h
Z2VDb250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogCiAgICAgcmV0dXJuIGltYWdlQnVmZmVy
OwogfQpAQCAtMjc0LDExICsyODMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdyYXBoaWNz
Q29udGV4dCogaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBBU1NF
UlQoaW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGlt
YWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAvLyBDb21wZW5zYXRlIHJvdW5kaW5nIGVmZmVj
dHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9hdGluZy1wb2ludCBu
dW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4KLSAgICBpbWFnZUNv
bnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkgLyB0YXJnZXRSZWN0
LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7
CisgICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkg
LyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0
LmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CkBAIC0yODYsNyArMjk0
LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBSZW5kZXJFbGVt
ZW50JiBpdGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1YnRyZWVDb250ZW50VHJhbnNmb3Jt
YXRpb24pCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKLSAgICBBU1NFUlQoaW1hZ2UtPmNvbnRleHQo
KSk7CiAKICAgICBQYWludEluZm8gaW5mbyhpbWFnZS0+Y29udGV4dCgpLCBMYXlvdXRSZWN0Ojpp
bmZpbml0ZVJlY3QoKSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwp
OwogCkBAIC0zMDAsMTggKzMwNywxNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVyRQogICAgIGNv
bnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0aW9uOwogfQogCi12
b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKK3ZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0Ns
ZWFyKQogewotICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwog
CiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVy
UmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBUaGUgbWFzayBp
bWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBh
cyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBt
YXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUg
c3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0u
aW52ZXJzZSgpKTsKLSAgICBjb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5n
ZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0pOworICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmlu
dmVyc2UoKSk7CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQo
KSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKKyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRy
YW5zZm9ybSk7CiAKICAgICAvLyBXaGVuIG5lc3RpbmcgcmVzb3VyY2VzLCB3aXRoIG9iamVjdEJv
dW5kaW5nQm94IGFzIGNvbnRlbnQgdW5pdCB0eXBlcywgdGhlcmUncyBubyB1c2UgaW4gY2FjaGlu
ZyB0aGUKICAgICAvLyByZXN1bHRpbmcgaW1hZ2UgYnVmZmVyIGFzIHRoZSBwYXJlbnQgcmVzb3Vy
Y2UgYWxyZWFkeSBjYWNoZXMgdGhlIHJlc3VsdC4KQEAgLTMzNSw3ICszNDEsNyBAQCBib29sIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gSW52YWxpZGF0ZSBhbiBleGlzdGluZyBidWZmZXIg
aWYgdGhlIHNjYWxlIGlzIG5vdCBjb3JyZWN0LgogICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8tPmNvbnRleHQtPmdl
dENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8tPmNvbnRleHQoKS5n
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAg
ICAgICAgSW50U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5kZWRJbnRTaXplKGJvdW5k
aW5nQm94LnNpemUoKSk7CiAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZShzdGF0aWNfY2FzdDxp
bnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgp
KSksIHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LmhlaWdodCgpICog
dHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogICAgICAgICBpZiAoYnVmZmVyU2l6ZSAhPSBpbWFnZUJ1
ZmZlci0+aW50ZXJuYWxTaXplKCkpCkBAIC0zNDQsMTcgKzM1MCwxNyBAQCBib29sIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiYgaW1hZ2VCdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZv
cmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGlmICgo
aW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkpKSB7Ci0gICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQtPnRy
YW5zbGF0ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgaWYg
KChpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkpKSB7CisgICAg
ICAgICAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdl
QnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQu
dHJhbnNsYXRlKC1ib3VuZGluZ0JveC54KCksIC1ib3VuZGluZ0JveC55KCkpOwogICAgICAgICAg
ICAgUGFpbnRJbmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWludEluZm8pOwotICAgICAgICAgICAgYnVm
ZmVyZWRJbmZvLmNvbnRleHQgPSBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7CisgICAgICAgICAg
ICBidWZmZXJlZEluZm8uc2V0Q29udGV4dChidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQpOwogICAg
ICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRlcmVyKS5wYWludEZvcmVn
cm91bmQoYnVmZmVyZWRJbmZvKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWludEluZm8tPmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOwor
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmgKaW5kZXggOWEyM2MyNTEyM2I4N2VjMjljZmRhMGNlYzdlYzI0NTY1OTg0M2Q4YS4u
NDYzODRjNDhlYTBmOGFlNGE4OGI2NWMxMjdlMThkY2YxZmMzY2ZjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc1LDcg
Kzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSk7CiAKICAgICBz
dGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIFJlbmRl
ckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGlw
VG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFi
c29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKKyAgICBzdGF0aWMgdm9pZCBj
bGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAogICAgIHN0YXRpYyBm
bG9hdCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29uc3QgUmVuZGVyT2Jq
ZWN0Jik7CiAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVUcmFuc2Zvcm1hdGlv
blRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmplY3QmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4
IGQxYTc4Mzg5YTE1NjRjNDRhZTEyNmQ0ZDFlYWExZTA2NDk3ZWNiYjMuLjhiODAxNGI2MDEzZmZj
YmMwYmQwMDQ2MzFhODNkNTA2ZWYwOGM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAtNDksNyArNDksNyBAQCBSZW5kZXJT
VkdUZXh0JiBTVkdSb290SW5saW5lQm94OjpyZW5kZXJTVkdUZXh0KCkKIHZvaWQgU1ZHUm9vdElu
bGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkKIHsKICAgICBBU1NFUlQocGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQ
YWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkpOwogCiAgICAgYm9vbCBpc1ByaW50aW5nID0gcmVuZGVyU1ZHVGV4dCgpLmRv
Y3VtZW50KCkucHJpbnRpbmcoKTsKICAgICBib29sIGhhc1NlbGVjdGlvbiA9ICFpc1ByaW50aW5n
ICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZDNmMjg1NTdlMDYyNzM4NmQwNWNiZjNlYzBmNmY5N2Y1
NTY3ZTVhLi5mZDY5ZmE0ODkyOTViMDJkYjAwY2JmNWRiZTM3MDI1YzYxYzgwNGQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtMjYyLDEzICsyNjIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPEds
eXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUds
eXBoVG8KICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdHbHlwaFRvUGF0aFRyYW5zbGF0
b3I+KHRleHRSdW4sIGdseXBoQnVmZmVyLCBwb2ludCwgKnN2Z0ZvbnREYXRhLCAqZm9udEVsZW1l
bnQsIGZyb20sIG51bUdseXBocywgc2NhbGUsIGlzVmVydGljYWxUZXh0KTsKIH0KIAotdm9pZCBT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25z
dAordm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBn
bHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50KSBjb25zdAogewogICAgIGF1dG8gYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IHRoaXMtPmFj
dGl2ZVBhaW50aW5nUmVzb3VyY2UoKTsKICAgICBpZiAoIWFjdGl2ZVBhaW50aW5nUmVzb3VyY2Up
IHsKICAgICAgICAgLy8gVE9ETzogV2UncmUgb25seSBzdXBwb3J0aW5nIHNpbXBsZSBmaWxsZWQg
SFRNTCB0ZXh0IHNvIGZhci4KICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yKiBz
b2xpZFBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWlu
dGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIHNvbGlkUGFpbnRpbmdSZXNvdXJjZS0+c2V0Q29sb3Io
Y29udGV4dC0+ZmlsbENvbG9yKCkpOworICAgICAgICBzb2xpZFBhaW50aW5nUmVzb3VyY2UtPnNl
dENvbG9yKGNvbnRleHQuZmlsbENvbG9yKCkpOwogICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291
cmNlID0gc29saWRQYWludGluZ1Jlc291cmNlOwogICAgIH0KIApAQCAtMjc3LDE1ICsyNzcsMTYg
QEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKIAogICAgIEFTU0VSVChhY3RpdmVQYWludGluZ1Jl
c291cmNlKTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlTW9kZSByZXNvdXJjZU1vZGUgPSBjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5VG9TdHJva2VN
b2RlIDogQXBwbHlUb0ZpbGxNb2RlOwotICAgIGZvciAoYXV0byB0cmFuc2xhdG9yID0gY3JlYXRl
R2x5cGhUb1BhdGhUcmFuc2xhdG9yKCpmb250LCBudWxscHRyLCBnbHlwaEJ1ZmZlciwgZnJvbSwg
bnVtR2x5cGhzLCBwb2ludCk7IHRyYW5zbGF0b3ItPmNvbnRhaW5zTW9yZVBhdGhzKCk7IHRyYW5z
bGF0b3ItPmFkdmFuY2UoKSkgeworICAgIEdyYXBoaWNzQ29udGV4dCogdXNlZENvbnRleHQgPSAm
Y29udGV4dDsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3VyY2VNb2RlID0gY29udGV4
dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5VG9TdHJva2VNb2Rl
IDogQXBwbHlUb0ZpbGxNb2RlOworICAgIGZvciAoYXV0byB0cmFuc2xhdG9yID0gY3JlYXRlR2x5
cGhUb1BhdGhUcmFuc2xhdG9yKGZvbnQsIG51bGxwdHIsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1H
bHlwaHMsIHBvaW50KTsgdHJhbnNsYXRvci0+Y29udGFpbnNNb3JlUGF0aHMoKTsgdHJhbnNsYXRv
ci0+YWR2YW5jZSgpKSB7CiAgICAgICAgIFBhdGggZ2x5cGhQYXRoID0gdHJhbnNsYXRvci0+cGF0
aCgpOwotICAgICAgICBpZiAoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShl
bGVtZW50UmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0LCByZXNvdXJjZU1vZGUpKSB7Ci0gICAgICAg
ICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKTsK
KyAgICAgICAgaWYgKGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UoZWxlbWVu
dFJlbmRlcmVyLCBzdHlsZSwgdXNlZENvbnRleHQsIHJlc291cmNlTW9kZSkpIHsKKyAgICAgICAg
ICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAg
ICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVyZXIoKSkpCi0gICAg
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAq
IGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpLnNjYWxpbmdGYWN0b3Io
KSk7Ci0gICAgICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJj
ZShlbGVtZW50UmVuZGVyZXIsIGNvbnRleHQsIHJlc291cmNlTW9kZSwgJmdseXBoUGF0aCwgbnVs
bHB0cik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhp
Y2tuZXNzKTsKKyAgICAgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNz
KHN0cm9rZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVy
KCkpLnNjYWxpbmdGYWN0b3IoKSk7CisgICAgICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNl
LT5wb3N0QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHVzZWRDb250ZXh0LCByZXNvdXJj
ZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOworICAgICAgICAgICAgdXNlZENvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MpOwogICAgICAgICB9CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVy
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDUwMWI5YzhmZjEwNTI0YTQ5OGE2ZmU3NzdjYjY5OTk3NzQx
ZWRjMDQuLjlkODVmYmU3YmFhOWVkNDk3NTE4MjY4NmJlM2IxZTkxN2EwNjQ5NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJp
bmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWN0aXZl
UGFpbnRpbmdSZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJjZSogb2JqZWN0KSB7IG1fYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZSA9IG9iamVjdDsgfQogCiAgICAgdmlydHVhbCBHbHlwaERhdGEgZ2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgV2lkdGhJdGVyYXRvciYsIFVDaGFy
MzIgY2hhcmFjdGVyLCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVk
JiBhZHZhbmNlTGVuZ3RoLCBTdHJpbmcmIG5vcm1hbGl6ZWRTcGFjZXNTdHJpbmdDYWNoZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCB0bywgY29uc3Qg
RmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGZsb2F0IGZsb2F0V2lkdGhVc2luZ1NWR0ZvbnQoY29uc3QgRm9udENhc2NhZGUmLCBj
b25zdCBUZXh0UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVkLCBTdHJpbmcmIGdseXBoTmFtZSkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHS2VybmluZyhjb25zdCBGb250
KiwgV2lkdGhJdGVyYXRvciYsIEdseXBoQnVmZmVyKiwgaW50IGZyb20pIGNvbnN0IG92ZXJyaWRl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA5
NjFlMTk4OWU1NzJiYmI3MmE2ZTNlZTliYWEyNDA4YTFlNjU4NGI4Li4wODE1M2MxYTkzZmEzNmYy
NWUzMDY5Njk2MTg3NTMxZmJhMGM1OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWlu
ZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgzMDAsIDE1MCk7CiB9CiAKLXZvaWQg
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAordm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAg
UGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
CiB9CiAjZW5kaWYKIAotdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxv
YXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAordm9pZCBTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAog
ICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGNvbnRhaW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoem9v
bSk7CiAKICAgICAvLyBUaGUgSW1hZ2VCdWZmZXIgc2l6ZSBuZWVkcyB0byBiZSBzY2FsZWQgdG8g
bWF0Y2ggdGhlIGZpbmFsIHJlc29sdXRpb24uCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9y
bSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBj
b250ZXh0LmdldENUTSgpOwogICAgIEZsb2F0U2l6ZSBpbWFnZUJ1ZmZlclNjYWxlID0gRmxvYXRT
aXplKHRyYW5zZm9ybS54U2NhbGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICBBU1NFUlQo
aW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXJTY2FsZS5o
ZWlnaHQoKSk7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAg
ICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0
dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNp
emUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29sb3JTcGFj
ZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKLSAgICBp
ZiAoY29udGV4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkKKyAgICBpZiAoY29udGV4dC5kcmF3THVt
aW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSwgVW5zY2FsZWQpOwpAQCAtMjE3LDExICsyMTcsMTEgQEAgdm9pZCBTVkdJbWFn
ZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUKICAgICBBZmZpbmVUcmFuc2Zvcm0gdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3Jt
KHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgx
IC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQo
KSk7CiAKLSAgICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CisgICAgY29u
dGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCi12b2lk
IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybjsKQEAgLTIyOSwxNSArMjI5LDE1IEBAIHZvaWQgU1ZHSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAgICAgQVNTRVJUKHZp
ZXcpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0
KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKKyAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAg
Y29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwogCi0gICAgZmxvYXQgYWxw
aGEgPSBjb250ZXh0LT5hbHBoYSgpOworICAgIGZsb2F0IGFscGhhID0gY29udGV4dC5hbHBoYSgp
OwogICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gY29tcG9z
aXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9y
bWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5j
eUxheWVyKSB7Ci0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEp
OwotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKGFscGhhKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICB9CiAKICAgICBGbG9hdFNp
emUgc2NhbGUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdo
dCgpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CkBAIC0yNDcsOCArMjQ3LDggQEAgdm9pZCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmwKICAgICBGbG9hdFNpemUgdG9wTGVmdE9mZnNldChzcmNSZWN0LmxvY2F0aW9u
KCkueCgpICogc2NhbGUud2lkdGgoKSwgc3JjUmVjdC5sb2NhdGlvbigpLnkoKSAqIHNjYWxlLmhl
aWdodCgpKTsKICAgICBGbG9hdFBvaW50IGRlc3RPZmZzZXQgPSBkc3RSZWN0LmxvY2F0aW9uKCkg
LSB0b3BMZWZ0T2Zmc2V0OwogCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRlc3RPZmZzZXQueCgp
LCBkZXN0T2Zmc2V0LnkoKSk7Ci0gICAgY29udGV4dC0+c2NhbGUoc2NhbGUpOworICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7CisgICAgY29udGV4
dC5zY2FsZShzY2FsZSk7CiAKICAgICB2aWV3LT5yZXNpemUoY29udGFpbmVyU2l6ZSgpKTsKIApA
QCAtMjU4LDEwICsyNTgsMTAgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICBpZiAodmll
dy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAKLSAgICB2aWV3LT5w
YWludChjb250ZXh0LCBpbnRlcnNlY3Rpb24oY29udGV4dC0+Y2xpcEJvdW5kcygpLCBlbmNsb3Np
bmdJbnRSZWN0KHNyY1JlY3QpKSk7CisgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0
aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CiAK
ICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBj
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiAKICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA2ZGY1YTFhNGU4ZTJiNTQ0NDIxNWI3NzVl
MTQ1MDBmNWNiZmE0NzA0Li5mYWU4ZDBjODNlOTI0YTY3NGYwMTEyMTZiODJlNWViM2JmMjA0MTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtOTEsOSArOTEsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZl
ciYsIGNvbnN0IFVSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdGb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplLCBm
bG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIENvbG9yU3BhY2UsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBG
bG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwCmluZGV4IDEwNTM1NDgxODcyOWY3ODU4NGZmYTM3ZWViYTViMTMwMTEw
ZTY1OTguLjE5YzQ3MWIyYzg5MjQwYzM1ZGNmNmVkOWJmNjE2ZTM4ZjYxNTY3Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNw
cApAQCAtMzQsMTMgKzM0LDEzIEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250
YWluZXJTaXplKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCit2b2lkIFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAgIG1faW1hZ2UtPmRy
YXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3Qs
IHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogfQogCi12b2lk
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAg
IG1faW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IGE0ZWVhYTlmNzYz
YjZmM2U2MGMwZjNjMWE5NzA2M2UzYmFiMDJiMjAuLjk3Njk1ZmRhOGY2YjllYzBkYzdiODk5ZjIw
OTVkOWZhMDM1MTYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAg
bV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJp
bnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
cmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxv
YXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZy
YW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXgg
MTU2NzQ0MzIyYjg0ODhiZjM4ZWE0YzNlZGNlYjA2MjhiYmU1MzgwMy4uZjA3MjUxOGY0NDE3NTEx
Yzc5MTM5MGU5OTYyN2Y1YjVkMTdlNDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lk
IEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAocmVuZGVyZXIpIHsK
ICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRl
cigpLmFic29sdXRlVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkt
PmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdEltYWdlLT5jb250
ZXh0KCkuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgICAgICBTVkdFbGVtZW50
KiBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkp
OwogICAgICAgICBpZiAoY29udGV4dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
ICAgICAgICAgLy8gSWYgd2UncmUgcmVmZXJlbmNpbmcgYW4gZWxlbWVudCB3aXRoIHBlcmNlbnRh
Z2UgdW5pdHMsIGVnLiA8cmVjdCB3aXRoPSIzMCUiPiB0aG9zZSB2YWx1ZXMgd2VyZSByZXNvbHZl
ZCBhZ2FpbnN0IHRoZSB2aWV3cG9ydC4KICAgICAgICAgICAgIC8vIEJ1aWxkIHVwIGEgdHJhbnNm
b3JtYXRpb24gdGhhdCBtYXBzIGZyb20gdGhlIHZpZXdwb3J0IHNwYWNlIHRvIHRoZSBmaWx0ZXIg
cHJpbWl0aXZlIHN1YnJlZ2lvbi4KICAgICAgICAgICAgIGlmIChsZW5ndGhDb250ZXh0LmRldGVy
bWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS0+Y29uY2F0Q1RNKG1ha2VNYXBCZXR3ZWVuUmVjdHMoRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgdmlld3BvcnRTaXplKSwgZGVzdFJlY3QpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShtYWtlTWFwQmV0d2VlblJlY3RzKEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIGRlc3RSZWN0KSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVudFRyYW5zZm9ybWF0aW9uOwpAQCAtMTM1LDcg
KzEzNSw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZSht
X2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7Cisg
ICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1
bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4
dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0K
aW5kZXggNTEyYWY0MTk0Y2IyNTEzODE4ZDkxMTIzNDkxZjZkMjBlNDhhZjhiNC4uMDAyNWFlMjkz
MDIxN2EyYWU2NjJmZjA0ZDZhMGI2NGM5YjRiZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgLSAodm9p
ZClfd2ViX2RyYXdBdFBvaW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4
dENvbG9yOihOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3Bh
Y2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJs
dWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxD
b2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAq
IDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCi0gICAgICAgIHdlYkNvcmVGb250LmRyYXdU
ZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxpcHBlZCA/
IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKKyAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1Rl
eHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBw
b2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAKICAgICAgICAgaWYgKCFmbGlwcGVkKQogICAg
ICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCmluZGV4IDEyNzgwMjBiODVjNThiMmViM2E4NzhjM2IwM2IzMWQzZmU5ZmQzZGEuLmNmY2Nk
M2NkNjQ5MjY1MjE5NzZjNmJmMTg1NmI2ZThmYjQ1M2RkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBA
IC00ODIsNyArNDgyLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50
OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICBQYWludEJlaGF2
aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBm
cmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwog
Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtdG9GbG9hdFNpemUocmVjdC5sb2Nh
dGlvbigpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10b0Zsb2F0U2l6ZShy
ZWN0LmxvY2F0aW9uKCkpKTsKICAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5j
b250ZXh0KCksIHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKIAogICAgIGZyYW1lVmlldy0+ZnJhbWUo
KS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDQxZDAwODE2MzM3MDI3NGQxZjU1YzU5YTY1NzA4NmNm
OTU0YmZiYzQuLjBiMzIxMjA3YzMyM2U0ZGEwMDkzMGU5YzgwNGUwZDIzOGE5NGNkZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjQ0LDkgKzY0NCw5IEBAIC0gKHZv
aWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5
CiAgICAgfQogICAgIAogICAgIGlmIChjb250ZW50c09ubHkpCi0gICAgICAgIHZpZXctPnBhaW50
Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgICAgICB2aWV3
LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOwogICAgIGVs
c2UKLSAgICAgICAgdmlldy0+cGFpbnQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkp
OworICAgICAgICB2aWV3LT5wYWludChjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsK
IAogICAgIGlmIChzaG91bGRGbGF0dGVuKQogICAgICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9y
KG9sZEJlaGF2aW9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBjNGMzNjE5OWVkOWU5ZmRjNzY2ZWZlMDg0
NTczNzljNzI4NWViMzJlLi4xNmMzYTQ3OWE1MjNlMWJiYzRmYTc3NWVhOTA5ZGIwOGQxMGMyYzdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnBhaW50KCkKICAgICBpZiAobV9wbHVnaW4tPmlzVHJhbnNwYXJlbnQoKSkKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIG1fcGx1Z2lu
LT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0KCksIGRpcnR5UmVjdCk7CisgICAgbV9wbHVnaW4t
PnBhaW50KCpncmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7CiAKICAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJveHk6OlVwZGF0ZShkaXJ0eVJl
Y3QpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5jcHAKaW5kZXggZjc0MjU1OWUzZWQwYjVmMjZmYjMwMTk2YTI1MWRk
ZTVlY2YyNDY3MC4uMzkxZWFjMWI0MjdhMGI1ZGMzZjk1NDRjOWMwOWMzYmJlYzg2MmVjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjEs
NyArMTYxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFt
ZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKIAogICAgIFBhaW50QmVoYXZpb3Ig
b2xkUGFpbnRCZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1l
Vmlldy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBh
aW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QsIHNob3Vs
ZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZy
YW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQuZ2V0KCks
IHJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0
ZXMpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsK
IAogICAgIHJldHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0lu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDUwMTk3NzBhOWU0NmQwZWJmNjVjODZl
YjRiNzZlNGY2YzMyZGRkMmUuLjY1ZmJlNzNiNWZmN2JmYmE3ZTIwMjQ0ZjhiMjNjMmE4MWJlMmM3
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
CkBAIC0xNDMsNyArMTQzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3AKICAgICBmcmFtZVZp
ZXctPnNldFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAgICAgb3duZXJEb2N1bWVudC51
cGRhdGVMYXlvdXQoKTsKIAotICAgIGZyYW1lVmlldy0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCBwYWludFJlY3QpOworICAgIGZyYW1lVmlldy0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwg
cGFpbnRSZWN0KTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhh
dmlvcik7CiAKICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA5OWY5MTI3MjdkMzU3NjgzMTY3NTJj
YTU0Nzc2ZWRiOGY0NTNlM2E1Li4zM2I5MTNhOWZiZDk2NzM4ZmE1OGNmNzVkNTBhMTUxMjc0ZDBh
NTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lk
IE5ldHNjYXBlUGx1Z2luOjpkZXN0cm95KCkKICAgICBtX3RpbWVycy5jbGVhcigpOwogfQogICAg
IAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBB
U1NFUlQobV9pc1N0YXJ0ZWQpOwogICAgIApAQCAtNzY4LDcgKzc2OCw3IEBAIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgLy8gd2hpY2ggd2Ug
Y3VycmVudGx5IGRvbid0IGhhdmUgaW5pdGlhdGVkIGluIHRoZSBwbHVnLWluIHByb2Nlc3MuCiAg
ICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgY29udGVu
dHNTY2FsZUZhY3RvcigpKSk7CiAKLSAgICBwbGF0Zm9ybVBhaW50KGNvbnRleHQuZ2V0KCksIElu
dFJlY3QoSW50UG9pbnQoKSwgbV9wbHVnaW5TaXplKSwgdHJ1ZSk7CisgICAgcGxhdGZvcm1QYWlu
dCgqY29udGV4dCwgSW50UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVlKTsKIAog
ICAgIHJldHVybiBiaXRtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGU0NjgxNGE0
YTg1ZTFjYTU0NDRlOTFjMTI2NjYyNDE4MWE2NTcyYjkuLjI5ZTIyYzljZWQ2NmUwN2VmZTk1NWE1
ZjFmZjM4NjBiOTc3YjU5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xNzcsNyArMTc3
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHBsYXRmb3JtSW52YWxpZGF0ZShjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCk7CiAgICAg
dm9pZCBwbGF0Zm9ybVZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHBsYXRmb3JtUGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0LCBib29sIGlzU25hcHNob3QgPSBmYWxzZSk7CisgICAgdm9pZCBwbGF0Zm9ybVBhaW50
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5
UmVjdCwgYm9vbCBpc1NuYXBzaG90ID0gZmFsc2UpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUhhbmRs
ZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgcGxhdGZvcm1IYW5k
bGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBw
cml2YXRlOgogICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0
IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0
dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1
Z2luTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVBsdWdpbk1hYy5tbQppbmRleCA4NDhiMzM4MmUwMjBlMmMyMmE0MGFiNWNjOTI2
YTcwYjJhMzA5YmRiLi42Zjc1MzE5MWFmOThlZGFlMmJmMWI1MjYyZmViODI3NGE4MjRlMTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KQEAgLTQ0NCw5ICs0NDQsOSBA
QCBzdGF0aWMgRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoY29uc3QgV2ViRXZlbnQm
IGV2ZW50KQogCiAjZW5kaWYKIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBp
c1NuYXBzaG90KQordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90
KQogewotICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIHN3aXRjaCAobV9ldmVudE1vZGVsKSB7CiAgICAgICAg
IGNhc2UgTlBFdmVudE1vZGVsQ29jb2E6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGFkZWY2Y2IzNjk2NWY4MDQyZDBjYzAy
YWMxZmNkYTQ3ZmM5MWYwNjguLjRjNTI1NmQ1YTFjYWNlZjIyOTg1ZTU0NmI4MTkxYTA0MWZhNjk4
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaApAQCAtMTE1LDggKzExNSw4IEBAIHByaXZhdGU6CiAgICAgLy8gUGx1Z2luIGZ1bmN0
aW9ucy4KICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGUgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcykg
b3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
bmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNjFjZjRm
ZWE4MWExYzg2MTVjZmJmZDgyM2YwZmIwMDA4NjQ4NmE1ZS4uMTExYTIyNWM3MTk3MmNlYzA1ZTZi
YmNiZmRmNTEyOGUxYzA0YzI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTExMTEsOSArMTExMSw5IEBAIHZvaWQgUERG
UGx1Z2luOjpkZXN0cm95KCkKICAgICBbbV9jb250ZW50TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOwogfQogCi12b2lkIFBERlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0KQordm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50
cyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKLSAgICBBU1NFUlQoZ3JhcGhp
Y3NDb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKTsKKyAgICBBU1NFUlQoZ3JhcGhpY3ND
b250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpOwogCiAgICAgaWYgKG1faG9yaXpvbnRhbFNj
cm9sbGJhcikKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBA
IC0xMTMyLDcgKzExMzIsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJ
bkNvbnRleHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZQogICAgIGlmIChsYXll
ciA9PSBtX3Njcm9sbENvcm5lckxheWVyKSB7CiAgICAgICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVy
UmVjdCA9IHRoaXMtPnNjcm9sbENvcm5lclJlY3QoKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVyUmVjdC54KCksIC1zY3JvbGxDb3JuZXJSZWN0LnkoKSk7
Ci0gICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcigwLCAm
Z3JhcGhpY3NDb250ZXh0LCBzY3JvbGxDb3JuZXJSZWN0KTsKKyAgICAgICAgU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnBhaW50U2Nyb2xsQ29ybmVyKG51bGxwdHIsIGdyYXBoaWNzQ29udGV4dCwg
c2Nyb2xsQ29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xMTQ3
LDcgKzExNDcsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRl
eHQoQ0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsYmFyLT54KCksIC1zY3Jv
bGxiYXItPnkoKSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWludCgmZ3JhcGhpY3NDb250ZXh0LCBzY3Jv
bGxiYXItPmZyYW1lUmVjdCgpKTsKKyAgICBzY3JvbGxiYXItPnBhaW50KGdyYXBoaWNzQ29udGV4
dCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IFBERlBsdWdpbjo6c25hcHNob3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmNwcAppbmRleCBmNmQxYzA1NDc0NDJmOTNjYmE3N2QwYzExNTA4MjRhZmU1YjYx
MmU0Li4xNTQ5M2Y4NmExNzMwYjA3MTM4ZDZhZjQyNDdjNjRiNGQyMDljMTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgUGx1Z2luOjpkZXN0cm95UGx1Z2luKCkKICAgICBtX3BsdWdpbkNvbnRyb2xsZXIg
PSAwOwogfQogCi12b2lkIFBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4
dCopCit2b2lkIFBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCYpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCAx
MWNmMTQ5MTM4ZjgwYWY0ODNmYzAwYzE2ZTMyOWJlYmMwM2UwYWU4Li5mMjc5ZWJiY2Y0NTc5YTk5
ZDY4ZjBhMzc3ZTIxOGNhNjNiN2I2OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBU
ZWxscyB0aGUgcGx1Zy1pbiB0byBwYWludCBpdHNlbGYgaW50byB0aGUgZ2l2ZW4gZ3JhcGhpY3Mg
Y29udGV4dC4gVGhlIHBhc3NlZC1pbiBjb250ZXh0IGFuZAogICAgIC8vIGRpcnR5IHJlY3QgYXJl
IGluIHdpbmRvdyBjb29yZGluYXRlcy4gVGhlIGNvbnRleHQgaXMgc2F2ZWQvcmVzdG9yZWQgYnkg
dGhlIGNhbGxlci4KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGRpcnR5UmVjdCkgPSAwOwogCiAgICAgLy8gSW52YWxpZGF0ZSBuYXRpdmUgdGludGFi
bGUgY29udHJvbHMuIFRoZSBwYXNzZWQtaW4gY29udGV4dCBpcyBpbiB3aW5kb3cgY29vcmRpbmF0
ZXMuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWlu
IHN1cHBvcnRzIHNuYXBzaG90dGluZyBvciBub3QuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
U25hcHNob3R0aW5nKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZTdjNTNkNzhhNjljNjBkYjgwYTg2NjY0
ZTc3Zjc2NzQzMGQ5NzMyOS4uNmQ3YjQ2ZDJjNjhmYmJjYzRiNTliYTY0MmNjNzFkMDNjODBlY2M3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJveSgpCiAg
ICAgbV9jb25uZWN0aW9uLT5yZW1vdmVQbHVnaW5Qcm94eSh0aGlzKTsKIH0KIAotdm9pZCBQbHVn
aW5Qcm94eTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgaWYg
KCFuZWVkc0JhY2tpbmdTdG9yZSgpIHx8ICFtX2JhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlCiAgICAgICAgIG1f
cGx1Z2luQmFja2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEgPSB0cnVlOwogICAgIH0KIAotICAg
IG1fYmFja2luZ1N0b3JlLT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50c1NjYWxlRmFj
dG9yKCksIGRpcnR5UmVjdC5sb2NhdGlvbigpLCBkaXJ0eVJlY3QpOworICAgIG1fYmFja2luZ1N0
b3JlLT5wYWludChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgZGlydHlS
ZWN0LmxvY2F0aW9uKCksIGRpcnR5UmVjdCk7CiAKICAgICBpZiAobV93YWl0aW5nRm9yUGFpbnRJ
blJlc3BvbnNlVG9VcGRhdGUpIHsKICAgICAgICAgbV93YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNl
VG9VcGRhdGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmgKaW5kZXggOWNkZmMxOTUyNWFhYjliNmEzMWQ0NTI2ZmQ0MzY2Y2UyZjc1
NzljMi4uNzdhZDRlNjkwN2VlNGUxZjU5Mjk3OWIwZjQ2ZDc4Y2M3MjEzMGM3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTc3LDcg
Kzc3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGluaXRpYWxpemVTeW5jaHJvbm91c2x5KCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBw
YWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBk
aXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlk
ZTsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiYWY1NjcxZWNhNjZkNTFlZGM2NzE4MjI0NGQw
MDljNTJjN2I1ZDUwLi5jMzk2ZTg0ODZlOWI1ZTFmNWYyMDg2OTkwY2NhYzkzYzFlMzMyYTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC03OTIsMTMgKzc5MiwxMyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldEZyYW1lUmVjdChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogICAgIHZpZXdHZW9tZXRyeURpZENoYW5nZSgpOwog
fQogCi12b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLykKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQogewogICAg
IGlmICghbV9wbHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRp
c3BsYXlTdGF0ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYgKGNvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRp
bnRzKCkpCiAgICAgICAgICAgICBtX3BsdWdpbi0+dXBkYXRlQ29udHJvbFRpbnRzKGNvbnRleHQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODEwLDE0ICs4MTAsMTQgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8q
ZGlydHlSZWN0Ki8pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3RyYW5zaWVudFBhaW50
aW5nU25hcHNob3QpIHsKLSAgICAgICAgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90LT5wYWlu
dCgqY29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBmcmFtZVJlY3QoKS5sb2NhdGlvbigp
LCBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QtPmJvdW5kcygpKTsKKyAgICAgICAgbV90cmFu
c2llbnRQYWludGluZ1NuYXBzaG90LT5wYWludChjb250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9y
KCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCksIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+
Ym91bmRzKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBj
b29yZGluYXRlIHN5c3RlbSBzbyB0aGF0IHRoZSBvcmlnaW4gaXMgaW4gdGhlIHRvcC1sZWZ0IGNv
cm5lciBvZiB0aGUgcGx1Zy1pbi4KLSAgICBjb250ZXh0LT50cmFuc2xhdGUoZnJhbWVSZWN0KCku
bG9jYXRpb24oKS54KCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueSgpKTsKKyAgICBjb250ZXh0
LnRyYW5zbGF0ZShmcmFtZVJlY3QoKS5sb2NhdGlvbigpLngoKSwgZnJhbWVSZWN0KCkubG9jYXRp
b24oKS55KCkpOwogCiAgICAgbV9wbHVnaW4tPnBhaW50KGNvbnRleHQsIHBhaW50UmVjdCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCA1NTEwNjAyM2RlNmQ5OGM5MTA2Y2FlNGMyYmNiYTkyNGFhMzIwZTM3Li43OGE4ZGNiODgzZjBk
MWJhMjI3ZWI4ZjhlY2M5ZGVjZGEzODE0ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgog
CiAgICAgLy8gV2ViQ29yZTo6V2lkZ2V0CiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVJl
Y3RzQ2hhbmdlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM0MzYyMGJlODhjZTliZGJjMGU4MTc3NjJjOTg0N2VjMTA0
NThlODcuLmM1NmJiYmJlM2NkODU0N2ZiNjdkNzc3N2I5YjA3YzE2NjZhMDU4ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMzQsNyAr
MTMzNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAocmVjdCk7CiAKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+cGFpbnQo
JmdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52
aWV3KCktPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiB9CiAKIGRvdWJsZSBXZWJQYWdl
Ojp0ZXh0Wm9vbUZhY3RvcigpIGNvbnN0CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBQYXNzUmVmUHRy
PFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBj
b25zdCBJbnRTaXplJgogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29v
cmRpbmF0ZXMpCiAgICAgICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3Jk
aW5hdGVzOwogCi0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhp
Y3NDb250ZXh0LmdldCgpLCBzbmFwc2hvdFJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29y
ZGluYXRlU3BhY2UpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpn
cmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIGNvb3Jk
aW5hdGVTcGFjZSk7CiAKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2Vs
ZWN0aW9uUmVjdGFuZ2xlKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUg
PSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygp
OwpAQCAtMTgxOSw3ICsxODE5LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25h
cHNob3ROb2RlKFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1l
Vmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgIGZy
YW1lVmlldy0+c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50Q29u
dGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHNuYXBzaG90UmVjdCwgRnJh
bWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMp
OworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRl
eHQsIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6
OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3Vu
ZENvbG9yKHNhdmVkQmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0Ry
YXcobnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL0ZpbmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCBmNWU4NmRmMDFmZGExOWQyZTZl
NDFlMWY0MDhiOGRjMzE1YjhhMjhjLi5iZDIxNTczYTY0YWEzM2JmOTkxYTA3MTc1ZWY2NjdjYzdh
YjcwYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L0ZpbmRDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGaW5k
SW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXks
IEdyYXBoaWNzQ29udGUKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtb3ZlcmxheUZyYW1lLngo
KSwgLW92ZXJsYXlGcmFtZS55KCkpOwogICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGb3JjZUJs
YWNrVGV4dCB8IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgICAg
ICBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRDb250ZW50cygmY29udGV4dCwgb3ZlcmxheUZyYW1lKTsK
KyAgICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoY29udGV4dCwgb3ZlcmxheUZy
YW1lKTsKICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhh
dmlvck5vcm1hbCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260211</attachid>
            <date>2015-08-28 21:29:39 -0700</date>
            <delta_ts>2015-08-28 21:43:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828212923.patch</filename>
            <type>text/plain</type>
            <size>727505</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5k
ZXggNGMwZjkyMTRhMTliNjE5YTE2MzVjMjdhYTI5MTY4MGZiODg1NDBiZi4uZTNiZDQ2ZmNlZTNk
YTcwNDc3MWU0NGYyODhkMzEyNWI5NjRmNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKQEAgLTM5LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdSZWN0SW50b0NvbnRleHQoSW50UmVjdCByZWN0LCBGcmFtZVZpZXcq
IHZpZXcsIEdyYXBoaWNzQ29udGV4dCogZ2MpCitzdGF0aWMgdm9pZCBkcmF3UmVjdEludG9Db250
ZXh0KEludFJlY3QgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQmIGdjKQog
ewogICAgIEludFNpemUgb2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgcmVjdC5t
b3ZlKC1vZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQoKSk7CiAgICAgcmVjdCA9IHZpZXct
PmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cocmVjdCk7CiAKLSAgICBnYy0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSkpOworICAgIGdj
LmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpKTsKIAogICAgIHZpZXctPnBhaW50KGdjLCByZWN0KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRS
ZWN0JiBpcikKIAogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKIAotICAgIGRyYXdS
ZWN0SW50b0NvbnRleHQoaXIsIGZyYW1lLT52aWV3KCksICZnYyk7CisgICAgZHJhd1JlY3RJbnRv
Q29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
b250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3
NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzEx
NDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0
aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNj
cm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmll
dzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBp
bnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOworICAgICAgICBwYWludFNj
cm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3Qo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAg
SW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFy
ZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMo
aWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsx
MjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGly
dHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVD
b250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwg
LXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAt
c2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC5j
bGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cg
cGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYm
IChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAg
ICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwogICAgICAgICBJbnRSZWN0IHZp
c2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0
SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50
KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRT
Y3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTks
MTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAg
ICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRo
aXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5n
QXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFu
ZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFh
OGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0
byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVw
IHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2
b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVj
dGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6
ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVk
U2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXgg
YzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJj
N2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQ
cm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
dm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGlu
dHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRl
eHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisg
ICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAg
ICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNl
MGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0
b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3Mg
PSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4x
NmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
IAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYy
YTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSAr
MjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxi
YXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJl
dHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIx
MzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1
MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3
N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4K
ICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJhY2siKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0
LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsK
KyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEp
OwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTks
IDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAg
IG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUu
Y2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBj
b250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFi
NGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1
aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VT
Y2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2Nh
bGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2Yg
dGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAg
V2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBj
b21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNh
biBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAg
dmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFj
dG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0
byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMg
aW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1
ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNk
YjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52
YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIy
OTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRv
Qm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0Jv
eChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJ
bWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNw
ZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9C
b3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwog
ICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7
CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0lt
YWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFu
c2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNj
YWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNs
YXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0K
IAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9p
ZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIC8v
IFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0g
IndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9h
dFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAg
ICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRo
KG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJh
MDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAg
ICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQy
NTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMx
YWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9X
aWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1
Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3
ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAg
aWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1
bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zv
cm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJlM2MwNmJhNC4uMDUwOGQ1NWNlOGM3
NDBmZWU4YTgwNjJlZmYzMjU2NDMyNGNjYTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4K
QEAgLTIwMSwxMiArMjAxLDEyIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkp
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0
NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5OTQ2MzY2OWY0YTEwNGM5NWM5
MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQxLDY4ICs0MSw2OCBAQCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21J
bWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRl
U3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJn
ZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogCiAg
ICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhh
dmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQg
YSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS0+
aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
b3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsK
KyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAgIGlmICh0YXJnZXRTaXpl
ICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHRhcmdldFNp
emUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRTaXplLmhlaWdodCgpIC8gaW1h
Z2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVp
Z2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVT
aXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9w
ZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShj
b250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1f
Y3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNyY1JlY3Qu
eCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RS
ZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxl
cmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdp
dGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgZHJhd0Nyb3NzZmFk
ZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1NmE5ODc1MTRjYjcxYTE3YjRj
NzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRiMzI5ZDYyOGRhZTM3YjZhNWY3
MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdD
cm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZSogbV9mcm9tSW1hZ2U7CiAg
ICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNkYzkyZDExM2ZjMjBhNGY5MTA1
YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9
IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIC8vIERv
bid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFy
ZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNl
JyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZh
bGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHJ1bik7CkBAIC0x
MzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgaWYgKG5l
eHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250
RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJh
d1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0
R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgcmVuZGVyaW5n
Q29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBs
YXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCBmb250RGF0
YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2lu
dCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogCiAg
ICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0g
bmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0ICYm
IGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NW
R0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRy
YXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5l
eHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0
RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICBkcmF3R2x5
cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50LnNldFgobmV4dFgpOwogICAg
IH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAg
cmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZlci5mb250QXQoaSksIGdseXBo
QnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlwaERhdGEgbWFya0dseXBoRGF0
YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrLCBtYXJrR2x5cGhEYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmlu
ZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3NGE4NjIuLjE2NmI5MGU4NzVh
Y2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkgKzEzMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKSBjb25zdDsKIAogICAgIGVu
dW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBV
c2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0g
LTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVu
dHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0
dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8s
IEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMp
IGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0g
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
ICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CkBAIC0yMzgsOCAr
MjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJhd0Nv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzllZWZiMmFjOWY3YWU1NTZlMzc1
YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4NzdlNmRlODllYzQzYTBlNWI4ZTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBlYTNiOGI0MmVlNmQ5ODQxZTUy
OTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5YzU5YTU4YTRmYjIxOGViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
CiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRleHQtPmNsaXAoZGVzdFJlY3Qp
OwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOworICAgIGRlc3RDb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRlc3RSZWN0
LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVzdENvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC0+dHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAg
ICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBkZXN0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCAqbV9ncmFk
aWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92aWRl
IHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKICAgICBtX2dy
YWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKGFkanVzdGVkU2l6ZSwgYWRq
dXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUgZGVzdGluYXRpb24gY29udGV4
dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29sdXRpb24KLSAgICBBZmZpbmVU
cmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91YmxlIHhTY2FsZSA9IGZhYnMoZGVz
dENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2NhbGUgPSBmYWJzKGRlc3RDb250
ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRqdXN0ZWRQYXR0ZXJuQ1RN
ID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBAQCB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVkSW1hZ2VC
dWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0Fs
cGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFn
ZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250
ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNB
bHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAg
ICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFk
anVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNr
KCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAg
IH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7
Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKKyAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNhMGRmNGM0ZWFiMzdhLi42ZWM1
NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBjb25zdCBGbG9hdFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLjMw
MzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UtPmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkBAIC00
MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxv
d1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAgLTY0MCwyMCArNjQwLDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBGbG9hdFNpemUgc2Nh
bGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhT
Y2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhpcywgaGFzQWxwaGEpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCks
IHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0dXJuIHNjYWxlc01hdGNoKGdl
dENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQo
KSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOworICAgIHJldHVybiBz
Y2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVy
YXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9
CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRy
YW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEds
eXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
KyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lk
IGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5z
aWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4
YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBiMzc4MWVjMGE4ZjQzNWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJvKiBjb250ZXh0KTsKICNlbGlm
IFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAKICAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMu
LmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMwMTQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4LDIzICs3OCwyMyBAQCBib29s
IEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxX
aXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0
eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVD
b2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29t
cG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9y
Lmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkg
OiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNl
KTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9y
U3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewogICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICBvbmVU
aWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAKICAgICAvLyBDaGVjayBhbmQg
c2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBjb3ZlciB0aGUgZW50aXJlIGFy
ZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9uZVRpbGVSZWN0LmNvbnRhaW5z
KGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkgeworICAgIGlmIChvbmVU
aWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJhd0x1bWluYW5jZU1hc2soKSkg
ewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0LngoKSkgLyBzY2FsZS53aWR0aCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2Ug
dGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoc2l6
ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS5o
ZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZp
c2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgwKTsKQEAgLTE2
NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0
IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJh
bnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQ
aXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXpl
LmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsK
ICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxz
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7
Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7
CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwog
ICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3
ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uZjY5YTA1OWZhODk1YWM2MjZhYzdiOGJhYjNlNmJhNjRjNWE4NzA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4
NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJl
IHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY0YzY2
Yzc4YzhlY2VhYjFhOGFjOGRiNTNlNzAxYjVlNjg4OTViNzAuLjI3ZjZiMzFmMDM4Y2U1MjQwODNm
ZWY3NjljMGViODJmMWE4MWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtODMyLDEwICs4MzIs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YXMKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFz
c2V0U3RhdHVzTG9hZGVkOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFw
cGVyKSkgewpAQCAtODQ3LDEwICs4NDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXgKICAg
ICBwYWludChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFp
bnQoJXApIiwgdGhpcyk7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsbwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fYXZmV3JhcHBlci0+Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJl
bnRNZWRpYVRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwg
LTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAg
IEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNmNjOWE1NTNmNjM2Nzk2OWE1NGU2
ODBhNWYyMWRlZDlmZWM0MWZhZi4uZTNkYjhkNTBiMzg1YTI5MWI2ODI4ODRmY2IxZTQ2M2EzM2Jk
YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWVk
aWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDlmNTgxZWRmYWQ2OGY4N2MyZDQ1MzUyMmRmMjJlOGU0NjM1M2I3OWUuLmY4
YmFkZGRmNDI4YzhjNjQwYTU4NDk2Nzc0M2VkYjNkZDNkODVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKICAgICB2b2lkIGRl
c3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZUZvclRpbWVJblJlY3QoZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAg
ICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoKTsKICAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpOwotICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDY1ZmI0ZDI5NjMyNDBmZWJjODVmMTc5OTFlNDc3ZDUyZmE0ZTNl
ZjkuLjUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTQ5NCw5ICsxNDk0LDkgQEAgbG9uZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphc3NldEVycm9yQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtl
cnJvciBjb2RlXTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnQKICAgICBtX3ZpZGVvRnJhbWVIYXNEcmF3biA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXF1ZXN0IGlmIHdlIGFyZSBhbHJlYWR5IHJlbmRlcmlu
ZyB0byBhIGxheWVyLgpAQCAtMTUzMSwxOCArMTUzMSwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRgogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdl
R2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgp
LCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBw
YWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAg
ICB9CiB9CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fbGFzdEltYWdlID0gY3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkK
IHsKICNpZiAoIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgIW1fbGFzdEltYWdlICYmICF2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkp
CkBAIC0yMzQxLDEzICsyMzQxLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiBjCiAKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dCglcCkiLCB0aGlzKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdl
dFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5n
ZXQoKSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJs
ZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8v
IElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3Qg
ZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRl
byBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhNTc1MzRmMjU4OTc5NjMzNjZhNTA0N2Y2NTgwZjI3
OTZhYzYwNTYyLi41MzcxZDY2MjdlY2UxNDNkNTk4ZTU0OGE1ZmU5MGIzM2I3M2NhMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggYzgwNWIzYjI0NWUzNzRmNzkxMDVkYWQ4NzU1NWNmYWRhZmM0ZjAzZS4uZDc3
NzgyODI5NWM2MzBhMTk4NGZmZGY5OWE0MjJjNDFjNTBhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtNTI0LDEyICs1MjQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCiAgICAgLy8gTm8tb3Au
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiAgICAgLy8gRklYTUUoMTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJ
WE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggNWFlNWI1NTA5ZWQxZmMwOTk1OGQ1MGYyNmY1N2IwNGE1MzlmZWUwNi4uNWEwMDEy
ZWM5ZGEyOTg5M2JmNTgyYjc4Yzk1MTE1OWEwMjZjNDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IGMyNmIzMzU5NzM0ZDIzNGFmZDc5MjI5MmFmZDkzNTcwNDZlMGU2ODkuLjAxZmYy
MmMwOTlmZGI5YTFkOWRkNzkyNTg1YWJjNWQ4ZjQ5N2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUltYWdlRnJvbVNhbXBsCiAg
ICAgcmV0dXJuIHF1YXJ0ekltYWdlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgLy8gRklYTUUo
MTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRl
eCBmMGQzYTdhNzJkYjkyZmRlMWQxYjVmOTkzOGIzYzBjMWU3YWQ2MWYxLi5mNWUzZGUwZTUzNGIw
MTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRz
dC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKQEAgLTgxLDEzICs4
MSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCiAgICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgaWYgKGZyYW1lT3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3Qu
eSgpKTsKICAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVs
dChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhYTEwYzY1YzU2ODQzZTUwMjgwNjhhMzlh
ODcwMjAyYzdiMTRjY2NlLi5mYzUwMzJiNTQ1YWI0NmI2YzdmMjM0ZmZjMTc4NDUzZWU0ODQyOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250
JiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X3Qgb3JpZ2luYWxUcmFuc2Zvcm07Ci0gICAgZmxvYXQgc3ludGhldGljQm9s
ZE9mZnNldCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBmbG9hdCBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKIAotICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjb250ZXh0LCBmb250
LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgIGNhaXJvX3NldF9zY2FsZWRfZm9u
dChjb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgY2Fpcm9f
c2hvd19nbHlwaHMoY29udGV4dCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpIHsKQEAgLTY2LDIxICs2NiwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyRwogICAgICAgICBjYWlyb19zZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9y
bSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBpbnQgbnVtR2x5cGhzKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVy
JiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KTsKIAotICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisgICAg
aWYgKCEoZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8
fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0Lm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8g
T3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0
IHRoZSBTaGFkb3dCbHVyLgotICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGdyYXBoaWNz
Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQpOworICAgICAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0KGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CiAgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFw
aGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
ICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUds
eXBocyk7CiAKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0KTsKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiAKICAgICBjYWlyb190ZXh0X2V4dGVu
dHNfdCBleHRlbnRzOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCksIGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRS
ZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54KCkgKyBleHRlbnRzLnhfYmVhcmluZywgcG9pbnQu
eSgpICsgZXh0ZW50cy55X2JlYXJpbmcsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
IAogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5T
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkpIHsKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0
X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0x
MTIsMTQgKzExMiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQg
Kz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQs
IHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dC0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRD
YWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1Rv
Q29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6
ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9r
ZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIg
dGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8
IDIgKiBvZmZzZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBj
b250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAq
IG9mZnNldCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhj
b250ZXh0LnN0YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4
dC5zdHJva2VUaGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUg
Q1RNLCBidXQgd2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgot
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBn
bHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCA2Nzg0MGM1ZTk0ZmZmZmUzZjIzNmYwYjgxMjJh
MjIwMWViYWU1M2VkLi40ZmVjMWFhZWIyZWQ5ZDRiNzZlOTM0MzkyZjRlMzJhODYxOWFlOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtNTIsNyArNTIsNyBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGludCwgaQogICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMg
KyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250
ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyog
bWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBp
bnQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1
biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjhjN2M5NjBmZDlmOWRmNTEzNWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uMmVjMGZiOTlk
YzQ5Y2ZjYzQ1MGI1ZTlkNmE3NWI4MjQzZTFhN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAgICAg
RmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhd2luZ1N0eWxlKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7Ci0gICAg
U2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKTsKKyAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBv
ZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250
ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2Fpcm9fcGF0aF90LCB2b2lkKCopKGNhaXJvX3BhdGhfdCopPiBwYXRoKGNhaXJvX2NvcHlf
cGF0aChjYWlyb0NvbnRleHQpLCBbXShjYWlyb19wYXRoX3QqIHBhdGgpIHsKICAgICAgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KHBhdGgpOwogICAgIH0pOwpAQCAtMTI5LDE0ICsxMjksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGF0aERyYXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgRmlsbCkgewogICAg
ICAgICBjYWlyb19zYXZlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0
ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3Rh
dGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CiAgICAgICAgIGNhaXJv
X2ZpbGwoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2UpIHsK
ICAgICAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9TaGFkb3dDb250ZXh0LCBwYXRoLmdldCgp
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JT
dHJva2luZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVz
ZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBy
ZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpE
b05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKQEAgLTE0OSwyOCArMTQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICBj
YWlyb19maWxsKGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0
LCBGaWxsKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aChjb250ZXh0KTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIFN0cm9rZSk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTdHJva2luZyhjb250ZXh0LT5zdGF0ZSgpKTsKLSAgICBjYWlyb19zdHJva2UoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCktPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCkpOworICAgIGNhaXJvX3N0cm9r
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCogY3IpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCh0aGlzKTsKKyAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0
aCgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLT5jb250ZXh0KCkpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC00NTAsNyArNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LCBjb2xvcik7CiB9CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwg
d2lkdGgpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAg
c2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiB9CiAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dC
bHVyKCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0KTsKQEAg
LTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBz
ZXRQYXRoT25DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7Cisg
ICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQxNWY5ZGM3OWZkYmY5NDAxNTMxYWRiY2Fk
Y2Q5YTI2ZTE3MjVkNTYuLmMyMGY5MmQxYmE2MDdlMTYzZGM0YTllNDA0M2FiN2E5Yjg0MzhjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuICpt
X2RhdGEubV9jb250ZXh0OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0xNjAsMjAgKzE2MCwyMCBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBtYXNrUmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zdAogewotICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIG1hc2tSZWN0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQogewotICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRl
eHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiwgQ29vcmRpbmF0ZVMKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFh
NDQ5MTg2N2JjMGQ5MWQ5YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2
YWM2ZjBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDU5OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEw
ZTdmZjg3M2JjYjM1YzMwNTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
blRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNv
bgogICAgICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWly
bzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1
cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGgg
c21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVm
IHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7
IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNh
aXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hh
ZG93KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIHBhdHRlcm4uZ2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5oCmluZGV4IDkzNTVlMTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEz
MDUyY2QyZDhkY2VlNzUxYWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEo
KSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIz
ZjIxZWY3NzAwZWU2ZDUwNmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVj
NTExY2NjMjIwYzQ3MjgwODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAg
IHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZy
YW1lKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9u
UmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRD
VE0oY3R4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1
ZGM1MzBhMjhiN2JhYjkuLjk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52
YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMg
fHwgaW1hZ2VXaWR0aCA8PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0g
MCB8fCBjYW52YXNIZWlnaHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxz
IHx8IGltYWdlV2lkdGggPD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9
IDAgfHwgY2FudmFzSGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0
ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKIAotICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNp
Z25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGlt
YWdlSGVpZ2h0LCByb3dCeXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSAr
NTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21w
bGV0ZWx5IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyBy
ZXN1bHRzLgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKLSAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0
Mzg2MzVhYTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4
ZmE0NjM2NWJlNDljMjY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygq
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCByZWN0KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJl
Y3QoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGJiOWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEw
OTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
NDMsOSArMTQzLDkgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgp
KTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAg
IGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgY29udGV4dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAog
ICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgp
OworICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CkBAIC0yMTAsMTMgKzIxMCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9k
YXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzEsMjkgKzIzMSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVy
biBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNj
YWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4
dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBv
dXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAK
LSAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
eworICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwog
ICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9
IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6
ZSwgaW50ZXJuYWxTaXplKCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4Mywz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUo
KSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewot
ICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAog
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSks
IHNvdXJjZUNvcHktPmludGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBz
b3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+
aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29u
dGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250
ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVT
eXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUx
MDMxYTIxNTcwZTVhYTMyMGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBk
OTdmYzYzNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBA
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjdHh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZv
cm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0
eHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5m
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1
ZSBpZiBzaXplIGlzIGF2YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1
bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25z
dAogewogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1l
bnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2Uo
ZGVjb21wb3NlZFRyYW5zZm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm07CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERl
Y29tcG9zZWRUcmFuc2Zvcm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3Jt
Q29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNj
YWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2Fs
ZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUs
MTIgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2Nh
bGUpOwotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNyY1JlY3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xp
ZW50cyB1c2UgbG93LXF1YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRo
cm93cyBvZmYgdGhpcyBvcHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlt
YWdlLCByZXVzZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlm
IGNhY2hlIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hl
biB3ZSBkbyB0aGUgc3Vic2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBjb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJl
cGFpbnRJZk5lY2Vzc2FyeSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25O
b25lICYmIGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYK
IAogICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNo
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxv
YXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKIAogICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwogCi0gICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUg
PSBkc3RSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsK
IApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBA
IC0yNDQsMjYgKzI0MCwyNiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3Vt
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3Jl
ZXMpCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0
KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXpl
LndpZHRoKCksIDApOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwogCi0gICAgY29udGV4dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3Rh
dGlvbkRlZ3JlZXMpKSk7CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwog
CiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERy
YXdQREZQYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSkpOwogfQogCiAjZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKaW5kZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkw
MC4uMjE3YWNkMGVkYjI2NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KTsKKyAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
IAogI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5
YjkxNTkwMjM4MTgzOGU5Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRi
MmU5ZGNhNDFjMDc3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0
dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBo
cywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hv
d0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBn
bHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFC
TEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRh
KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0
Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0
ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAt
MTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCog
Zm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3Qg
Q0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBh
ZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBm
b250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBv
c2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgp
KQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQp
KTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBv
aW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNl
bGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1Bv
aW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBs
eUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwog
ICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENH
UG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRy
YW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0
aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9
CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
aW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBj
b25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQt
PnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJv
b2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9v
dGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7Cisg
ICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8g
c3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewot
ICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRz
ID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBt
YXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnBy
ZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250
ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkg
KzMzOSw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250
ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKCkpOwogI2Vsc2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwg
W2RyYXdGb250IHJlbmRlcmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CisgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9u
dCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7
CiAjZW5kaWYKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0
YS5zaXplKCkpOwogCkBAIC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3Qg
RwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2Ug
PSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwor
ICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0g
PSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYg
IWNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAg
ICBGbG9hdFNpemUgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RN
Lm1hcFNpemUoRmxvYXRTaXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRM
ZW5ndGhJbkRldmljZVBpeGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4
ZWxzLndpZHRoKCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsg
aG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5p
dFNpemVJbkRldmljZVBpeGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBo
b3Jpem9udGFsVW5pdExlbmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JC
aXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29u
dGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5p
c0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxw
aGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFk
b3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUg
WSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250
ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAg
IGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93
VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlw
aHMpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9p
bnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRp
Y19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5
cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyAr
NjYwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZv
ciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3
OCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBm
bG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNw
cAppbmRleCAxNDRjNmE1MjBlNGM1ZGFkNzU0NDcyNTg4YWJmOTRmMDgyNGE3YWViLi5hZmNmNzU5
NzI3OTM3ZmRjNmFjNzM3NmYwNDkwNWY4ZmQyOThkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1h
Z2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7
CiAKICAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBjMTRmNjBm
YzY2OWJlNDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlhZTBiMmJmMjk2
YTBmYTc0ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCB2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
ID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0g
aW4yLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKICAgICBBU1NF
UlQoaW1hZ2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBv
c2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAppbmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMxOWM2Li44NzY2
YWVjYjIyMzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRS
ZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAz
NmJlZmU3YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4NzEzOGZiZGYz
ZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEsOCArMjgxLDgg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFw
cGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50
UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRl
UGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAg
ICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFk
anVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0
ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAppbmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2OTZmLi42MzNl
YmM2NjBiMWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CkBAIC04OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZl
cigpOwogICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiByZXN1
bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQocmVzdWx0Q29u
dGV4dCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsKLSAg
ICByZXN1bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRDb250ZXh0LT5z
ZXRBbHBoYSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJh
ZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIApAQCAt
MTA1LDExICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1Bp
eGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgp
LCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKLSAgICByZXN1
bHRDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAg
IHJlc3VsdENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAK
IHZvaWQgRkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZk
OGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2NzAyMjZkMDE4
YWIyMzcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgp
KTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMjZi
OTMyYWNmZjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUzODVhZTQyMzBi
YTNjOTE4ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTAgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9
IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFhNGUyZjllLi5m
ZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIo
KTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1f
ZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhk
MzE3MmQ5ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2ZWNmOTMxYWVh
NWY4MDlkYmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBG
RVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRp
bGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5N
YXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGls
ZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgp
OworICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngo
KSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGls
ZUltYWdlQ29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZl
Y3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRp
b24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0
ZXJuVHJhbnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKFdU
Rjo6bW92ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZp
bHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0
ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNjLi5iYTE0NzEy
YTNjZjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC00NjYsNyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29udGV4dCgp
KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi43MGIx
ZDU1NjRmNmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApA
QCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VC
dWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0
ZXJDb250ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKKyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKaW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2UxN2UyMy4uMzE5
OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdl
QnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2lu
dCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIu
c291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZv
aWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQppbmRleCAwMmM0OGQ4
ZmIzNjY1ZjhjYWUyNDhiZDJhYjc2ZjcxODE4NzRiOTEyLi5hY2UxOTA1NGI5ZGE1MTBhNzE5MWQw
MGI0ZTViZjZiMmRkY2Q3OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KQEAgLTI1Niw3ICsyNTYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtlcihjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQgdwogCiAgICAgLy8gRHJhdyB1bmRlcmxpbmUuCiAj
aWYgIVBMQVRGT1JNKElPUykKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KHRoaXMpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQoKnRoaXMpOwogICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjdXJyZW50Q29udGV4dCA9IFtOU0dy
YXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSAoQ0dDb250ZXh0UmVmKVtjdXJyZW50Q29udGV4dCBncmFwaGljc1BvcnRdOwogI2Vsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KaW5kZXgg
ZmQxM2FiZmI2ODJlMjFiYjlhMDhhOGY2NGZiZTllMDE0YjJmNTdmMy4uZjQxMDI3ZjUyZWI4ZmI5
OWVkZjIyYzY3ZjAxYjBkOGMzMjUxZTEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBJY29uOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAg
ICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRHQygmY29udGV4dCk7Cisg
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudEdDKGNvbnRleHQpOwog
CiAgICAgW21fbnNJbWFnZSBkcmF3SW5SZWN0OnJlY3QgZnJvbVJlY3Q6TlNNYWtlUmVjdCgwLCAw
LCBbbV9uc0ltYWdlIHNpemVdLndpZHRoLCBbbV9uc0ltYWdlIHNpemVdLmhlaWdodCkgb3BlcmF0
aW9uOk5TQ29tcG9zaXRlU291cmNlT3ZlciBmcmFjdGlvbjoxLjBmXTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKaW5kZXggMDFlODZmMWNjOTJhNWY5NjcwYzJiYzgwY2M5OWIyMjczYTE1
NjFlOC4uMTk2ZGVjYzY0NDdiYjE0MGRkOGRjYzA5OWFhMzg1MGQ4YzlkZjllZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTEyNyw4ICsxMjcsOCBAQCBwcml2YXRlOgogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBhN2EyMTM3ZGMwMzM4NmM0NThm
NTY1ZDljMzI1YTEyYzZjNjEwOTk0Li5hNGMwMGI3NzFmNTg3YjIxY2IxMzIxZjJiNWZiNTM1MDdl
MDY5NTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xMTg0LDcgKzExODQs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZXBhaW50KCkKICAgICBtX3BsYXll
ci0+cmVwYWludCgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQog
ewogICAgIGlkIHF0VmlkZW9SZW5kZXJlciA9IG1fcXRWaWRlb1JlbmRlcmVyLmdldCgpOwogICAg
IGlmICghcXRWaWRlb1JlbmRlcmVyICYmIGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFS
ZW5kZXJpbmdNb3ZpZUxheWVyKSB7CkBAIC0xMTk3LDkgKzExOTcsOSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleAogICAgIHBhaW50KGNvbnRleHQsIHIpOwogfQogCi12b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQogewotICAgIGlmIChjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkgfHwgbV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKKyAgICBpZiAoY29u
dGV4dC5wYWludGluZ0Rpc2FibGVkKCkgfHwgbV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKICAgICAg
ICAgcmV0dXJuOwogICAgIGlkIHF0VmlkZW9SZW5kZXJlciA9IG1fcXRWaWRlb1JlbmRlcmVyLmdl
dCgpOwogICAgIGlmICghcXRWaWRlb1JlbmRlcmVyKQpAQCAtMTIxMSwxMiArMTIxMSwxMiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcgogICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3RvcigxLjBmLCAt
MS4wZik7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdChGbG9hdFBvaW50KCksIHIuc2l6ZSgpKTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+dHJhbnNsYXRlKHIueCgpLCByLnkoKSArIHIuaGVpZ2h0KCkpOwotICAgIGNv
bnRleHQtPnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShyLngoKSwg
ci55KCkgKyByLmhlaWdodCgpKTsKKyAgICBjb250ZXh0LnNjYWxlKHNjYWxlRmFjdG9yKTsKKyAg
ICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7
CiAKLSAgICBuZXdDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdp
dGhHcmFwaGljc1BvcnQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpOT107Cisg
ICAgbmV3Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3Jh
cGhpY3NQb3J0OmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkgZmxpcHBlZDpOT107CiAKICAgICBb
TlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwogICAgIFtOU0dyYXBoaWNzQ29u
dGV4dCBzZXRDdXJyZW50Q29udGV4dDpuZXdDb250ZXh0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
aW5kZXggMGRjZjZjMWNhOWNmZmQyZDIzZDZmNDhjNWM5MTY0M2UxYzEwMDViNy4uYmZhYWZhOTM1
NzAwMDdkNWZkYzIzNTNiMDFiMjRkMTQ0NTMxYWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
QEAgLTY5LDE5ICs2OSwxOSBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBbbV9kb2N1bWVudCBwYWdlQ291bnRdOwogfQogCi12b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRDb250ZXh0
KGNvbnRleHQpOwogCiAgICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRhdGVkIGJ5IFBERktp
dCBidXQgYXJlIG5vdCBzYXZlZAogICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mgc3RhdGUgc3RhY2su
ICg8cmRhcjovL3Byb2JsZW0vMTQ5NTE3NTk+KQotICAgIGJvb2wgYWxsb3dzU21vb3RoaW5nID0g
Q0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSk7Ci0gICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbiA9IENHQ29udGV4dEdldEFs
bG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3Ro
aW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxR
dWFudGl6YXRpb24gPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24o
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBbW21fZG9jdW1lbnQgcGFnZUF0SW5k
ZXg6MF0gZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlCb3hDcm9wQm94XTsKIAotICAgIENHQ29udGV4
dFNldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGFsbG93
c1Ntb290aGluZyk7Ci0gICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0
aW9uKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlv
bik7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcpOworICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRT
dWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJw
aXhlbFF1YW50aXphdGlvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAppbmRleCA2YzA4MjU4
MjkwOTVkYjc5ZmE1NDhiNmU3Y2IzNzY2YjQzYzkwM2YzLi42OGNlMzEzZTFmMGY3NDdlYWNmZjZk
YWE5NjBiZjA0ODBlZDZmMmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCkBAIC00MCwxNCArNDAsMTQg
QEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0
dXJlTWFwcGVyLCBHcmFwaGljc0xheWVyKgogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5j
b250ZXh0KCk7Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0
dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNl
dFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBj
b250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0
ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7CiAKICAgICBJbnRSZWN0IHNvdXJjZVJl
Y3QodGFyZ2V0UmVjdCk7CiAgICAgc291cmNlUmVjdC5zZXRMb2NhdGlvbihvZmZzZXQpOwotICAg
IGNvbnRleHQtPnRyYW5zbGF0ZSgtb2Zmc2V0LngoKSwgLW9mZnNldC55KCkpOwotICAgIHNvdXJj
ZUxheWVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqY29udGV4dCwgc291cmNlUmVjdCk7
CisgICAgY29udGV4dC50cmFuc2xhdGUoLW9mZnNldC54KCksIC1vZmZzZXQueSgpKTsKKyAgICBz
b3VyY2VMYXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4dCwgc291cmNlUmVj
dCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gaW1hZ2VCdWZmZXItPmNvcHlJbWFnZShE
b250Q29weUJhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFpbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5kZXggYzQ5MGIxMTE2
MWZkOGUyNzIzYWE5NjYyZDFiNTAwMzk0NjMxNjY4Yi4uYTI3YTJlZjZmZWNmN2U4OGQyYWEzNWYx
ZThjYWE2NTI1NjFhZmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTEyNywyNSArMTI3LDI1IEBAIHN0YXRpYyBDR1Bh
dGhSZWYgY3JlYXRlUGF0aEZvckdseXBoKEhEQyBoZGMsIEdseXBoIGdseXBoKQogICAgIHJldHVy
biBwYXRoOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYg
Z2x5cGhCdWZmZXIsCit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYg
Z2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdAogewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBncmFwaGlj
c0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgYm9vbCBzaG91bGRVc2VG
b250U21vb3RoaW5nID0gV2ViQ29yZVNob3VsZFVzZUZvbnRTbW9vdGhpbmcoKTsKIAogICAgIHN3
aXRjaChmb250RGVzY3JpcHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlh
bGlhc2VkOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRy
dWUpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwog
ICAgICAgICBzaG91bGRVc2VGb250U21vb3RoaW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFVzZUZvbnRTbW9vdGhp
bmcgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzog
ewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwogICAgICAg
ICBzaG91bGRVc2VGb250U21vb3RoaW5nID0gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGb250KiBmb250LAogCiAgICAgdWludDMy
X3Qgb2xkRm9udFNtb290aGluZ1N0eWxlID0gd2tTZXRGb250U21vb3RoaW5nU3R5bGUoY2dDb250
ZXh0LCBzaG91bGRVc2VGb250U21vb3RoaW5nKTsKIAotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURh
dGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQtPnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQ
bGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAKICAgICBD
R0NvbnRleHRTZXRGb250KGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLmNnRm9udCgpKTsKIApAQCAt
MTc4LDQzICsxNzgsNDMgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwKICAgICBGbG9hdFNpemUg
dHJhbnNsYXRpb24gPSBnbHlwaEJ1ZmZlci5vZmZzZXRBdChmcm9tKTsKIAogICAgIENHQ29udGV4
dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLnNpemUoKSk7Ci0gICAgd2tTZXRD
R0NvbnRleHRGb250UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LT5pc1N5c3RlbUZvbnQo
KSwgZmFsc2UsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKKyAgICB3a1NldENHQ29u
dGV4dEZvbnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQuaXNTeXN0ZW1Gb250KCksIGZh
bHNlLCBmb250LnBsYXRmb3JtRGF0YSgpLnVzZUdESSgpKTsKIAogICAgIEZsb2F0U2l6ZSBzaGFk
b3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsK
ICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5n
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29s
b3JTcGFjZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAotICAgIGJvb2wgaGFz
U2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0
TW9kZUZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3Jh
cGhpY3NDb250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29udGV4
dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CisgICAgYm9v
bCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0g
VGV4dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAo
IWdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIHx8IGdyYXBoaWNzQ29u
dGV4dC5nZXRDVE0oKS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKICAgICBp
ZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAgICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91
cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5n
IHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclNo
YWRvdygpOwotICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQtPmZpbGxD
b2xvcigpOwotICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3JhcGhpY3NDb250
ZXh0LT5maWxsQ29sb3JTcGFjZSgpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFk
b3coKTsKKyAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LmZpbGxDb2xv
cigpOworICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gZ3JhcGhpY3NDb250ZXh0
LmZpbGxDb2xvclNwYWNlKCk7CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dD
b2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFk
b3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwotICAgICAgICBncmFw
aGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3Bh
Y2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xv
ciwgc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGZsb2F0IHNoYWRvd1RleHRYID0gcG9pbnQu
eCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAg
ICAvLyBJZiBzaGFkb3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3Qg
YXBwbGllZCB0aGUgWSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgot
ICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdo
dCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpICogKGdyYXBoaWNzQ29udGV4dC0+c2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CisgICAgICAgIGZsb2F0IHNoYWRvd1RleHRZID0g
cG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkg
KiAoZ3JhcGhpY3NDb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOwog
ICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBzaGFkb3dUZXh0WCwg
c2hhZG93VGV4dFkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNn
Q29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1Np
emUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgICAgIGlm
IChmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENHQ29udGV4dFNl
dFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkg
KyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9p
bnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwor
ICAgICAgICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIENH
Q29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9u
LndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNl
dCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWln
aHQoKSk7CiAgICAgICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29u
dGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1NpemUq
PihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAgIH0KLSAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBm
aWxsQ29sb3JTcGFjZSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNn
Q29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSwgcG9pbnQueSgpICsgdHJh
bnNsYXRpb24uaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMo
Y2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENH
U2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICBpZiAo
Zm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpKSB7Ci0gICAgICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBmb250
LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgp
KTsKKyAgICBpZiAoZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKKyAgICAgICAgQ0dDb250
ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lk
dGgoKSArIGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlv
bi5oZWlnaHQoKSk7CiAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dD
b250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6
ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICB9CiAKICAg
ICBpZiAoaGFzU2ltcGxlU2hhZG93KQotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNoYWRv
dyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNl
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKIAogICAgIHdrUmVzdG9yZUZv
bnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIG9sZEZvbnRTbW9vdGhpbmdTdHlsZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKaW5k
ZXggM2EwY2IzMGJlNzZjMGNlNzQxYzU0ZmVjYWRjN2M0OGVhMzljZGVlMy4uZGI5NjNjMmY2NDBi
ZGZhNGEzYTY0ODU0NDhhNDlhMGM5ZjU4YzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcApAQCAtOTEsNyArOTEsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIGludCBmcgogICAgIHJldHVybiBiZWZvcmVXaWR0aDsKIH0KIAotZmxvYXQgRm9u
dENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8p
IGNvbnN0CitmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICAvLyBUaGlzIGdseXBoIGJ1ZmZlciBob2xk
cyBvdXIgZ2x5cGhzICsgYWR2YW5jZXMgKyBmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAg
R2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMDgsNyArMTA4LDcgQEAgZmxvYXQgRm9udENh
c2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZv
aWQgRm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYg
bWFyaywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAog
ewogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwogICAgIGZsb2F0IGluaXRpYWxBZHZhbmNl
ID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlw
aEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAppbmRleCBlZTg4ZTIwNWJjMTM3ZTU2MjAwNDBjMGMx
ZmZiZGY5MDhhNGVmYTJmLi5hNzgwNzBkOWFhYWY3ZjRlMmEzMTg5ZWUxNDhhNmE1Yzc5Mzg4YzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4u
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRv
d0NvbnRleHQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocikpOworICAgIExvY2FsV2luZG93
c0NvbnRleHQgd2luZG93Q29udGV4dChjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHIpKTsKICAg
ICBEcmF3SWNvbkV4KHdpbmRvd0NvbnRleHQuaGRjKCksIHIueCgpLCByLnkoKSwgbV9oSWNvbiwg
ci53aWR0aCgpLCByLmhlaWdodCgpLCAwLCAwLCBESV9OT1JNQUwpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKaW5kZXgg
NzIzZWFkYmZkNWRjMjE1ZjMzMDNkZTAzYzM1OGViYThhNjkwNDEyNC4uMDgzNDcwN2RhOWJhZjcx
MWNiZjcyODE3MzZmMjUyMmY3ZjExYTc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcApAQCAtNzYsOSArNzYsOSBAQCBib29s
IEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXpl
KiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7
CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcElu
Zm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCi0gICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYs
IDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uRGVzY3JpcHRpb24oKSk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVs
ZWFzZShjZ0NvbnRleHQpOwpAQCAtODYsNyArODYsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRI
QklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNp
emUoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5n
U291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFtZXMgPSBmcmFt
ZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsraSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9X
aW4uY3BwCmluZGV4IDRmZDYzOTRiY2Q5ODg1Mzg1ZTRjMWY1YTBhZmEzYjY0ZTZhODY0OWQuLmM3
NDAzNDdiYTFiYjc3NmNjNDdhMjg5M2RkZmEyN2Q4MTU1NDM1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQ
IGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBC
aXRtYXBJbWFnZTo6c2l6ZSgpOwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoJmdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRo
LCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0
ZUNvcHkpOworICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQogICAgICAgICBk
cmF3KCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5i
bUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpKSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRN
b2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAKQEAgLTg5LDcgKzg5
LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29u
c3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBCaXRtYXBJbWFn
ZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIEJp
dG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkK
IHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJhbWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCmluZGV4IGNmNTFiMDA4
MTA4ODU5ZjAzMTU3YWNiMmVhNjYzY2ZkOTBlZjFiYjEuLjNhZGRjMTQ0ZmM3MWY3NjI0MGFmOTk2
OTRmZjA1ZTA2OWQyMWI0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2luZG93c0NvbnRleHQuaApAQCAtMzQsMjQgKzM0LDI0
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvY2FsV2luZG93c0NvbnRleHQgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKExvY2FsV2luZG93c0NvbnRleHQpOwogcHVibGljOgotICAg
IExvY2FsV2luZG93c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc3VwcG9ydEFscGhhQmxlbmQgPSB0cnVlLCBib29sIG1h
eUNyZWF0ZUJpdG1hcCA9IHRydWUpCisgICAgTG9jYWxXaW5kb3dzQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBzdXBwb3J0
QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0gdHJ1ZSkKICAgICAgICAg
OiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCiAgICAgICAgICwgbV9yZWN0KHJl
Y3QpCiAgICAgICAgICwgbV9zdXBwb3J0QWxwaGFCbGVuZChzdXBwb3J0QWxwaGFCbGVuZCkKICAg
ICAgICAgLCBtX21heUNyZWF0ZUJpdG1hcChtYXlDcmVhdGVCaXRtYXApCiAgICAgewotICAgICAg
ICBtX2hkYyA9IG1fZ3JhcGhpY3NDb250ZXh0LT5nZXRXaW5kb3dzQ29udGV4dChtX3JlY3QsIG1f
c3VwcG9ydEFscGhhQmxlbmQsIG1fbWF5Q3JlYXRlQml0bWFwKTsKKyAgICAgICAgbV9oZGMgPSBt
X2dyYXBoaWNzQ29udGV4dC5nZXRXaW5kb3dzQ29udGV4dChtX3JlY3QsIG1fc3VwcG9ydEFscGhh
QmxlbmQsIG1fbWF5Q3JlYXRlQml0bWFwKTsKICAgICB9CiAKICAgICB+TG9jYWxXaW5kb3dzQ29u
dGV4dCgpCiAgICAgewotICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC0+cmVsZWFzZVdpbmRvd3ND
b250ZXh0KG1faGRjLCBtX3JlY3QsIG1fc3VwcG9ydEFscGhhQmxlbmQsIG1fbWF5Q3JlYXRlQml0
bWFwKTsKKyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQucmVsZWFzZVdpbmRvd3NDb250ZXh0KG1f
aGRjLCBtX3JlY3QsIG1fc3VwcG9ydEFscGhhQmxlbmQsIG1fbWF5Q3JlYXRlQml0bWFwKTsKICAg
ICB9CiAKICAgICBIREMgaGRjKCkgY29uc3QgeyByZXR1cm4gbV9oZGM7IH0KIAogcHJpdmF0ZToK
LSAgICBHcmFwaGljc0NvbnRleHQqIG1fZ3JhcGhpY3NDb250ZXh0OworICAgIEdyYXBoaWNzQ29u
dGV4dCYgbV9ncmFwaGljc0NvbnRleHQ7CiAgICAgSERDIG1faGRjOwogICAgIEludFJlY3QgbV9y
ZWN0OwogICAgIGJvb2wgbV9zdXBwb3J0QWxwaGFCbGVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1dpZGdldEd0ay5jcHAKaW5kZXggYTdiYTQyYTJlYjNlMzllNDI3NjU1YTQ4ODMyMGMz
ZGMwZjJkNzcwMi4uMmVlMzE4MjBjZWEwYTRkZDBmMWZlN2NhOThmNzI0NzFkYTBjNjRkZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldEd0ay5jcHAKQEAgLTgwLDcgKzgwLDcg
QEAgdm9pZCBXaWRnZXQ6OmhpZGUoKQogICAgICAgICBndGtfd2lkZ2V0X2hpZGUocGxhdGZvcm1X
aWRnZXQoKSk7CiB9CiAKLXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JikKK3ZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJ
bnRSZWN0JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1dpZGdldElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0K
aW5kZXggYThkZmNjMzIxYmFkZmVkMjcxMGZlZWM1MDhkMjdjYzEzYTgxMzFjYS4uMGUzNjVlZjA4
ODRhZDJjOGE2ZDY3MjVmNzRjNzU4NzhjNTkwMDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvV2lkZ2V0SU9TLm1tCkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBOU1ZpZXcqIFdpZGdldDo6
Z2V0T3V0ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKK3ZvaWQgV2lkZ2V0
OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgaWYg
KHAtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBOU1ZpZXcgKnZpZXcgPSBnZXRPdXRlclZpZXcoKTsK
IAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBDR0Nv
bnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CiAKICAgICBOU1JlY3Qgdmlld0ZyYW1lID0gW3Zp
ZXcgZnJhbWVdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJ
bWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0K
aW5kZXggYjUwNWZjMTM4ZDU4MWE3YTQxZjFiZWE2M2ZjZTUyNmU4NTQ2MWZkYi4uNWZiMDUyZDQ1
NjdkYTAwYmQ4MmRlMjFjOWFkNjkwMTA1NWQ1ZDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQg
ZHJhd0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250ICpmb250
LCBOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1l
Ok5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJs
dWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvciht
YWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAKLSAgICAgICAgd2ViQ29yZUZvbnQuZHJh
d1RleHQoJmdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVk
ID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOworICAgICAgICB3ZWJDb3JlRm9udC5kcmF3
VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxpcHBlZCA/
IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZmxp
cHBlZCkKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5oCmluZGV4IDU4YjY0NzJjZjJlMDdjNmI5MDgwNDAyODdlYjYyYzVhOTAy
N2VmMDEuLjQ4ZmViMmVhNGQxOWQ0MGEwOTVjOWRmZWQ1Yjk3NjJiYWM4Njc2NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0LmgKQEAgLTI5LDExICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgfkxvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCgpOwogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQoKTsK
IHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0Owor
ICAgIEdyYXBoaWNzQ29udGV4dCYgbV9zYXZlZEdyYXBoaWNzQ29udGV4dDsKICAgICBOU0dyYXBo
aWNzQ29udGV4dCogbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0OwogICAgIGJvb2wgbV9kaWRTZXRH
cmFwaGljc0NvbnRleHQ7CiB9OwpAQCAtNDEsOCArNDEsOCBAQCBwcml2YXRlOgogY2xhc3MgQ29u
dGV4dENvbnRhaW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGV4dENvbnRhaW5l
cik7CiBwdWJsaWM6Ci0gICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCkKLSAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpKQorICAgIENvbnRleHRDb250YWluZXIoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQpCisgICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3ND
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
Lm1tCmluZGV4IDI2MzJmNjY0M2JmZTBmNjlhMzQyNzExNmY4NzgxMWFiNWQ5ZTBjZGUuLjEzOWRk
NjY1YmMxYmViMTBiNzVhNGU0M2VjZmQ3ZjcyMDcxODE2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5t
bQpAQCAtMjQsMTEgKzI0LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQpCi0gICAgOiBtX2RpZFNldEdyYXBoaWNzQ29udGV4dChm
YWxzZSkKK0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQorICAgIDogbV9zYXZlZEdy
YXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQpCisgICAgLCBtX2RpZFNldEdyYXBoaWNzQ29u
dGV4dChmYWxzZSkKIHsKLSAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0OwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgIGdyYXBoaWNzQ29udGV4dC5z
YXZlKCk7CiAKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gdGhpcy0+Y2dDb250ZXh0KCk7
CiAgICAgaWYgKGNnQ29udGV4dCA9PSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0
XSBncmFwaGljc1BvcnRdKSB7CkBAIC00OSwxMiArNDksMTIgQEAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0Ojp+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KCkKICAgICAgICAgW21fc2F2
ZWROU0dyYXBoaWNzQ29udGV4dCByZWxlYXNlXTsKICAgICB9CiAKLSAgICBtX3NhdmVkR3JhcGhp
Y3NDb250ZXh0LT5yZXN0b3JlKCk7CisgICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dC5yZXN0b3Jl
KCk7CiB9CiAKIENHQ29udGV4dFJlZiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCgpCiB7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRHcmFwaGljc0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBt
X3NhdmVkR3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHJldHVybiBjZ0Nv
bnRleHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5tbQppbmRleCA3N2YyZDgwOGNjNjQ4NTcxMWIxYTkyZWM4ZjhiY2I5N2MzOGM2ODY2
Li5jMzM3NjVmYzI1ZDBkYzNiYTVmMWYyZTU1OTk5ZWE4Yzc1MjhhYjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC01MTMsNyAr
NTEzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyJiBzY3JvbGxi
YXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAgICBjb250ZXh0LmNsaXAoZGFt
YWdlUmVjdCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNjcm9sbGJhci5mcmFtZVJlY3Qo
KS54KCksIHNjcm9sbGJhci5mcmFtZVJlY3QoKS55KCkpOwotICAgICAgICBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0KTsKKyAgICAgICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKICAgICAgICAgc2Nyb2xs
YmFyUGFpbnRlclBhaW50KHNjcm9sbGJhck1hcCgpLT5nZXQoJnNjcm9sbGJhcikuZ2V0KCksIHNj
cm9sbGJhci5lbmFibGVkKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMuaAppbmRleCBmOGVlMTZlYjllYTEyMTQzYjIxMjVmMDhhZmQ2MzYwNmNjODQxNzEyLi4z
YmFkZTdhNjZlMDlkNzk2MzY4MTEzZTQ0Njc5ZTA4MmY3Zjg0M2Y0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApAQCAtNTIsMTMgKzUyLDEzIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNlKENvbnRyb2xQYXJ0IHBh
cnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1dHRvblBhcnQ7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBT
Y3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENv
bnRyb2xQYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZh
Y3RvcikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogT25jZSBSZW5kZXJUaGVtZU1h
YyBpcyBjb252ZXJ0ZWQgb3ZlciB0byB1c2UgVGhlbWUgdGhlbiB0aGlzIGNhbiBiZSBpbnRlcm5h
bCB0byBUaGVtZU1hYy4KICAgICBzdGF0aWMgTlNWaWV3KiBlbnN1cmVkVmlldyhTY3JvbGxWaWV3
KiwgY29uc3QgQ29udHJvbFN0YXRlcyYsIGJvb2wgdXNlVW5wYXJlbnRlZFZpZXcgPSBmYWxzZSk7
CiAgICAgc3RhdGljIHZvaWQgc2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7
Ci0gICAgc3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQo
TlNDZWxsKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3KiwgYm9v
bCAvKiBkcmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8q
IHVzZUltYWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CisgICAg
c3RhdGljIGJvb2wgZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxs
KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgTlNWaWV3KiwgYm9vbCAvKiBk
cmF3QnV0dG9uQ2VsbCAqLywgYm9vbCAvKiBkcmF3Rm9jdXNSaW5nICovLCBib29sIC8qIHVzZUlt
YWdlQnVmZmVyICovLCBmbG9hdCAvKiBkZXZpY2VTY2FsZUZhY3RvciAqLyk7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
aW5kZXggNTFjZmQwZGUzYTNiNTlmZTQ5N2U5NmEwMDhiYThjZThiZmY5OGYwOC4uMWJkNTA5ZjU3
MGM4NDE2MTAzMGM4NTM3ODk1ZDdlMzZlYTE1NmMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQpAQCAtMzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBib29sIGRyYXdDZWxs
Rm9jdXNSaW5nKE5TQ2VsbCAqY2VsbCwgTlNSZWN0IGNlbGxGcmFtZSwgTlNWaWV3ICpjb250cm9s
VmllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRv
bihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxv
YXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKK3N0YXRpYyB2b2lkIHBhaW50VG9nZ2xlQnV0
dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBm
bG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogCkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVC
dXR0b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQK
ICAgICB9CiAgICAgY29udHJvbFN0YXRlcy5zZXREaXJ0eShmYWxzZSk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUg
Y29udHJvbFNpemUgPSBbdG9nZ2xlQnV0dG9uQ2VsbCBjb250cm9sU2l6ZV07CiAgICAgSW50U2l6
ZSB6b29tZWRTaXplID0gYnV0dG9uVHlwZSA9PSBDaGVja2JveFBhcnQgPyBjaGVja2JveFNpemVz
KClbY29udHJvbFNpemVdIDogcmFkaW9TaXplcygpW2NvbnRyb2xTaXplXTsKQEAgLTQxMiw5ICs0
MTIsOSBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25U
eXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIGlmICh6b29tRmFjdG9yICE9IDEu
MGYpIHsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgp
IC8gem9vbUZhY3Rvcik7CiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRIZWlnaHQoaW5mbGF0ZWRS
ZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShp
bmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgY29udGV4dC0+
dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAg
IGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOwor
ICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7
CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRS
ZWN0LnkoKSk7CiAgICAgfQogCiAgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2Fs
Q29udGV4dChjb250ZXh0KTsKQEAgLTQzMSwxMSArNDMxLDExIEBAIHN0YXRpYyB2b2lkIHBhaW50
VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRy
b2xTdGF0CiAKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTAwMAog
ICAgIGlmIChbdG9nZ2xlQnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSkgewotICAg
ICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0Lnko
KSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICBj
b250ZXh0LT50cmFuc2xhdGUoMCwgLWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNv
bnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOworICAg
ICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgwLCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKIAotICAgICAgICBbdG9nZ2xlQnV0
dG9uQ2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNNYWtlUG9pbnQoMCwgMCldOworICAgICAgICBb
dG9nZ2xlQnV0dG9uQ2VsbCBfcmVuZGVyQ3VycmVudEFuaW1hdGlvbkZyYW1lSW5Db250ZXh0OmNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCkgYXRMb2NhdGlvbjpOU01ha2VQb2ludCgwLCAwKV07CiAg
ICAgICAgIGlmICghW3RvZ2dsZUJ1dHRvbkNlbGwgX3N0YXRlQW5pbWF0aW9uUnVubmluZ10gJiYg
aXNDZWxsRm9jdXNlZCkKICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IFRoZW1lTWFjOjpkcmF3
Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCh0b2dnbGVCdXR0b25DZWxsLmdldCgp
LCBjb250ZXh0LCBpbmZsYXRlZFJlY3QsIHZpZXcsIGZhbHNlLCB0cnVlLCB1c2VJbWFnZUJ1ZmZl
ciwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIH0gZWxzZQpAQCAtNTIwLDE0ICs1MjAsMTQgQEAg
c3RhdGljIE5TQnV0dG9uQ2VsbCAqYnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IENvbnRy
b2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMKICAgICByZXR1cm4gY2VsbDsKIH0KICAgICAKLXN0YXRp
YyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIGNvbnRy
b2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29t
ZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQorc3RhdGljIHZvaWQgcGFp
bnRCdXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZs
b2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TCiAgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG5l
ZWRlZCBmb3IgdGhlIGNvbnRyb2wgYW5kIHByZXBhcmUgdGhlIGNlbGwgZm9yIHBhaW50aW5nLgog
ICAgIENvbnRyb2xTdGF0ZXM6OlN0YXRlcyBzdGF0ZXMgPSBjb250cm9sU3RhdGVzLnN0YXRlcygp
OwogICAgIE5TQnV0dG9uQ2VsbCAqYnV0dG9uQ2VsbCA9IGJ1dHRvbihwYXJ0LCBjb250cm9sU3Rh
dGVzLCBJbnRTaXplKHpvb21lZFJlY3Quc2l6ZSgpKSwgem9vbUZhY3Rvcik7Ci0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBOU0NvbnRyb2xTaXpl
IGNvbnRyb2xTaXplID0gW2J1dHRvbkNlbGwgY29udHJvbFNpemVdOwogICAgIEludFNpemUgem9v
bWVkU2l6ZSA9IGJ1dHRvblNpemVzKClbY29udHJvbFNpemVdOwpAQCAtNTQ3LDkgKzU0Nyw5IEBA
IHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMm
IGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzCiAgICAgICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYp
IHsKICAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lkdGgo
KSAvIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZs
YXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJl
Y3QueSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCks
IGluZmxhdGVkUmVjdC55KCkpOworICAgICAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUo
em9vbUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
LWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICAgICAgfQogICAgIH0K
ICAgICAKQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgTlNDb250cm9sU2l6ZSBzdGVwcGVyQ29u
dHJvbFNpemVGb3JGb250KGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogICAgIHJldHVybiBOU01p
bmlDb250cm9sU2l6ZTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0
ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpv
b21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqKQorc3RhdGljIHZvaWQgcGFp
bnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqKQogewogICAgIC8vIFdlIGRvbid0IHVzZSBOU1N0ZXBwZXJDZWxsIGJlY2F1c2UgdGhlcmUg
YXJlIG5vIHdheXMgdG8gZHJhdyBhbgogICAgIC8vIE5TU3RlcHBlckNlbGwgd2l0aCB0aGUgdXAg
YnV0dG9uIGhpZ2hsaWdodGVkLgpAQCAtNjE3LDEzICs2MTcsMTMgQEAgc3RhdGljIHZvaWQgcGFp
bnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdAogICAgICAgICBkcmF3SW5mby5raW5kID0ga1RoZW1lSW5jRGVjQnV0dG9uOwogCiAg
ICAgSW50UmVjdCByZWN0KHpvb21lZFJlY3QpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmICh6b29tRmFjdG9yICE9IDEuMGYpIHsKICAgICAg
ICAgcmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgcmVj
dC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgY29udGV4dC0+dHJh
bnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
cmVjdC54KCksIHJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoem9v
bUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtcmVjdC54
KCksIC1yZWN0LnkoKSk7CiAgICAgfQogICAgIENHUmVjdCBib3VuZHMocmVjdCk7CiAgICAgQ0dS
ZWN0IGJhY2tncm91bmRCb3VuZHM7CkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBUaGVtZU1hYzo6
c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogCiBjb25zdCBmbG9h
dCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGggPSAzLjBmOwogCi1ib29sIFRoZW1lTWFjOjpk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqIGNlbGwsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbmZsYXRlZFJlY3QsIE5TVmll
dyogdmlldywgYm9vbCBkcmF3QnV0dG9uQ2VsbCwgYm9vbCBkcmF3Rm9jdXNSaW5nLCBib29sIHVz
ZUltYWdlQnVmZmVyLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKK2Jvb2wgVGhlbWVNYWM6OmRy
YXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluZmxhdGVkUmVjdCwgTlNWaWV3
KiB2aWV3LCBib29sIGRyYXdCdXR0b25DZWxsLCBib29sIGRyYXdGb2N1c1JpbmcsIGJvb2wgdXNl
SW1hZ2VCdWZmZXIsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIEFTU0VSVChkcmF3
QnV0dG9uQ2VsbCB8fCBkcmF3Rm9jdXNSaW5nKTsKICAgICBib29sIG5lZWRzUmVwYWludCA9IGZh
bHNlOwpAQCAtNjc5LDcgKzY3OSw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1Jp
bmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3NDb250CiAgICAgICAg
ICAgICBpZiAoZHJhd0ZvY3VzUmluZykKICAgICAgICAgICAgICAgICBuZWVkc1JlcGFpbnQgPSBk
cmF3Q2VsbEZvY3VzUmluZyhjZWxsLCBpbWFnZUJ1ZmZlckRyYXdSZWN0LCB2aWV3KTsKICAgICAg
ICAgfQotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCks
IENvbG9yU3BhY2VTUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0
b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwor
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JT
cGFjZVNSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3Vz
UmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CiAgICAgICAg
IHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgfQogICAgIGlmIChkcmF3QnV0dG9uQ2VsbCkKQEAg
LTg0MCw3ICs4NDAsNyBAQCB2b2lkIFRoZW1lTWFjOjppbmZsYXRlQ29udHJvbFBhaW50UmVjdChD
b250cm9sUGFydCBwYXJ0LCBjb25zdCBDb250cm9sU3RhdGVzJiBzdAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKIH0KIAotdm9pZCBUaGVtZU1hYzo6cGFpbnQoQ29udHJvbFBhcnQgcGFy
dCwgQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Ny
b2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikK
K3ZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIHN0
YXRlcywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJl
Y3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCiB7CiAgICAgc3dpdGNoIChwYXJ0
KSB7CiAgICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0KaW5kZXggNTRkOWM4NTdkZjQwMmI4MmQ3YTdkMTMwZjhmNzYxODVlMmJk
NzlhYS4uYjMwZmQ4MTM0M2MwNmFjZDg5YmE4ZjllMmY2NzQzNzZmNmVhZDAyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xODUsOSArMTg1LDkgQEAgTlNW
aWV3ICpXaWRnZXQ6OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAK
LXZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHIp
Cit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiBy
KQogewotICAgIGlmIChwLT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHAucGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNWaWV3ICp2aWV3ID0gZ2V0T3V0ZXJW
aWV3KCk7CiAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQogICAgICAgICAgICAgc2Nyb2xsVmlldyA9IDA7
CiAgICAgfQogCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHAtPnBsYXRmb3JtQ29udGV4
dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwLnBsYXRmb3JtQ29udGV4dCgpOwog
ICAgIEFTU0VSVChjZ0NvbnRleHQgPT0gW2N1cnJlbnRDb250ZXh0IGdyYXBoaWNzUG9ydF0pOwog
ICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCAzYjQ5NzY2MGNjOTY4YjMwMWRjZjA2N2U0
M2Y4ZWM1ODg5NzFkMTI2Li40NmE3Y2I3MTEyMmEwNGUyNmI2YmEyZTE2MTkwMzdhOGJhZDhkNzcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUoY29u
c3QgSW50U2l6ZSYpCiB7CiB9CiAKLXZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpCit2b2lkIE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKaW5kZXgg
MWMxZjIxODJlOTU5MzdjN2FjNDViYjU4NzRiZWRmYzBiMGNkMTJiMC4uMDMyNjFmYWM2MmY0M2Zj
OGFhMmMwZDcxMDc3ODM2NjIwN2E1M2IwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgY3VycmVudE1lZGlh
VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uTWVk
aWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtXaXRoVG9sZXJh
bmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVdpbi5jcHAKaW5kZXggYzY1NGFiMTAzMTlmNzE1MDRkMTRmN2UyMWFlN2QxNTY1YTRmMDkw
Yi4uM2EwOTQ0NDIzYjY4NGI4MzgxYjdhNDNhOWE4OTZiMzlhZjliNDM2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0yNDcs
NyArMjQ3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3IKICAgICBpZiAoc2Nyb2xsYmFyVGhl
bWUpCiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5z
cGFyZW50KHNjcm9sbGJhclRoZW1lLCBwYXJ0LCBzdGF0ZSk7CiAKLSAgICBMb2NhbFdpbmRvd3ND
b250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKKyAgICBM
b2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIHJlY3QsIGFscGhhQmxl
bmQpOwogICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogCiAgICAgaWYgKHNjcm9sbGJhclRoZW1l
KQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiCiAgICAgaWYgKHNj
cm9sbGJhclRoZW1lKQogICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0
aWFsbHlUcmFuc3BhcmVudChzY3JvbGxiYXJUaGVtZSwgU1BfQlVUVE9OLCB4cFN0YXRlKTsKIAot
ICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFs
cGhhQmxlbmQpOworICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4
dCwgcmVjdCwgYWxwaGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAgICAgaWYg
KHNjcm9sbGJhclRoZW1lKQogICAgICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRo
ZW1lLCB3aW5kb3dzQ29udGV4dC5oZGMoKSwgU1BfQlVUVE9OLCB4cFN0YXRlLCAmdGhlbWVSZWN0
LCAwKTsKQEAgLTM3Miw3ICszNzIsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYQogICAgIGJv
b2wgYWxwaGFCbGVuZCA9IGZhbHNlOwogICAgIGlmIChzY3JvbGxiYXJUaGVtZSkKICAgICAgICAg
YWxwaGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5VHJhbnNwYXJlbnQoc2Nyb2xs
YmFyVGhlbWUsIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIg
PyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUpOwotICAgIExvY2FsV2luZG93c0Nv
bnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOworICAgIExv
Y2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdCwgYWxwaGFCbGVu
ZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKSB7
CiAgICAgICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xsYmFyVGhlbWUsIHdpbmRvd3NDb250
ZXh0LmhkYygpLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQsIHN0YXRlLCAmdGhlbWVSZWN0LCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5jcHAKaW5kZXggMjcxZTM2ZDVjYjMx
MGY1ZjY4ODdkZDIzNzkwYTliNmJhNDY4ZjBhMC4uOWFjZTFhMTQ4NTI0OWQ3NTZlMWJkM2UyMmU3
ZTE2MDY0MDVlOWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dp
ZGdldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpZGdldFdpbi5j
cHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBXaWRnZXQ6OnNldEN1cnNvcihjb25zdCBDdXJzb3Im
IGN1cnNvcikKICAgICB2aWV3LT5ob3N0V2luZG93KCktPnNldEN1cnNvcihjdXJzb3IpOwogfQog
Ci12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpCit2
b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwCmluZGV4IDQ2OWY3ZWZl
ZTg3Zjc1MjE0MjI1MjZkYzY2NWE2YzQxNmQ0ZWY4MzUuLjJlOGZkMGJiMGEyZTBiYTQzYjZlYzU1
NjBhNDM0ZDZiZmZmZGI1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
bGxpcHNpc0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94
LmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIEVsbGlwc2lzQm94OjpFbGxpcHNpc0JveChSZW5kZXJC
bG9ja0Zsb3cmIHJlbmRlcmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzCiAKIHZvaWQg
RWxsaXBzaXNCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9t
KQogewotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9IHRoaXMtPmxpbmVTdHlsZSgpOwogICAgIENv
bG9yIHRleHRDb2xvciA9IGxpbmVTdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RmlsbENvbG9yKTsKLSAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQtPmZp
bGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5l
U3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAodGV4dENvbG9yICE9IGNvbnRleHQuZmlsbENv
bG9yKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxl
LmNvbG9yU3BhY2UoKSk7CiAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAgICBpZiAobGlu
ZVN0eWxlLnRleHRTaGFkb3coKSkgewotICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coTGF5b3V0
U2l6ZShsaW5lU3R5bGUudGV4dFNoYWRvdygpLT54KCksIGxpbmVTdHlsZS50ZXh0U2hhZG93KCkt
PnkoKSksCisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KExheW91dFNpemUobGluZVN0eWxlLnRl
eHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkpLAogICAgICAgICAg
ICAgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+cmFkaXVzKCksIGxpbmVTdHlsZS50ZXh0U2hhZG93
KCktPmNvbG9yKCksIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICBzZXRTaGFkb3cg
PSB0cnVlOwogICAgIH0KQEAgLTYxLDE4ICs2MSwxOCBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWlu
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBM
YQogICAgICAgICAvLyBTZWxlY3QgdGhlIGNvcnJlY3QgY29sb3IgZm9yIHBhaW50aW5nIHRoZSB0
ZXh0LgogICAgICAgICBDb2xvciBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlVGV4dENvbG9y
KCkgPyBwYWludEluZm8uZm9yY2VkVGV4dENvbG9yKCkgOiBibG9ja0Zsb3coKS5zZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGZvcmVncm91bmQuaXNWYWxpZCgpICYmIGZv
cmVncm91bmQgIT0gdGV4dENvbG9yKQotICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4
dC5zZXRGaWxsQ29sb3IoZm9yZWdyb3VuZCwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5n
IGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cuCi0gICAgY29udGV4dC0+ZHJhd1RleHQoZm9u
dCwgUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0
ciwgbGluZVN0eWxlLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsg
cGFpbnRPZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1l
dHJpY3MoKS5hc2NlbnQoKSkpOworICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwgUmVuZGVyQmxv
Y2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgbGluZVN0eWxl
LCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKSwgTGF5b3V0UG9pbnQoeCgpICsgcGFpbnRPZmZzZXQu
eCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSkpOwogCiAgICAgLy8gUmVzdG9yZSB0aGUgcmVndWxhciBmaWxsIGNvbG9yLgotICAgIGlm
ICh0ZXh0Q29sb3IgIT0gY29udGV4dC0+ZmlsbENvbG9yKCkpCi0gICAgICAgIGNvbnRleHQtPnNl
dEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGlmICh0
ZXh0Q29sb3IgIT0gY29udGV4dC5maWxsQ29sb3IoKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgIGlmIChzZXRT
aGFkb3cpCi0gICAgICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7CisgICAgICAgIGNvbnRleHQu
Y2xlYXJTaGFkb3coKTsKIAogICAgIHBhaW50TWFya3VwQm94KHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQsIGxpbmVUb3AsIGxpbmVCb3R0b20sIGxpbmVTdHlsZSk7CiB9CkBAIC0xMTksNyArMTE5LDcg
QEAgSW50UmVjdCBFbGxpcHNpc0JveDo6c2VsZWN0aW9uUmVjdCgpCiAgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3Qoc2VsZWN0aW9uUmVjdCk7CiB9CiAKLXZvaWQgRWxsaXBzaXNCb3g6OnBhaW50
U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBm
b250KQordm9pZCBFbGxpcHNpc0JveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQpCiB7CiAgICAgQ29sb3IgdGV4dENvbG9y
ID0gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpOwogICAgIENv
bG9yIGMgPSBibG9ja0Zsb3coKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTEzMiwx
MiArMTMyLDEyIEBAIHZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAgICAgICAgIGMgPSBDb2xvcigw
eGZmIC0gYy5yZWQoKSwgMHhmZiAtIGMuZ3JlZW4oKSwgMHhmZiAtIGMuYmx1ZSgpKTsKIAogICAg
IGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSByb290KCk7Ci0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlz
IGFsd2F5cyBMVFI/IEZpeCBieSBwYXNzaW5nIGNvcnJlY3QgdGV4dCBydW4gZmxhZ3MgYmVsb3cu
CiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0ID0gTGF5b3V0UmVjdCh4KCkgKyBwYWludE9m
ZnNldC54KCksIHkoKSArIHBhaW50T2Zmc2V0LnkoKSArIHJvb3RCb3guc2VsZWN0aW9uVG9wKCks
IDAsIHJvb3RCb3guc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIFRleHRSdW4gcnVuID0gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJmJsb2NrRmxvdygpLCBmb250LCBtX3N0ciwgc3R5bGUs
IEFsbG93VHJhaWxpbmdFeHBhbnNpb24pOwogICAgIGZvbnQuYWRqdXN0U2VsZWN0aW9uUmVjdEZv
clRleHQocnVuLCBzZWxlY3Rpb25SZWN0LCAwLCAtMSk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3Qo
c25hcFJlY3RUb0RldmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3Qs
IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBj
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVsc1dpdGhXcml0aW5nRGlyZWN0aW9uKHNlbGVjdGlvblJlY3QsIHJlbmRlcmVyKCku
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpLCBydW4ubHRyKCkpLCBjLCBzdHlsZS5jb2xv
clNwYWNlKCkpOwogfQogCiBib29sIEVsbGlwc2lzQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhp
dFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lz
Qm94LmgKaW5kZXggMjdlOTEyZmZmYTAzYTU0ZTEyNGQ5YmQzMmZjNzE5MTY2MzFjYjI1MS4uNDRj
MDVkYWYxYWQyNGJjZmIwOGZjM2M0OWNkYTE0YWI3NmNmMTEwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0VsbGlwc2lzQm94LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBhaW50TWFya3VwQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIGNvbnN0IFJlbmRl
clN0eWxlJik7CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQotICAgIHZvaWQgcGFpbnRTZWxl
Y3Rpb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJT
dHlsZSYsIGNvbnN0IEZvbnRDYXNjYWRlJik7CisgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgRm9udENhc2NhZGUmKTsKICAgICBJbmxpbmVCb3gqIG1hcmt1cEJveCgpIGNvbnN0OwogCiAg
ICAgYm9vbCBtX3Nob3VsZFBhaW50TWFya3VwQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggNjJkYWM0YjhiNDYyMjM4N2I4
ZGNjZTc4ZmVhMjA5MmQyMTQ0MGU1Yy4uNTc1N2U5YTg1MTgzYzA3NjgwYmExOWY0YTZhMzIxZTY1
NzZkMWM0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0
UmVuZGVyZXIuY3BwCkBAIC04MCw3ICs4MCw3IEBAIEZpbHRlckVmZmVjdFJlbmRlcmVyOjp+Rmls
dGVyRWZmZWN0UmVuZGVyZXIoKQogCiBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjppbnB1dENvbnRleHQoKQogewotICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gc291cmNl
SW1hZ2UoKS0+Y29udGV4dCgpIDogMDsKKyAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/ICZzb3Vy
Y2VJbWFnZSgpLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCiBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3Qs
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQpAQCAtNDE3LDcgKzQx
Nyw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmJlZ2luRmlsdGVyRWZmZWN0
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
cjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNvbnRleHQp
Cit2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZpbHRlckVmZmVjdChHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCkKIHsKICAgICBBU1NFUlQobV9oYXZlRmls
dGVyRWZmZWN0ICYmIG1fcmVuZGVyTGF5ZXItPmZpbHRlclJlbmRlcmVyKCkpOwogICAgIEZpbHRl
ckVmZmVjdFJlbmRlcmVyKiBmaWx0ZXIgPSBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigp
OwpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFw
cGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25DCiAgICAgTGF5b3V0
UmVjdCBkZXN0UmVjdCA9IGZpbHRlci0+b3V0cHV0UmVjdCgpOwogICAgIGRlc3RSZWN0Lm1vdmUo
bV9wYWludE9mZnNldC54KCksIG1fcGFpbnRPZmZzZXQueSgpKTsKIAotICAgIGRlc3RpbmF0aW9u
Q29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGZpbHRlci0+b3V0cHV0KCksIG1fcmVuZGVyTGF5ZXIt
PnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCksCisgICAgZGVzdGluYXRpb25Db250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5kZXJl
cigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAogICAgICAgICBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGRlc3RSZWN0LCBtX3JlbmRlckxheWVyLT5yZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2Nh
bGVGYWN0b3IoKSkpOwogCiAgICAgZmlsdGVyLT5jbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5k
ZXggYmViM2Y3N2M0OGEwYTJiNGZhMTNiNmU2NDU2Y2IzYTc3YTliMGY2OC4uM2UxMzM3ZDNkMTVm
NzYxMTkzNGQ1YzZkNTc2YTlmMTgyMDE0NzhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
CiAgICAgYm9vbCBwcmVwYXJlRmlsdGVyRWZmZWN0KFJlbmRlckxheWVyKiwgY29uc3QgTGF5b3V0
UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKICAgICBib29sIGJlZ2luRmlsdGVyRWZmZWN0
KCk7Ci0gICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0
aW9uQ29udGV4dCk7CisgICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQm
IGRlc3RpbmF0aW9uQ29udGV4dCk7CiAgICAgCiAgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJD
b250ZXh0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFn
ZVF1YWxpdHlDb250cm9sbGVyLmNwcAppbmRleCBjNGE2ZTQzYzY3MjJmNDEwZjdiZjkwZDEwOGI4
YzU2MGMzMjAwMDljLi42ZmI4MzQyNDI3NDc5NDQxOGNhODAzM2Q3YjRkYWQ3MWI3ZDEzNGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuY3BwCkBAIC05OSwxMSArOTksMTEgQEAgdm9pZCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpy
ZXN0YXJ0VGltZXIoKQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KGNMb3dRdWFsaXR5VGltZVRo
cmVzaG9sZCk7CiB9CiAKLWJvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRB
dExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVj
dCogb2JqZWN0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplKQorYm9vbCBJbWFnZVF1YWxpdHlDb250cm9sbGVyOjpzaG91bGRQYWludEF0TG93
UXVhbGl0eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckJveE1vZGVsT2JqZWN0KiBv
YmplY3QsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCAqbGF5ZXIsIGNvbnN0IExheW91dFNpemUm
IHNpemUpCiB7CiAgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFnZSwgdGhl
biBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGlnaAogICAg
IC8vIHF1YWxpdHkuCi0gICAgaWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1hcEltYWdlKCkg
fHwgaW1hZ2UtPmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpCisgICAgaWYgKCFpbWFnZSB8fCAhKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgfHwgaW1h
Z2UtPmlzUERGRG9jdW1lbnRJbWFnZSgpKSB8fCBjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoIChvYmplY3QtPnN0eWxlKCkuaW1h
Z2VSZW5kZXJpbmcoKSkgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsK
ICAgICBib29sIGNvbnRleHRJc1NjYWxlZCA9ICFjdXJyZW50VHJhbnNmb3JtLmlzSWRlbnRpdHlP
clRyYW5zbGF0aW9uT3JGbGlwcGVkKCk7CiAgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgc2l6
ZSA9PSBpbWFnZVNpemUpIHsKICAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0
LiBJZiB3ZSBoYWQgYSBzY2FsZSBpbiBlZmZlY3QgYmVmb3JlLCB3ZSBjYW4ganVzdCByZW1vdmUg
dGhpcyBvYmplY3QgZnJvbSB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oCmluZGV4IDI1ZDdlZTkyZjU3Y2VhMzZiYTY3NjMz
OWI4Njg2ZmNhMzVjYmE1YmQuLmQxNGRjNDlhYTc5YWYzMTVkYWM4ZTFkNTEyMWMzNDAyNjBlZjY1
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRy
b2xsZXIuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBJbWFnZVF1YWxpdHlDb250cm9sbGVyIHsK
IHB1YmxpYzoKICAgICBleHBsaWNpdCBJbWFnZVF1YWxpdHlDb250cm9sbGVyKGNvbnN0IFJlbmRl
clZpZXcmKTsKIAotICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250
ZXh0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVyLCBj
b25zdCBMYXlvdXRTaXplJik7CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFw
aGljc0NvbnRleHQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCosIEltYWdlKiwgY29uc3Qgdm9pZCog
bGF5ZXIsIGNvbnN0IExheW91dFNpemUmKTsKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJv
eWVkKFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlcikgeyByZW1vdmVPYmplY3QoJnJlbmRl
cmVyKTsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guY3BwCmluZGV4IDM1OWJlZDY1NjMxZjE3ZGY4NTQ5YjdlYzM0NjBhOGIwOTNmZTAxZjkuLmE4
NzRjZGMxYzdkMWQxZTc4ZTRiNzc2MDk5ZWNjYTBjOGI0YjNiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEyMjAsOCArMTIyMCw4IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IENvbG9yJiBjLCBjCiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwg
dGhpcywgcmVjdC5zaXplKCksIG9wKTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKQogICAgIGVsc2UgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5ib3hEZWNvcmF0aW9uQnJlYWso
KSA9PSBEQ0xPTkUpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
KExheW91dFJlY3QocmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRSZWN0KHJlY3Qu
eCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcmVuZGVyZXIoKS5w
YWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCByZWN0LCBCYWNr
Z3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0LnNpemUoKSwgb3ApOwogICAgIH0KICNlbmRpZgpA
QCAtMTI1Miw4ICsxMjUyLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEZpbGxMYXllcihj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGMKICAgICAgICAgTGF5
b3V0VW5pdCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExvZ2ljYWxXaWR0aCA6
IExheW91dFVuaXQod2lkdGgoKSk7CiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBp
c0hvcml6b250YWwoKSA/IExheW91dFVuaXQoaGVpZ2h0KCkpIDogdG90YWxMb2dpY2FsV2lkdGg7
CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKExheW91dFJlY3Qo
cmVjdC54KCksIHJlY3QueSgpLCB3aWR0aCgpLCBoZWlnaHQoKSkpOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0Lnko
KSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludEZpbGxMYXll
ckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVyLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3Ry
aXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMs
IHJlY3Quc2l6ZSgpLCBvcCk7CiAgICAgfQogfQpAQCAtMTMzNyw3ICsxMzM3LDcgQEAgdm9pZCBJ
bmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5b3V0UG9pbnQgYWRq
dXN0ZWRQYWludG9mZnNldCA9IHBhaW50T2Zmc2V0ICsgbG9jYWxSZWN0LmxvY2F0aW9uKCk7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBMYXlvdXRS
ZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludG9mZnNldCwgZnJhbWVSZWN0
LnNpemUoKSk7CiAgICAgLy8gU2hhZG93IGNvbWVzIGZpcnN0IGFuZCBpcyBiZWhpbmQgdGhlIGJh
Y2tncm91bmQgYW5kIGJvcmRlci4KICAgICBpZiAoIXJlbmRlcmVyKCkuYm94U2hhZG93U2hvdWxk
QmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGFkanVzdGVkUGFpbnRvZmZzZXQsIEJhY2tncm91bmRCbGVl
ZE5vbmUsIHRoaXMpKQpAQCAtMTM4Miw4ICsxMzgyLDggQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpw
YWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYKICAgICAgICAgTGF5b3V0VW5pdCBzdHJpcEhlaWdodCA9IGlzSG9yaXpvbnRhbCgpID8gZnJh
bWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2FsV2lkdGg7CiAKICAgICAgICAgTGF5b3V0UmVj
dCBjbGlwUmVjdCA9IGNsaXBSZWN0Rm9yTmluZVBpZWNlSW1hZ2VTdHJpcCh0aGlzLCBib3JkZXJJ
bWFnZSwgcGFpbnRSZWN0KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAg
ICAgY29udGV4dC5jbGlwKGNsaXBSZWN0KTsKICAgICAgICAgcmVuZGVyZXIoKS5wYWludEJvcmRl
cihwYWludEluZm8sIExheW91dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlw
SGVpZ2h0KSwgbGluZVN0eWxlKTsKICAgICB9CiB9CkBAIC0xNDE1LDggKzE0MTUsOCBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAKICAgICAgICAgY29tcG9zaXRlT3AgPSBDb21w
b3NpdGVEZXN0aW5hdGlvbkluOwogICAgICAgICBpZiAocHVzaFRyYW5zcGFyZW5jeUxheWVyKSB7
Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigxLjBmKTsK
ICAgICAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICAgICAg
fQogICAgIH0KQEAgLTE0MjcsMTQgKzE0MjcsMTQgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWlu
dE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMK
ICAgICBib29sIGhhc0JveEltYWdlID0gbWFza0JveEltYWdlICYmIG1hc2tCb3hJbWFnZS0+Y2Fu
UmVuZGVyKCZyZW5kZXJlcigpLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
ICAgICBpZiAoIWhhc0JveEltYWdlIHx8ICFtYXNrQm94SW1hZ2UtPmlzTG9hZGVkKCkpIHsKICAg
ICAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICByZXR1cm47IC8vIERvbid0
IHBhaW50IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgogICAg
IH0KIAogICAgIC8vIFRoZSBzaW1wbGUgY2FzZSBpcyB3aGVyZSB3ZSBhcmUgdGhlIG9ubHkgYm94
IGZvciB0aGlzIG9iamVjdC4gIEluIHRob3NlCiAgICAgLy8gY2FzZXMgb25seSBhIHNpbmdsZSBj
YWxsIHRvIGRyYXcgaXMgcmVxdWlyZWQuCiAgICAgaWYgKCFwcmV2TGluZUJveCgpICYmICFuZXh0
TGluZUJveCgpKSB7Ci0gICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWlu
dEluZm8uY29udGV4dCwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBmcmFtZVJlY3Qu
c2l6ZSgpKSwgcmVuZGVyZXIoKS5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0
ZU9wKTsKKyAgICAgICAgcmVuZGVyZXIoKS5wYWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5j
b250ZXh0KCksIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUo
KSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2UgaGF2ZSBhIG1hc2sgaW1hZ2UgdGhhdCBzcGFu
cyBtdWx0aXBsZSBsaW5lcy4KICAgICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgX3R4IGFuZCBf
dHkgYnkgdGhlIHdpZHRoIG9mIGFsbCBwcmV2aW91cyBsaW5lcy4KQEAgLTE0NTAsMTMgKzE0NTAs
MTMgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgTGF5b3V0VW5pdCBzdHJpcEhl
aWdodCA9IGlzSG9yaXpvbnRhbCgpID8gZnJhbWVSZWN0LmhlaWdodCgpIDogdG90YWxMb2dpY2Fs
V2lkdGg7CiAKICAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGNsaXBSZWN0Rm9yTmluZVBp
ZWNlSW1hZ2VTdHJpcCh0aGlzLCBtYXNrTmluZVBpZWNlSW1hZ2UsIHBhaW50UmVjdCk7Ci0gICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRl
eHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7Ci0gICAgICAg
IHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgTGF5b3V0
UmVjdChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigp
LnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CisgICAgICAgIHJlbmRl
cmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCgpLCBMYXlvdXRSZWN0
KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCksIHJlbmRlcmVyKCkuc3R5
bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7CiAgICAgfQogICAgIAogICAg
IGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmVuZFRy
YW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKIElubGluZUJveCogSW5saW5lRmxvd0JveDo6Zmlyc3RM
ZWFmQ2hpbGQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCmluZGV4IDllNmQyY2VjMGZkNDU0M2E2N2FhNzhmYmMyZDcxZDJkZjgyNDBiOGIuLmYzNTEz
ZGMzZDUyY2M3YzU0ZGFkNzBiNDlhMTFjMmNmZjE0ZDZmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5
bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludElu
Zm8uaAppbmRleCAxNWIxZjI0MTI4Mjc0NGRjNWJkNmRiNWMyZjljZGYxNzg4NWI4OTg0Li5kZGJj
OTMzNTBhNzMyYTMxNTVjNzc0ZWNhMjg0OTQ0M2M0YjQzNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1BhaW50SW5mby5oCkBAIC00OSwyMCArNDksMzEgQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAq
ICh0eHx0eSkgaXMgdGhlIGNhbGN1bGF0ZWQgcG9zaXRpb24gb2YgdGhlIHBhcmVudAogICovCiBz
dHJ1Y3QgUGFpbnRJbmZvIHsKLSAgICBQYWludEluZm8oR3JhcGhpY3NDb250ZXh0KiBuZXdDb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBuZXdSZWN0LCBQYWludFBoYXNlIG5ld1BoYXNlLCBQYWlu
dEJlaGF2aW9yIG5ld1BhaW50QmVoYXZpb3IsCisgICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4
dCYgbmV3Q29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQ
aGFzZSwgUGFpbnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAogICAgICAgICBSZW5kZXJPYmpl
Y3QqIG5ld1N1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxp
bmUqPiogbmV3T3V0bGluZU9iamVjdHMgPSBudWxscHRyLAogICAgICAgICBPdmVybGFwVGVzdFJl
cXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMgPSBudWxscHRyLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBuZXdQYWludENvbnRhaW5lciA9IG51bGxwdHIpCi0gICAgICAgICAgICA6
IGNvbnRleHQobmV3Q29udGV4dCkKLSAgICAgICAgICAgICwgcmVjdChuZXdSZWN0KQorICAgICAg
ICAgICAgOiByZWN0KG5ld1JlY3QpCiAgICAgICAgICAgICAsIHBoYXNlKG5ld1BoYXNlKQogICAg
ICAgICAgICAgLCBwYWludEJlaGF2aW9yKG5ld1BhaW50QmVoYXZpb3IpCiAgICAgICAgICAgICAs
IHN1YnRyZWVQYWludFJvb3QobmV3U3VidHJlZVBhaW50Um9vdCkKICAgICAgICAgICAgICwgb3V0
bGluZU9iamVjdHMobmV3T3V0bGluZU9iamVjdHMpCiAgICAgICAgICAgICAsIG92ZXJsYXBUZXN0
UmVxdWVzdHMob3ZlcmxhcFRlc3RSZXF1ZXN0cykKICAgICAgICAgICAgICwgcGFpbnRDb250YWlu
ZXIobmV3UGFpbnRDb250YWluZXIpCisgICAgICAgICAgICAsIG1fY29udGV4dCgmbmV3Q29udGV4
dCkKICAgICB7CiAgICAgfQogCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHQpOworICAgICAgICByZXR1cm4gKm1fY29u
dGV4dDsKKyAgICB9CisKKyAgICB2b2lkIHNldENvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0ID0gJmNvbnRleHQ7CisgICAgfQorCiAgICAg
dm9pZCB1cGRhdGVTdWJ0cmVlUGFpbnRSb290Rm9yQ2hpbGRyZW4oY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICB7CiAgICAgICAgIGlmICghc3VidHJlZVBhaW50Um9vdCkKQEAgLTkz
LDcgKzEwNCw3IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICBpZiAobG9jYWxUb0FuY2Vz
dG9yVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsKKyAgICAgICAg
Y29udGV4dCgpLmNvbmNhdENUTShsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0pOwogCiAgICAgICAg
IGlmIChyZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMyw3ICsx
MTQsNiBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNp
emUodHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0OwogICAgIExheW91dFJlY3QgcmVjdDsKICAgICBQYWludFBoYXNlIHBoYXNlOwog
ICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvcjsKQEAgLTExMSw2ICsxMjEsOSBAQCBzdHJ1
Y3QgUGFpbnRJbmZvIHsKICAgICBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogb3V0bGluZU9i
amVjdHM7IC8vIHVzZWQgdG8gbGlzdCBvdXRsaW5lcyB0aGF0IHNob3VsZCBiZSBwYWludGVkIGJ5
IGEgYmxvY2sgd2l0aCBpbmxpbmUgY2hpbGRyZW4KICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAq
IG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAgICAgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cGFpbnRDb250YWluZXI7IC8vIHRoZSBsYXllciBvYmplY3QgdGhhdCBvcmlnaW5hdGVzIHRoZSBj
dXJyZW50IHBhaW50aW5nCisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NDb250ZXh0KiBtX2NvbnRl
eHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCA5YWRlNzk0YTU3ZjFkMDBjYTc0NjViNGNjM2ZkMGY4Yzg2
MDNjNTJhLi44NjQ5NmRmYTliNzUwYTM5ZmFjNzc1YzlkMTFkYzk2NGM5MmRiZGQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MjAsNyArMTQyMCw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgLy8gei1pbmRleC4gIFdlIHBhaW50IGFmdGVyIHdl
IHBhaW50ZWQgdGhlIGJhY2tncm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3JvbGxiYXJzIHdp
bGwKICAgICAvLyBzaXQgYWJvdmUgdGhlIGJhY2tncm91bmQvYm9yZGVyLgogICAgIGlmICgocGhh
c2UgPT0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCB8fCBwaGFzZSA9PSBQYWludFBoYXNlQ2hp
bGRCbG9ja0JhY2tncm91bmQpICYmIGhhc092ZXJmbG93Q2xpcCgpICYmIHN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZJU0lCTEUgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhp
cykgJiYgIXBhaW50SW5mby5wYWludFJvb3RCYWNrZ3JvdW5kT25seSgpKQotICAgICAgICBsYXll
cigpLT5wYWludE92ZXJmbG93Q29udHJvbHMocGFpbnRJbmZvLmNvbnRleHQsIHJvdW5kZWRJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3Qp
KTsKKyAgICAgICAgbGF5ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250
ZXh0KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgc25hcHBlZEludFJl
Y3QocGFpbnRJbmZvLnJlY3QpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250ZW50
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpA
QCAtMTUxNiw5ICsxNTE2LDkgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDYXJldChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKIAogICAgIGlmIChj
YXJldFBhaW50ZXIgPT0gdGhpcyAmJiAoaXNDb250ZW50RWRpdGFibGUgfHwgY2FyZXRCcm93c2lu
ZykpIHsKICAgICAgICAgaWYgKHR5cGUgPT0gQ3Vyc29yQ2FyZXQpCi0gICAgICAgICAgICBmcmFt
ZSgpLnNlbGVjdGlvbigpLnBhaW50Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50T2Zmc2V0
LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLnNlbGVjdGlvbigpLnBhaW50
Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRyYWdDYXJldENvbnRy
b2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNvbnRleHQsIHBhaW50
T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBmcmFtZSgpLnBhZ2UoKS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLnBhaW50RHJhZ0NhcmV0KCZmcmFtZSgpLCBwYWludEluZm8uY29u
dGV4dCgpLCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnJlY3QpOwogICAgIH0KIH0KIApAQCAtMTUz
OCwxNiArMTUzOCwxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludE9iamVjdChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgICAgICAgICAgICAg
IC8vIG92ZXJmbG93cyByZWdpb24gWCBhbmQgaXMgYW4gdW5zcGxpdHRhYmxlIGVsZW1lbnQgKGxp
a2UgYW4gaW1hZ2UpLgogICAgICAgICAgICAgICAgIC8vIFRoZSBzYW1lIGFwcGxpZXMgZm9yIGEg
Ym94IG92ZXJmbG93aW5nIHRoZSB0b3Agb2YgcmVnaW9uIFggd2hlbiB0aGF0IGJveCBpcyBhbHNv
IGZyYWdtZW50ZWQgaW4gcmVnaW9uIFgtMS4KIAotICAgICAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZl
KCk7CiAgICAgICAgICAgICAgICAgZGlkQ2xpcFRvUmVnaW9uID0gdHJ1ZTsKIAotICAgICAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGRvd25jYXN0PFJlbmRlck5hbWVkRmxvd1Ro
cmVhZD4oKnBhaW50SW5mby5wYWludENvbnRhaW5lcikuZGVjb3JhdGlvbnNDbGlwUmVjdEZvckJv
eEluTmFtZWRGbG93RnJhZ21lbnQoKnRoaXMsICpuYW1lZEZsb3dGcmFnbWVudCkpOworICAgICAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChkb3duY2FzdDxSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ+KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25zQ2xpcFJlY3RG
b3JCb3hJbk5hbWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21lbnQpKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgcGFpbnRCb3hEZWNvcmF0aW9ucyhwYWludEluZm8s
IHBhaW50T2Zmc2V0KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGRpZENsaXBUb1Jl
Z2lvbikKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAg
ICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0xNzY1LDcgKzE3NjUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludFNlbGVj
dGlvbihQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAg
ICAgICBMYXlvdXRVbml0IGxhc3RUb3AgPSAwOwogICAgICAgICBMYXlvdXRVbml0IGxhc3RMZWZ0
ID0gbG9naWNhbExlZnRTZWxlY3Rpb25PZmZzZXQoKnRoaXMsIGxhc3RUb3AsIGNhY2hlKTsKICAg
ICAgICAgTGF5b3V0VW5pdCBsYXN0UmlnaHQgPSBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQo
KnRoaXMsIGxhc3RUb3AsIGNhY2hlKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgICAgICBM
YXlvdXRSZWN0IGdhcFJlY3RzQm91bmRzID0gc2VsZWN0aW9uR2FwcygqdGhpcywgcGFpbnRPZmZz
ZXQsIExheW91dFNpemUoKSwgbGFzdFRvcCwgbGFzdExlZnQsIGxhc3RSaWdodCwgY2FjaGUsICZw
YWludEluZm8pOwogICAgICAgICBpZiAoIWdhcFJlY3RzQm91bmRzLmlzRW1wdHkoKSkgewpAQCAt
MTc5Niw3ICsxNzk2LDcgQEAgc3RhdGljIHZvaWQgY2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKGNv
bnN0IFBhaW50SW5mbyogcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2kKICAgICBUcmFja2VkUmVu
ZGVyZXJMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZE9iamVjdHMt
PmVuZCgpOwogICAgIGZvciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICBSZW5kZXJCb3gqIHIgPSAqaXQ7Ci0gICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+
Y2xpcE91dChJbnRSZWN0KG9mZnNldC54KCkgKyByLT54KCksIG9mZnNldC55KCkgKyByLT55KCks
IHItPndpZHRoKCksIHItPmhlaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby0+Y29udGV4dCgp
LmNsaXBPdXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgp
LCByLT53aWR0aCgpLCByLT5oZWlnaHQoKSkpOwogICAgIH0KIH0KIApAQCAtMTk2Niw3ICsxOTY2
LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6YmxvY2tTZWxlY3Rpb25HYXAoUmVuZGVyQmxv
Y2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG8KIAogICAgIExheW91dFJlY3QgZ2FwUmVjdCA9
IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9z
aXRpb24sIExheW91dFJlY3QobG9naWNhbExlZnQsIGxvZ2ljYWxUb3AsIGxvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCkpOwogICAgIGlmIChwYWludEluZm8pCi0gICAgICAgIHBhaW50SW5mby0+
Y29udGV4dC0+ZmlsbFJlY3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVj
dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CiAgICAgcmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTE5ODMsNyArMTk4Myw3IEBAIExheW91
dFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxMZWZ0U2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IExhCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2su
bG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlv
dXRSZWN0KHJvb3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290Qmxv
Y2tMb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAg
ICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Z2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIHBhaW50SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
Z2FwUmVjdCwgZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rp
b25CYWNrZ3JvdW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAg
cmV0dXJuIGdhcFJlY3Q7CiB9CiAKQEAgLTIwMDAsNyArMjAwMCw3IEBAIExheW91dFJlY3QgUmVu
ZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2Nr
LCBjb25zdCBMCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290QmxvY2subG9naWNhbFJl
Y3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBMYXlvdXRSZWN0KHJv
b3RCbG9ja0xvZ2ljYWxMZWZ0LCByb290QmxvY2tMb2dpY2FsVG9wLCByb290QmxvY2tMb2dpY2Fs
V2lkdGgsIGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWlu
dEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwg
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50
SW5mby0+Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwg
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsT2JqLT5zZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSwgc2VsT2JqLT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGdh
cFJlY3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKaW5kZXggNjdkNzIxNDA0MmIyYTc1MmQ3Mjk0MDQ5ODc4ZjQ1YTkyOWYxNjRiZS4uZTFmM2Yx
N2I5MGUwNDk4OWExNDJhNzRlY2Y1NGQ3ZTllN2NiYWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTIxNDQsNyArMjE0NCw3IEBAIHZvaWQg
UmVuZGVyQmxvY2tGbG93OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYKIHsKICAgICBSZW5kZXJCbG9jazo6cGFpbnRDb2x1bW5SdWxlcyhw
YWludEluZm8sIHBvaW50KTsKICAgICAKLSAgICBpZiAoIW11bHRpQ29sdW1uRmxvd1RocmVhZCgp
IHx8IHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtdWx0
aUNvbHVtbkZsb3dUaHJlYWQoKSB8fCBwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIG91ciBjaGlsZHJl
biBhbmQgcGFpbnQgdGhlIGNvbHVtbiBydWxlcyBhcyBuZWVkZWQuCkBAIC0yMTk2LDcgKzIxOTYs
NyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y2xpcE91dEZsb2F0aW5nT2JqZWN0cyhSZW5kZXJC
bG9jayYgcm9vdEJsb2NrLCBjb25zdCBQYWludAogICAgICAgICAgICAgICAgIGZsb2F0aW5nT2Jq
ZWN0LT5yZW5kZXJlcigpLndpZHRoKCksIGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJlcigpLmhlaWdo
dCgpKTsKICAgICAgICAgICAgIHJvb3RCbG9jay5mbGlwRm9yV3JpdGluZ01vZGUoZmxvYXRCb3gp
OwogICAgICAgICAgICAgZmxvYXRCb3gubW92ZShyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLngo
KSwgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi55KCkpOwotICAgICAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7CisgICAgICAgICAg
ICBwYWludEluZm8tPmNvbnRleHQoKS5jbGlwT3V0KHNuYXBwZWRJbnRSZWN0KGZsb2F0Qm94KSk7
CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IGFlNmFlYTViNWQ3ODE3YTczZDk5MTM4MGYwZGMwNzI4ZWU1N2VlMjIuLmZmMTkxZWE4
OTlkMTkwOTFkYjBhOTJmYzg1NDRjYjA2ZDM2YmU0ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCkBAIC0xMjQyLDkgKzEyNDIsOSBAQCB2b2lkIFJlbmRlckJveDo6cGFp
bnRSb290Qm94RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbykKICAgICBwYWlu
dEZpbGxMYXllcnMocGFpbnRJbmZvLCBiZ0NvbG9yLCBiZ0xheWVyLCB2aWV3KCkuYmFja2dyb3Vu
ZFJlY3QoKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291cmNlT3ZlciwgJnJvb3RC
YWNrZ3JvdW5kUmVuZGVyZXIpOwogfQogCi1CYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgUmVuZGVy
Qm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KSBjb25zdAorQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0ZXJt
aW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEJhY2tncm91bmRCbGVlZE5v
bmU7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSB0aGlzLT5zdHlsZSgpOwpAQCAt
MTI1Miw3ICsxMjUyLDcgQEAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6ZGV0
ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ28KICAgICBpZiAoIXN0eWxl
Lmhhc0JhY2tncm91bmQoKSB8fCAhc3R5bGUuaGFzQm9yZGVyKCkgfHwgIXN0eWxlLmhhc0JvcmRl
clJhZGl1cygpIHx8IGJvcmRlckltYWdlSXNMb2FkZWRBbmRDYW5CZVJlbmRlcmVkKCkpCiAgICAg
ICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWROb25lOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGN0
bSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0
LmdldENUTSgpOwogICAgIEZsb2F0U2l6ZSBjb250ZXh0U2NhbGluZyhzdGF0aWNfY2FzdDxmbG9h
dD4oY3RtLnhTY2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS55U2NhbGUoKSkpOwogCiAg
ICAgLy8gQmVjYXVzZSBSb3VuZGVkUmVjdCB1c2VzIEludFJlY3QgaW50ZXJuYWxseSB0aGUgaW5z
ZXQgYXBwbGllZCBieSB0aGUgCkBAIC0xMjkzLDIxICsxMjkzLDIxIEBAIHZvaWQgUmVuZGVyQm94
OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpCiAgICAgICAgIHBhaW50UmVjdCA9IEludFJlY3QocGFpbnRSZWN0LngoKSwgcGFp
bnRSZWN0LnkoKSArICh0aGlzLT5oZWlnaHQoKSAtIGhlaWdodCkgLyAyLCB3aWR0aCwgaGVpZ2h0
KTsgLy8gVmVydGljYWxseSBjZW50ZXIgdGhlIGNoZWNrYm94LCBsaWtlIG9uIGRlc2t0b3AKICAg
ICB9CiAjZW5kaWYKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2Ug
PSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9IGRldGVybWluZUJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIEZJ
WE1FOiBTaG91bGQgZXZlbnR1YWxseSBnaXZlIHRoZSB0aGVtZSBjb250cm9sIG92ZXIgd2hldGhl
ciB0aGUgYm94IHNoYWRvdyBzaG91bGQgcGFpbnQsIHNpbmNlIGNvbnRyb2xzIGNvdWxkIGhhdmUK
ICAgICAvLyBjdXN0b20gc2hhZG93cyBvZiB0aGVpciBvd24uCiAgICAgaWYgKCFib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGJsZWVkQXZv
aWRhbmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0
eWxlKCksIE5vcm1hbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKnBhaW50SW5mby5jb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCksIGZhbHNlKTsKICAgICBpZiAoYmxl
ZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAg
ICAgICAgLy8gVG8gYXZvaWQgdGhlIGJhY2tncm91bmQgY29sb3IgYmxlZWRpbmcgb3V0IGJlaGlu
ZCB0aGUgYm9yZGVyLCB3ZSdsbCByZW5kZXIgYmFja2dyb3VuZCBhbmQgYm9yZGVyCiAgICAgICAg
IC8vIGludG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIsIGFuZCB0aGVuIGNsaXAgdGhhdCBpbiBvbmUg
Z28gKHdoaWNoIHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIGNsaXAgYmVmb3JlCiAgICAgICAgIC8v
IGJlZ2lubmluZyB0aGUgbGF5ZXIpLgogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJvdW5kZWRC
b3JkZXJGb3IocGFpbnRSZWN0KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRv
Y3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVjdCku
cGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKDEpOwogICAgIH0KIAogICAgIC8vIElmIHdlIGhhdmUgYSBuYXRpdmUgdGhlbWUgYXBw
ZWFyYW5jZSwgcGFpbnQgdGhhdCBiZWZvcmUgcGFpbnRpbmcgb3VyIGJhY2tncm91bmQuCkBAIC0x
MzQyLDcgKzEzNDIsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICBwYWludEJv
cmRlcihwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgYmxlZWRBdm9pZGFuY2UpOwogCiAg
ICAgaWYgKGJsZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxh
eWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQog
CiB2b2lkIFJlbmRlckJveDo6cGFpbnRCYWNrZ3JvdW5kKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSBibGVlZEF2b2lkYW5jZSkKQEAgLTE1MTksNyArMTUxOSw3IEBAIGJvb2wgUmVuZGVyQm94Ojpi
YWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdAogCiB2b2lkIFJlbmRlckJveDo6cGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8
fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlTWFzayB8fCBwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFz
ZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9m
ZnNldCwgc2l6ZSgpKTsKQEAgLTE1MjgsMTEgKzE1MjgsMTEgQEAgdm9pZCBSZW5kZXJCb3g6OnBh
aW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRDbGlwcGluZ01hc2soUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoIXBhaW50
SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sg
fHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIXBhaW50
SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VDbGlwcGluZ01hc2sg
fHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIExheW91dFJlY3QgcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwg
c2l6ZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qo
cGFpbnRSZWN0KSwgQ29sb3I6OmJsYWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChwYWludFJlY3QpLCBDb2xv
cjo6YmxhY2ssIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnBh
aW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVj
dCYgcGFpbnRSZWN0KQpAQCAtMTU1NywxOCArMTU1NywxOCBAQCB2b2lkIFJlbmRlckJveDo6cGFp
bnRNYXNrSW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0
JiBwYQogICAgICAgICBpZiAobWFza0xheWVycykKICAgICAgICAgICAgIGFsbE1hc2tJbWFnZXNM
b2FkZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9hZGVkKCk7CiAKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRlU291cmNl
T3ZlcjsKICAgICB9CiAKICAgICBpZiAoYWxsTWFza0ltYWdlc0xvYWRlZCkgewogICAgICAgICBw
YWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBDb2xvcigpLCBzdHlsZSgpLm1hc2tMYXllcnMoKSwg
cGFpbnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWROb25lLCBjb21wb3NpdGVPcCk7Ci0gICAgICAgIHBh
aW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwgc3R5bGUoKSwg
c3R5bGUoKS5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOworICAgICAgICBwYWludE5pbmVQ
aWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50UmVjdCwgc3R5bGUoKSwgc3R5bGUo
KS5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAgICBpZiAocHVz
aFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3BhcmVu
Y3lMYXllcigpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlckJveDo6bWFza0NsaXBSZWN0KGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTE2MTksMTYgKzE2MTksMTMgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgQ29sb3ImIGMsIGNvbnMKICAgICAgICAgY3VyTGF5ZXIgPSBjdXJMYXllci0+bmV4dCgpOwog
ICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
OwotICAgIGlmICghY29udGV4dCkKLSAgICAgICAgc2hvdWxkRHJhd0JhY2tncm91bmRJblNlcGFy
YXRlQnVmZmVyID0gZmFsc2U7Ci0KKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dCgpOwogICAgIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSBiYXNlQmdDb2xv
clVzYWdlID0gQmFzZUJhY2tncm91bmRDb2xvclVzZTsKIAogICAgIGlmIChzaG91bGREcmF3QmFj
a2dyb3VuZEluU2VwYXJhdGVCdWZmZXIpIHsKICAgICAgICAgcGFpbnRGaWxsTGF5ZXIocGFpbnRJ
bmZvLCBjLCAqbGF5ZXJzLnJiZWdpbigpLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tn
cm91bmRPYmplY3QsIEJhc2VCYWNrZ3JvdW5kQ29sb3JPbmx5KTsKICAgICAgICAgYmFzZUJnQ29s
b3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JTa2lwOwotICAgICAgICBjb250ZXh0LT5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoMSk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNvbnN0IEZpbGxMYXllcio+Ojpjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHRvcExheWVyID0gbGF5ZXJzLnJlbmQoKTsKQEAgLTE2MzYsNyArMTYz
Myw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zCiAgICAgICAgIHBhaW50RmlsbExheWVyKHBh
aW50SW5mbywgYywgKml0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmpl
Y3QsIGJhc2VCZ0NvbG9yVXNhZ2UpOwogCiAgICAgaWYgKHNob3VsZERyYXdCYWNrZ3JvdW5kSW5T
ZXBhcmF0ZUJ1ZmZlcikKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
KyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCiB2b2lkIFJlbmRl
ckJveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVj
dCwKQEAgLTE3NjgsMTAgKzE3NjUsMTAgQEAgYm9vbCBSZW5kZXJCb3g6OnB1c2hDb250ZW50c0Ns
aXAoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXUKICAgICB9
CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscygo
aXNDb250cm9sQ2xpcCA/IGNvbnRyb2xDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCkgOiBvdmVy
Zmxvd0NsaXBSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoKSwgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIHBhaW50SW5mby5waGFzZSkpLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBpZiAoc3R5bGUoKS5oYXNCb3JkZXJSYWRp
dXMoKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChzdHlsZSgp
LmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBz
aXplKCkpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFj
dG9yKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChzdHlsZSgpLmdldFJvdW5kZWRJbm5l
ckJvcmRlckZvcihMYXlvdXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKS5waXhlbFNu
YXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBSZWN0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTc3OSw3ICsxNzc2LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBvcENvbnRlbnRzQ2xpcChQYWlu
dEluZm8mIHBhaW50SW5mbywgUGFpbnRQaGFzZSBvcmlnaW5hbFBoYXNlLAogewogICAgIEFTU0VS
VChoYXNDb250cm9sQ2xpcCgpIHx8IChoYXNPdmVyZmxvd0NsaXAoKSAmJiAhbGF5ZXIoKS0+aXNT
ZWxmUGFpbnRpbmdMYXllcigpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIGlmIChvcmlnaW5hbFBo
YXNlID09IFBhaW50UGhhc2VPdXRsaW5lKSB7CiAgICAgICAgIHBhaW50SW5mby5waGFzZSA9IFBh
aW50UGhhc2VTZWxmT3V0bGluZTsKICAgICAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBhY2N1
bXVsYXRlZE9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNTUx
ODhjNjE2OWQ0N2Y5MzAzYmRmMTYxYWYyNWE4MmM5ZDJmOThiOS4uMTZkNTFkOTdlZmQ1YWZlOGUx
YTdlMzZmN2Q4MjQ3ZjhmMGJkYTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aApAQCAtNjQwLDcgKzY0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgcGFpbnRNYXNrSW1h
Z2VzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmKTsKIAotICAgIEJhY2tncm91
bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhp
Y3NDb250ZXh0KikgY29uc3Q7CisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICBi
b29sIGJhY2tncm91bmRIYXNPcGFxdWVUb3BMYXllcigpIGNvbnN0OwogCiAgICAgdm9pZCBjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmLCBS
ZW5kZXJSZWdpb24qID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCAxZGNmZTEyMmYwMjc3MjI5MWI3
YTE3YjgzNjRhODcwZGJhMmJkMjJlLi5mY2E5N2FkZjI1YmQxNzE5MmQ5MGZhNWM0NzZmMzNkYTNi
YTA1Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgdGltZSkKICAgICBsYXllcigpLT5iYWNraW5nKCkt
PnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEltYWdl
KiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCitib29s
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogbGF5ZXIsIGNvbnN0IExh
eW91dFNpemUmIHNpemUpCiB7CiAgICAgcmV0dXJuIHZpZXcoKS5pbWFnZVF1YWxpdHlDb250cm9s
bGVyKCkuc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGxheWVy
LCBzaXplKTsKIH0KQEAgLTUxOCwzNCArNTE4LDM0IEBAIFJvdW5kZWRSZWN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgYm9y
CiAgICAgcmV0dXJuIGJvcmRlcjsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xp
cFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0ICogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlw
UmVjdCkKIHsKICAgICBpZiAoY2xpcFJlY3QuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgIGNvbnRl
eHQtPmNsaXBSb3VuZGVkUmVjdChjbGlwUmVjdCk7CisgICAgICAgIGNvbnRleHQuY2xpcFJvdW5k
ZWRSZWN0KGNsaXBSZWN0KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgY3JlYXRlIGEgcm91
bmRlZCByZWN0IGZvciBlYWNoIG9mIHRoZSBjb3JuZXJzIGFuZCBjbGlwIGl0LCB3aGlsZSBtYWtp
bmcgc3VyZSB3ZSBjbGlwIG9wcG9zaW5nIGNvcm5lcnMgdG9nZXRoZXIuCiAgICAgICAgIGlmICgh
Y2xpcFJlY3QucmFkaWkoKS50b3BMZWZ0KCkuaXNFbXB0eSgpIHx8ICFjbGlwUmVjdC5yYWRpaSgp
LmJvdHRvbVJpZ2h0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdG9wQ29y
bmVyKGNsaXBSZWN0LnJlY3QoKS54KCksIGNsaXBSZWN0LnJlY3QoKS55KCksIHJlY3QubWF4WCgp
IC0gY2xpcFJlY3QucmVjdCgpLngoKSwgcmVjdC5tYXhZKCkgLSBjbGlwUmVjdC5yZWN0KCkueSgp
KTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIHRvcENvcm5lclJhZGlpOwog
ICAgICAgICAgICAgdG9wQ29ybmVyUmFkaWkuc2V0VG9wTGVmdChjbGlwUmVjdC5yYWRpaSgpLnRv
cExlZnQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwgdG9wQ29ybmVyUmFk
aWkpKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdHRvbUNvcm5lcihyZWN0LngoKSwgcmVj
dC55KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhYKCkgLSByZWN0LngoKSwgY2xpcFJlY3QucmVjdCgp
Lm1heFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlp
IGJvdHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAgYm90dG9tQ29ybmVyUmFkaWkuc2V0Qm90
dG9tUmlnaHQoY2xpcFJlY3QucmFkaWkoKS5ib3R0b21SaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90
dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QoYm90dG9tQ29ybmVyLCBib3R0b21Db3JuZXJSYWRpaSkpOwogICAgICAg
ICB9IAogCiAgICAgICAgIGlmICghY2xpcFJlY3QucmFkaWkoKS50b3BSaWdodCgpLmlzRW1wdHko
KSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0b21MZWZ0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBGbG9hdFJlY3QgdG9wQ29ybmVyKHJlY3QueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgpLCBj
bGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJlY3Qu
cmVjdCgpLnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BDb3Ju
ZXJSYWRpaTsKICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcFJpZ2h0KGNsaXBSZWN0
LnJhZGlpKCkudG9wUmlnaHQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7CisgICAgICAg
ICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRvcENvcm5lciwg
dG9wQ29ybmVyUmFkaWkpKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IGJvdHRvbUNvcm5lcihj
bGlwUmVjdC5yZWN0KCkueCgpLCByZWN0LnkoKSwgcmVjdC5tYXhYKCkgLSBjbGlwUmVjdC5yZWN0
KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WSgpIC0gcmVjdC55KCkpOwogICAgICAgICAgICAg
RmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgYm90dG9tQ29ybmVyUmFkaWk7CiAgICAgICAgICAgICBi
b3R0b21Db3JuZXJSYWRpaS5zZXRCb3R0b21MZWZ0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVm
dCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm90dG9tQ29ybmVyLCBib3R0b21D
b3JuZXJSYWRpaSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNTgxLDcgKzU4MSw3IEBAIFJv
dW5kZWRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1
c3RlZEZvckJsZWVkQXZvaWRhbmNlCiAgICAgcmV0dXJuIGdldEJhY2tncm91bmRSb3VuZGVkUmVj
dChib3JkZXJSZWN0LCBib3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogfQogCi1zdGF0
aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgdm9pZCBhcHBseUJveFNoYWRvd0ZvckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7
CiAgICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93ID0gc3R5bGUtPmJveFNoYWRvdygpOwog
ICAgIHdoaWxlIChib3hTaGFkb3ctPnN0eWxlKCkgIT0gTm9ybWFsKQpAQCAtNTg5LDE1ICs1ODks
MTUgQEAgc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHMKIAogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZz
ZXQoYm94U2hhZG93LT54KCksIGJveFNoYWRvdy0+eSgpKTsKICAgICBpZiAoIWJveFNoYWRvdy0+
aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29s
b3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBib3hT
aGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNlKCkp
OwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNl
dCwgYm94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JT
cGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0LCBi
b3hTaGFkb3ctPnJhZGl1cygpLCBib3hTaGFkb3ctPmNvbG9yKCksIHN0eWxlLT5jb2xvclNwYWNl
KCkpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0Rmls
bEJveChJbWFnZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdCBJbnRSZWN0JiBtYXNrUmVjdCwgSW5s
aW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRSZWN0JiBzY3JvbGxlZFBhaW50UmVjdCkKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRl
eHQoKTsKLSAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1hc2tSZWN0LngoKSwgLW1h
c2tSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFz
a0ltYWdlLT5jb250ZXh0KCk7CisgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUoLW1hc2tS
ZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7CiAKICAgICAvLyBOb3cgYWRkIHRoZSB0ZXh0IHRvIHRo
ZSBjbGlwLiBXZSBkbyB0aGlzIGJ5IHBhaW50aW5nIHVzaW5nIGEgc3BlY2lhbCBwYWludCBwaGFz
ZSB0aGF0IHNpZ25hbHMgdG8KICAgICAvLyBJbmxpbmVUZXh0Qm94ZXMgdGhhdCB0aGV5IHNob3Vs
ZCBqdXN0IGFkZCB0aGVpciBjb250ZW50cyB0byB0aGUgY2xpcC4KQEAgLTYxOCw4ICs2MTgsOCBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFn
ZUJ1ZmZlciogbWFza0ltYWdlLCBjb25zdAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsCiAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVG
bG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNpemUsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9y
VXNhZ2UgYmFzZUJnQ29sb3JVc2FnZSkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
IHx8IHJlY3QuaXNFbXB0eSgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGluY2x1ZGVMZWZ0RWRn
ZSA9IGJveCA/IGJveC0+aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpIDogdHJ1ZTsKQEAgLTY3Miwz
MiArNjcyLDMyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgPSB0
aGlzLT5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5sb2NhdGlvbigp
LCBibGVlZEF2b2lkYW5jZSwgYm94KTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzaGFkb3dTdGF0ZVNhdmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0Jh
Y2tncm91bmQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRl
U2F2ZXIoY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTsKICAg
ICAgICAgaWYgKGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKICAgICAgICAg
ICAgIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUoKSk7CiAKICAg
ICAgICAgaWYgKGhhc1JvdW5kZWRCb3JkZXIgJiYgYmxlZWRBdm9pZGFuY2UgIT0gQmFja2dyb3Vu
ZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgICAgIEZsb2F0Um91bmRlZFJl
Y3QgcGl4ZWxTbmFwcGVkQm9yZGVyID0gYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JC
bGVlZEF2b2lkYW5jZSgqY29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6
ZSwKKyAgICAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkQm9yZGVyID0gYmFj
a2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb250ZXh0LCByZWN0
LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLAogICAgICAgICAgICAgICAgIGluY2x1ZGVM
ZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWlu
dGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkQm9y
ZGVyLmlzUmVuZGVyYWJsZSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVk
UmVjdChwaXhlbFNuYXBwZWRCb3JkZXIsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3Jk
ZXIsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LnNhdmUoKTsKICAgICAgICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChjb250ZXh0LCBw
aXhlbFNuYXBwZWRSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXIpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlci5yZWN0KCksIGJnQ29sb3IsIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgp
LCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC5yZXN0b3JlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
Y29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdDb2xvciwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRSZWN0
LCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIEJvcmRlckZpbGxCb3ggcmFkaXVzIGNsaXBwaW5nIGlzIHRha2VuIGNhcmUg
b2YgYnkgQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIKICAgICBib29sIGNsaXBU
b0JvcmRlclJhZGl1cyA9IGhhc1JvdW5kZWRCb3JkZXIgJiYgIShpc0JvcmRlckZpbGwgJiYgYmxl
ZWRBdm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgY2xpcFRvQm9yZGVyU3RhdGVTYXZlcigqY29udGV4
dCwgY2xpcFRvQm9yZGVyUmFkaXVzKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNs
aXBUb0JvcmRlclN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcFRvQm9yZGVyUmFkaXVzKTsKICAgICBp
ZiAoY2xpcFRvQm9yZGVyUmFkaXVzKSB7Ci0gICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGlz
Qm9yZGVyRmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFu
Y2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVM
ZWZ0RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QocmVj
dCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRn
ZSwgaW5jbHVkZVJpZ2h0RWRnZSk7CisgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGlzQm9y
ZGVyRmlsbCA/IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2Uo
Y29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwgaW5jbHVkZUxlZnRF
ZGdlLCBpbmNsdWRlUmlnaHRFZGdlKSA6IGdldEJhY2tncm91bmRSb3VuZGVkUmVjdChyZWN0LCBi
b3gsIGJveFNpemUud2lkdGgoKSwgYm94U2l6ZS5oZWlnaHQoKSwgaW5jbHVkZUxlZnRFZGdlLCBp
bmNsdWRlUmlnaHRFZGdlKTsKIAogICAgICAgICAvLyBDbGlwIHRvIHRoZSBwYWRkaW5nIG9yIGNv
bnRlbnQgYm94ZXMgYXMgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoYmdMYXllci0+Y2xpcCgpID09
IENvbnRlbnRGaWxsQm94KSB7CkBAIC03MTQsMTIgKzcxNCwxMiBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjbwogICAgIExheW91dFVuaXQgcExlZnQgPSBpbmNsdWRlTGVmdEVkZ2UgPyBwYWRkaW5n
TGVmdCgpIDogTGF5b3V0VW5pdCgpOwogICAgIExheW91dFVuaXQgcFJpZ2h0ID0gaW5jbHVkZVJp
Z2h0RWRnZSA/IHBhZGRpbmdSaWdodCgpIDogTGF5b3V0VW5pdCgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBjbGlwV2l0aFNjcm9sbGluZ1N0YXRlU2F2ZXIoKmNvbnRleHQsIGNs
aXBwZWRXaXRoTG9jYWxTY3JvbGxpbmcpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
Y2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBwZWRXaXRoTG9jYWxTY3Jv
bGxpbmcpOwogICAgIExheW91dFJlY3Qgc2Nyb2xsZWRQYWludFJlY3QgPSByZWN0OwogICAgIGlm
IChjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhlIG92
ZXJmbG93IGFyZWEuCiAgICAgICAgIGF1dG8mIHRoaXNCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+
KCp0aGlzKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcCh0aGlzQm94Lm92ZXJmbG93Q2xpcFJlY3Qo
cmVjdC5sb2NhdGlvbigpLCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpOworICAg
ICAgICBjb250ZXh0LmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0KHJlY3QubG9jYXRpb24o
KSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKICAgICAgICAgCiAgICAgICAg
IC8vIEFkanVzdCB0aGUgcGFpbnQgcmVjdCB0byByZWZsZWN0IGEgc2Nyb2xsZWQgY29udGVudCBi
b3ggd2l0aCBib3JkZXJzIGF0IHRoZSBlbmRzLgogICAgICAgICBJbnRTaXplIG9mZnNldCA9IHRo
aXNCb3guc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludElu
Zm8mIHBhaW50SW5mbywgY28KICAgICAgICAgc2Nyb2xsZWRQYWludFJlY3Quc2V0SGVpZ2h0KGJv
cmRlclRvcCgpICsgbGF5ZXIoKS0+c2Nyb2xsSGVpZ2h0KCkgKyBib3JkZXJCb3R0b20oKSk7CiAg
ICAgfQogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFja2dyb3VuZENsaXBT
dGF0ZVNhdmVyKCpjb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwogICAgIEludFJlY3QgbWFza1JlY3Q7CiAK
QEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAg
ICAgIHNjcm9sbGVkUGFpbnRSZWN0LndpZHRoKCkgLSBiTGVmdCAtIGJSaWdodCAtIChpbmNsdWRl
UGFkZGluZyA/IHBMZWZ0ICsgcFJpZ2h0IDogTGF5b3V0VW5pdCgpKSwKICAgICAgICAgICAgICAg
ICBzY3JvbGxlZFBhaW50UmVjdC5oZWlnaHQoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9t
KCkgLSAoaW5jbHVkZVBhZGRpbmcgPyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkgOiBM
YXlvdXRVbml0KCkpKTsKICAgICAgICAgICAgIGJhY2tncm91bmRDbGlwU3RhdGVTYXZlci5zYXZl
KCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIGNv
bnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGJnTGF5ZXIt
PmNsaXAoKSA9PSBUZXh0RmlsbEJveCkgewogICAgICAgICAvLyBXZSBoYXZlIHRvIGRyYXcgb3Vy
IHRleHQgaW50byBhIG1hc2sgdGhhdCBjYW4gdGhlbiBiZSB1c2VkIHRvIGNsaXAgYmFja2dyb3Vu
ZCBkcmF3aW5nLgpAQCAtNzUxLDE1ICs3NTEsMTUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28K
ICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0
KSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdl
ID0gY29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOworICAg
ICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Qu
c2l6ZSgpKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3Qs
IGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwogCiAgICAgICAgIC8vIFRoZSBtYXNrIGhhcyBiZWVu
IGNyZWF0ZWQuICBOb3cgd2UganVzdCBuZWVkIHRvIGNsaXAgdG8gaXQuCiAgICAgICAgIGJhY2tn
cm91bmRDbGlwU3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAobWFza1Jl
Y3QpOwotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAgICAg
ICBjb250ZXh0LmNsaXAobWFza1JlY3QpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIoMSk7CiAgICAgfQogCiAgICAgLy8gT25seSBmaWxsIHdpdGggYSBiYXNlIGNvbG9y
IChlLmcuLCB3aGl0ZSkgaWYgd2UncmUgdGhlIHJvb3QgZG9jdW1lbnQsIHNpbmNlIGlmcmFtZXMv
ZnJhbWVzIHdpdGgKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwog
ICAgICAgICAgICAgICAgICAgICBzaG91bGRDbGVhckJhY2tncm91bmQgPSB0cnVlOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0
YXRlU2F2ZXIoKmNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7
CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIo
Y29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKTsKICAgICAgICAg
ICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAgICAg
ICAgICAgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKGNvbnRleHQsICZzdHlsZSgpKTsKIApA
QCAtODE3LDEyICs4MTcsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAg
ICAgICBpZiAoIWJhc2VCZ0NvbG9yT25seSAmJiBiZ0NvbG9yLmFscGhhKCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJhc2VDb2xvciA9IGJhc2VDb2xvci5ibGVuZChiZ0NvbG9yKTsKIAotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJh
c2VDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmFzZUNv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgQ29tcG9zaXRlQ29weSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKSB7Ci0gICAgICAg
ICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uID0gc2hvdWxkQ2xlYXJCYWNrZ3Jv
dW5kID8gQ29tcG9zaXRlQ29weSA6IGNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcs
IGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOworICAgICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/
IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuZmlsbFJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZywgYmdDb2xv
ciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG9wZXJhdGlvbik7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZENsZWFyQmFja2dyb3VuZCkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGVh
clJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CisgICAgICAgICAgICAgICAgY29udGV4
dC5jbGVhclJlY3QoYmFja2dyb3VuZFJlY3RGb3JQYWludGluZyk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTgzNCwxNyArODM0LDE3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCA9IG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9wOwogICAgICAgICAgICAgYXV0byBjbGll
bnRGb3JCYWNrZ3JvdW5kSW1hZ2UgPSBiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVj
dCA6IHRoaXM7CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYmdJbWFnZS0+aW1h
Z2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKLSAgICAg
ICAgICAgIGNvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VU
eXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldERyYXdMdW1p
bmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CiAg
ICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1
YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkp
OwogICAgICAgICAgICAgaWYgKGltYWdlLmdldCgpKQogICAgICAgICAgICAgICAgIGltYWdlLT5z
ZXRTcGFjZVNpemUoZ2VvbWV0cnkuc3BhY2VTaXplKCkpOwotICAgICAgICAgICAgY29udGV4dC0+
ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBnZW9tZXRy
eS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdl
b21ldHJ5LnRpbGVTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xh
eWVyLT5ibGVuZE1vZGUoKSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIHVzZUxvd1F1
YWxpdHlTY2FsaW5nKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlv
dXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+YmxlbmRNb2RlKCksIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBUZXh0RmlsbEJveCkg
ewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobWFza0ltYWdlLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAg
ICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgbWFza1Jl
Y3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOworICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCk7CiAgICAgfQogfQogCkBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpnZXRHZW9tZXRyeUZvckJhY2tncm91bmRJbWFnZShjb25zdCBSZW5k
ZXJMYXllck1vZGVsTwogICAgIGRlc3RSZWN0ID0gZ2VvbWV0cnkuZGVzdFJlY3QoKTsKIH0KIAot
Ym9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLAorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGll
Y2VJbWFnZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOaW5lUGllY2VJbWFnZSYgbmluZVBpZWNl
SW1hZ2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogewogICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1h
Z2UgPSBuaW5lUGllY2VJbWFnZS5pbWFnZSgpOwpAQCAtMTQyNiw3ICsxNDI2LDcgQEAgc3RhdGlj
IGJvb2wgam9pblJlcXVpcmVzTWl0cmUoQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lk
ZSwgY29uc3QgQm9yZGVyRWQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0
ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0
ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICBjb25zdCBMYXlv
dXRSZWN0JiBzaWRlUmVjdCwgQm94U2lkZSBzaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJv
eFNpZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBjb25zdCBQYXRo
KiBwYXRoLAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBi
b29sIGFudGlhbGlhcywgY29uc3QgQ29sb3IqIG92ZXJyaWRlQ29sb3IpCiB7CkBAIC0xNDQ0LDcg
KzE0NDQsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgY29uc3QgQ29sb3ImIGNvbG9y
VG9QYWludCA9IG92ZXJyaWRlQ29sb3IgPyAqb3ZlcnJpZGVDb2xvciA6IGVkZ2VUb1JlbmRlci5j
b2xvcigpOwogCiAgICAgaWYgKHBhdGgpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgaWYgKGlu
bmVyQm9yZGVyLmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgY2xpcEJvcmRlclNpZGVQb2x5
Z29uKGdyYXBoaWNzQ29udGV4dCwgb3V0ZXJCb3JkZXIsIGlubmVyQm9yZGVyLCBzaWRlLCBhZGph
Y2VudFNpZGUxU3R5bGVzTWF0Y2gsIGFkamFjZW50U2lkZTJTdHlsZXNNYXRjaCk7CiAgICAgICAg
IGVsc2UKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAg
ICAgYm9vbCBjbGlwQWRqYWNlbnRTaWRlMiA9IGNvbG9yTmVlZHNBbnRpQWxpYXNBdENvcm5lcihz
aWRlLCBhZGphY2VudFNpZGUyLCBlZGdlcykgJiYgbWl0cmVBZGphY2VudFNpZGUyOwogICAgICAg
ICBib29sIHNob3VsZENsaXAgPSBjbGlwRm9yU3R5bGUgfHwgY2xpcEFkamFjZW50U2lkZTEgfHwg
Y2xpcEFkamFjZW50U2lkZTI7CiAgICAgICAgIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIGNsaXBTdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQsIHNob3VsZENsaXApOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBTdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCwgc2hvdWxkQ2xpcCk7CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAg
ICBib29sIGFsaWFzQWRqYWNlbnRTaWRlMSA9IGNsaXBBZGphY2VudFNpZGUxIHx8IChjbGlwRm9y
U3R5bGUgJiYgbWl0cmVBZGphY2VudFNpZGUxKTsKICAgICAgICAgICAgIGJvb2wgYWxpYXNBZGph
Y2VudFNpZGUyID0gY2xpcEFkamFjZW50U2lkZTIgfHwgKGNsaXBGb3JTdHlsZSAmJiBtaXRyZUFk
amFjZW50U2lkZTIpOwpAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LAogICAgICAgICAgICAgbWl0cmVBZGphY2VudFNpZGUxID0gZmFsc2U7CiAgICAgICAgICAgICBt
aXRyZUFkamFjZW50U2lkZTIgPSBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9yVG9QYWludCwg
ZWRnZVRvUmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFjZW50RWRnZTEu
d2lkdGhGb3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRqYWNlbnRFZGdl
Mi53aWR0aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOworICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LCBzaWRlUmVjdCwgc2lkZSwgY29sb3JUb1BhaW50LCBl
ZGdlVG9SZW5kZXIuc3R5bGUoKSwgbWl0cmVBZGphY2VudFNpZGUxID8gYWRqYWNlbnRFZGdlMS53
aWR0aEZvclBhaW50aW5nKCkgOiAwLCBtaXRyZUFkamFjZW50U2lkZTIgPyBhZGphY2VudEVkZ2Uy
LndpZHRoRm9yUGFpbnRpbmcoKSA6IDAsIGFudGlhbGlhcyk7CiAgICAgfQogfQogCkBAIC0xNDg4
LDcgKzE0ODgsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdChjb25zdCBS
b3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlcgogICAgIHJldHVybiBzaWRlUmVj
dDsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJv
cmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3Jk
ZXIsCiAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3QgQm9y
ZGVyRWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRnZVNldCwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENv
bG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTUzNiw3ICsxNTM2LDcgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY28KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9y
ZGVyQWRqdXN0bWVudCwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJhbnNsdWNl
bnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJv
dW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0
bWVudCwKICAgICBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sIEJvcmRlckVkZ2VGbGFncyBlZGdl
c1RvRHJhdywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBib29sIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wg
YW50aWFsaWFzKQogewogICAgIC8vIHdpbGxCZU92ZXJkcmF3biBhc3N1bWVzIHRoYXQgd2UgZHJh
dyBpbiBvcmRlcjogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LgpAQCAtMTU2NiwxNCArMTU2Niwx
NCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9yZGVyU2lk
ZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljcwogCiAgICAgICAgIGJvb2wgdXNlVHJhbnNwYXJl
bmN5TGF5ZXIgPSBpbmNsdWRlc0FkamFjZW50RWRnZXMoY29tbW9uQ29sb3JFZGdlU2V0KSAmJiBj
b21tb25Db2xvci5oYXNBbHBoYSgpOwogICAgICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIp
IHsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihz
dGF0aWNfY2FzdDxmbG9hdD4oY29tbW9uQ29sb3IuYWxwaGEoKSkgLyAyNTUpOworICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgICAgIGNvbW1vbkNvbG9y
ID0gQ29sb3IoY29tbW9uQ29sb3IucmVkKCksIGNvbW1vbkNvbG9yLmdyZWVuKCksIGNvbW1vbkNv
bG9yLmJsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBwYWludEJvcmRlclNpZGVzKGdyYXBo
aWNzQ29udGV4dCwgc3R5bGUsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgaW5uZXJCb3JkZXJB
ZGp1c3RtZW50LCBlZGdlcywgY29tbW9uQ29sb3JFZGdlU2V0LCBibGVlZEF2b2lkYW5jZSwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGFudGlhbGlhcywg
JmNvbW1vbkNvbG9yKTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAodXNlVHJhbnNwYXJlbmN5
TGF5ZXIpCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
ICAgICAgICAgCiAgICAgICAgIGVkZ2VzVG9EcmF3ICY9IH5jb21tb25Db2xvckVkZ2VTZXQ7CiAg
ICAgfQpAQCAtMTU4Miw5ICsxNTgyLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNl
IGJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQgPSBpbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQg
PSBpbmZvLmNvbnRleHQoKTsKIAotICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQpAQCAtMTU5Nyw3ICsxNTk3
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAgIEJvcmRlckVkZ2UgZWRnZXNbNF07CiAg
ICAgQm9yZGVyRWRnZTo6Z2V0Qm9yZGVyRWRnZUluZm8oZWRnZXMsIHN0eWxlLCBkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKICAgICBSb3VuZGVkUmVjdCBvdXRlckJvcmRlciA9IHN0eWxlLmdldFJv
dW5kZWRCb3JkZXJGb3IocmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpOwotICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5bGUuZ2V0Um91
bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFu
Y2UoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3QgaW5u
ZXJCb3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVySW5uZXJSZWN0
QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShncmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZv
aWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogCiAgICAgYm9vbCBoYXZlQWxwaGFDb2xvciA9IGZhbHNlOwogICAgIGJvb2wgaGF2ZUFsbFNv
bGlkRWRnZXMgPSB0cnVlOwpAQCAtMTcwMyw5ICsxNzAzLDkgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRS
ZWN0JgogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHBhdGguYWRkUmVjdChwaXhl
bFNuYXBwZWRJbm5lckJvcmRlci5yZWN0KCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNldEZpbGxSdWxlKFJVTEVfRVZFTk9ERCk7Ci0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihlZGdlc1tmaXJzdFZpc2libGVFZGdlXS5jb2xv
cigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5m
aWxsUGF0aChwYXRoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsUnVsZShS
VUxFX0VWRU5PREQpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihl
ZGdlc1tmaXJzdFZpc2libGVFZGdlXS5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9IAogICAgICAgICAvLyBBdm9pZCBjcmVhdGluZyB0cmFuc3BhcmVudCBs
YXllcnMKQEAgLTE3MjAsMjMgKzE3MjAsMjMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zZXRGaWxsUnVsZShSVUxFX05PTlpFUk8pOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUu
Y29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgocGF0
aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJP
KTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RW
aXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGJvb2wgY2xpcFRvT3V0ZXJCb3JkZXIgPSBvdXRlckJvcmRlci5p
c1JvdW5kZWQoKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdy
YXBoaWNzQ29udGV4dCwgY2xpcFRvT3V0ZXJCb3JkZXIpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsK
ICAgICBpZiAoY2xpcFRvT3V0ZXJCb3JkZXIpIHsKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgaW5u
ZXIgYW5kIG91dGVyIHJhZGlpIHJlY3RzLgogICAgICAgICBpZiAoYmxlZWRBdm9pZGFuY2UgIT0g
QmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVk
UmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuY2xpcFJvdW5kZWRSZWN0KG91dGVyQm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAgLy8gaXNSZW5kZXJh
YmxlKCkgY2hlY2sgYXZvaWRzIGlzc3VlIGRlc2NyaWJlZCBpbiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3ODcKICAgICAgICAgLy8gVGhlIGluc2lkZSB3aWxsIGJl
IGNsaXBwZWQgb3V0IGxhdGVyIChpbiBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgp
CiAgICAgICAgIGlmIChpbm5lckJvcmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBpeGVsU25hcHBl
ZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoaW5uZXJCb3JkZXIucGl4ZWxTbmFw
cGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIH0KIAog
ICAgIC8vIElmIG9ubHkgb25lIGVkZ2UgdmlzaWJsZSBhbnRpYWxpYXNpbmcgZG9lc24ndCBjcmVh
dGUgc2VhbXMKQEAgLTE3NDksNyArMTc0OSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAg
ICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRl
ciwgdW5hZGp1c3RlZElubmVyQm9yZGVyLCBpbm5lckJvcmRlckFkanVzdG1lbnQsIGVkZ2VzLCBl
ZGdlc1RvRHJhdywgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMpOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRo
LCBjb25zdCBCb3JkZXJFZGdlIGVkZ2VzW10sCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpk
cmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBQYXRoJiBib3JkZXJQYXRoLCBjb25zdCBC
b3JkZXJFZGdlIGVkZ2VzW10sCiAgICAgZmxvYXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tu
ZXNzLCBCb3hTaWRlIHNpZGUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgQ29sb3IgY29sb3Is
IEVCb3JkZXJTdHlsZSBib3JkZXJTdHlsZSwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVk
QXZvaWRhbmNlLAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkKIHsKQEAgLTE3NjUsMTQgKzE3NjUsMTQgQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgRE9UVEVEOgogICAgIGNhc2Ug
REFTSEVEOiB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3Is
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VD
b2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAvLyBUaGUgc3Ryb2tl
IGlzIGRvdWJsZWQgaGVyZSBiZWNhdXNlIHRoZSBwcm92aWRlZCBwYXRoIGlzIHRoZSAKICAgICAg
ICAgLy8gb3V0c2lkZSBlZGdlIG9mIHRoZSBib3JkZXIgc28gaGFsZiB0aGUgc3Ryb2tlIGlzIGNs
aXBwZWQgb2ZmLiAKICAgICAgICAgLy8gVGhlIGV4dHJhIG11bHRpcGxpZXIgaXMgc28gdGhhdCB0
aGUgY2xpcHBpbmcgbWFzayBjYW4gYW50aWFsaWFzCiAgICAgICAgIC8vIHRoZSBlZGdlcyB0byBw
cmV2ZW50IGphZ2dpZXMuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tu
ZXNzKGRyYXdUaGlja25lc3MgKiAyICogMS4xZik7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tlIDogRG90
dGVkU3Ryb2tlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhk
cmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ry
b2tlU3R5bGUoYm9yZGVyU3R5bGUgPT0gREFTSEVEID8gRGFzaGVkU3Ryb2tlIDogRG90dGVkU3Ry
b2tlKTsKIAogICAgICAgICAvLyBJZiB0aGUgbnVtYmVyIG9mIGRhc2hlcyB0aGF0IGZpdCBpbiB0
aGUgcGF0aCBpcyBvZGQgYW5kIG5vbi1pbnRlZ3JhbCB0aGVuIHdlCiAgICAgICAgIC8vIHdpbGwg
aGF2ZSBhbiBhd2t3YXJkbHktc2l6ZWQgZGFzaCBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLiBUbyB0
cnkgdG8gYXZvaWQgdGhhdApAQCAtMTc5NSwxMyArMTc5NSwxMyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LAogICAgICAgICAgICAgRGFzaEFycmF5IGxpbmVEYXNoOwogICAgICAgICAgICAgbGlu
ZURhc2guYXBwZW5kKGRhc2hMZW5ndGgpOwogICAgICAgICAgICAgbGluZURhc2guYXBwZW5kKGdh
cExlbmd0aCk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldExpbmVEYXNoKGxpbmVE
YXNoLCBkYXNoTGVuZ3RoKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRMaW5lRGFz
aChsaW5lRGFzaCwgZGFzaExlbmd0aCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8v
IEZJWE1FOiBzdHJva2luZyB0aGUgYm9yZGVyIHBhdGggY2F1c2VzIGlzc3VlcyB3aXRoIHRpZ2h0
IGNvcm5lcnM6CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01ODcxMQogICAgICAgICAvLyBBbHNvLCB0byBnZXQgdGhlIGJlc3QgYXBwZWFyYW5jZSB3
ZSBzaG91bGQgc3Ryb2tlIGEgcGF0aCBiZXR3ZWVuIHRoZSB0d28gYm9yZGVycy4KLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zdHJva2VQYXRoKGJvcmRlclBhdGgpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIERPVUJMRTogewpAQCAtMTgyNCwxOCArMTgyNCwxOCBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LAogCiAgICAgICAgIC8vIERyYXcgaW5uZXIgYm9yZGVyIGxpbmUKICAgICAgICAg
ewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFw
aGljc0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBpbm5lckNs
aXAgPSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAg
ICAgICAgICBpbm5lckJvcmRlclRvcFdpZHRoLCBpbm5lckJvcmRlckJvdHRvbVdpZHRoLCBpbm5l
ckJvcmRlckxlZnRXaWR0aCwgaW5uZXJCb3JkZXJSaWdodFdpZHRoLAogICAgICAgICAgICAgICAg
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChpbm5lckNsaXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5j
bGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChpbm5lckNsaXApKTsKICAgICAgICAgICAg
IGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQ
YXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3Is
IFNPTElELCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxv
Z2ljYWxSaWdodEVkZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRHJhdyBvdXRlciBib3Jk
ZXIgbGluZQogICAgICAgICB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgICAgIExh
eW91dFJlY3Qgb3V0ZXJSZWN0ID0gYm9yZGVyUmVjdDsKICAgICAgICAgICAgIGlmIChibGVlZEF2
b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAg
ICAgICAgICAgIG91dGVyUmVjdC5pbmZsYXRlKDEpOwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIFJvdW5kZWRSZWN0IG91dGVyQ2xpcCA9
IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihvdXRlclJlY3QsCiAgICAgICAgICAgICAg
ICAgb3V0ZXJCb3JkZXJUb3BXaWR0aCwgb3V0ZXJCb3JkZXJCb3R0b21XaWR0aCwgb3V0ZXJCb3Jk
ZXJMZWZ0V2lkdGgsIG91dGVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAgICAgICBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7Ci0gICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KG91
dGVyQ2xpcCkpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBPdXRSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KG91dGVyQ2xpcCkpOwogICAgICAgICAgICAgZHJhd0JveFNpZGVG
cm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0
aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgU09MSUQsIGJsZWVk
QXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtMTg3MCw3ICsxODcwLDcgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgZHJhd0JveFNpZGVGcm9tUGF0aChncmFwaGlj
c0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVkZ2VzLCB0aGlja25lc3MsIGRyYXdU
aGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgczEsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8g
UGFpbnQgaW5uZXIgb25seQotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmdyYXBoaWNzQ29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICBMYXlvdXRVbml0IHRvcFdp
ZHRoID0gZWRnZXNbQlNUb3BdLndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CiAgICAgICAgIExheW91
dFVuaXQgYm90dG9tV2lkdGggPSBlZGdlc1tCU0JvdHRvbV0ud2lkdGhGb3JQYWludGluZygpIC8g
MjsKICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0V2lkdGggPSBlZGdlc1tCU0xlZnRdLndpZHRoRm9y
UGFpbnRpbmcoKSAvIDI7CkBAIC0xODgwLDcgKzE4ODAsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LAogICAgICAgICAgICAgdG9wV2lkdGgsIGJvdHRvbVdpZHRoLCBsZWZ0V2lkdGgsIHJpZ2h0
V2lkdGgsCiAgICAgICAgICAgICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CiAKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdChjbGlwUmVjdCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuY2xp
cFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKICAgICAgICAgZHJhd0Jv
eFNpZGVGcm9tUGF0aChncmFwaGljc0NvbnRleHQsIGJvcmRlclJlY3QsIGJvcmRlclBhdGgsIGVk
Z2VzLCB0aGlja25lc3MsIGRyYXdUaGlja25lc3MsIHNpZGUsIHN0eWxlLCBjb2xvciwgczIsIGJs
ZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xODkyLDkgKzE4OTIsOSBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBncmFwaGlj
c0NvbnRleHQtPnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPmRyYXdSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9r
ZVN0eWxlKE5vU3Ryb2tlKTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9y
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3UmVjdChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBmaW5kSW5uZXJWZXJ0ZXgoY29uc3QgRmxvYXRQb2lu
dCYgb3V0ZXJDb3JuZXIsIGNvbnN0IEZsb2F0UG9pbnQmIGlubmVyQ29ybmVyLCBjb25zdCBGbG9h
dFBvaW50JiBjZW50ZXJQb2ludCwgRmxvYXRQb2ludCYgcmVzdWx0KQpAQCAtMTkxMiw3ICsxOTEy
LDcgQEAgc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91dGVy
Q29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm4KICAgICAgICAgZmluZEludGVyc2VjdGlvbihv
dXRlckNvcm5lciwgaW5uZXJDb3JuZXIsIEZsb2F0UG9pbnQoMCwgY2VudGVyUG9pbnQueSgpKSwg
RmxvYXRQb2ludCgxMDAsIGNlbnRlclBvaW50LnkoKSksIHJlc3VsdCk7CiB9CiAKLXZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBS
b3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlw
Qm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJveFNp
ZGUgc2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29sIHNlY29uZEVkZ2VNYXRjaGVzKQog
ewogICAgIEZsb2F0UG9pbnQgcXVhZFs0XTsKQEAgLTE5OTQsNyArMTk5NCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4CiAgICAgLy8gSWYgdGhlIGJvcmRlciBtYXRjaGVzIGJvdGggb2YgaXRz
IGFkamFjZW50IHNpZGVzLCBkb24ndCBhbnRpLWFsaWFzIHRoZSBjbGlwLCBhbmQKICAgICAvLyBp
ZiBuZWl0aGVyIHNpZGUgbWF0Y2hlcywgYW50aS1hbGlhcyB0aGUgY2xpcC4KICAgICBpZiAoZmly
c3RFZGdlTWF0Y2hlcyA9PSBzZWNvbmRFZGdlTWF0Y2hlcykgewotICAgICAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIHF1YWQsICFmaXJzdEVkZ2VNYXRjaGVzKTsKKyAg
ICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIHF1YWQsICFmaXJzdEVk
Z2VNYXRjaGVzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjAwNCw3ICsyMDA0LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXgKICAgICBmaXJzdFF1YWRbMV0gPSBxdWFkWzFdOwog
ICAgIGZpcnN0UXVhZFsyXSA9IHNpZGUgPT0gQlNUb3AgfHwgc2lkZSA9PSBCU0JvdHRvbSA/IEZs
b2F0UG9pbnQocXVhZFszXS54KCksIHF1YWRbMl0ueSgpKSA6IEZsb2F0UG9pbnQocXVhZFsyXS54
KCksIHF1YWRbM10ueSgpKTsKICAgICBmaXJzdFF1YWRbM10gPSBxdWFkWzNdOwotICAgIGdyYXBo
aWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgZmlyc3RRdWFkLCAhZmlyc3RFZGdlTWF0
Y2hlcyk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVh
ZCwgIWZpcnN0RWRnZU1hdGNoZXMpOwogCiAgICAgRmxvYXRQb2ludCBzZWNvbmRRdWFkWzRdOwog
ICAgIHNlY29uZFF1YWRbMF0gPSBxdWFkWzBdOwpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXgKICAgICBzZWNvbmRRdWFkWzJdID0gcXVhZFsyXTsKICAgICBzZWNv
bmRRdWFkWzNdID0gcXVhZFszXTsKICAgICAvLyBBbnRpYWxpYXNpbmcgYWZmZWN0cyB0aGUgc2Vj
b25kIHNpZGUuCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBzZWNv
bmRRdWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29u
dmV4UG9seWdvbig0LCBzZWNvbmRRdWFkLCAhc2Vjb25kRWRnZU1hdGNoZXMpOwogfQogCiBzdGF0
aWMgTGF5b3V0UmVjdCBjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKGNvbnN0IFJvdW5k
ZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3hTaWRlIHNp
ZGUpCkBAIC0yMTIyLDExICsyMTIyLDExIEBAIHN0YXRpYyBSb3VuZGVkUmVjdCBjYWxjdWxhdGVB
ZGp1c3RlZElubmVyQm9yZGVyKGNvbnN0IFJvdW5kZWRSZWN0JmlubmVyQm9yZGVyLCBCCiAgICAg
cmV0dXJuIFJvdW5kZWRSZWN0KG5ld1JlY3QsIG5ld1JhZGlpKTsKIH0KIAotdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIs
IGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgQm94U2lkZSBzaWRlLCBjb25zdCBjbGFzcyBCb3Jk
ZXJFZGdlIGVkZ2VzW10pCiB7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGNhbGN1bGF0ZVNp
ZGVSZWN0SW5jbHVkaW5nSW5uZXIob3V0ZXJCb3JkZXIsIGVkZ2VzLCBzaWRlKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChjYWxjdWxh
dGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRlKSkpOworICAgIGdyYXBoaWNz
Q29udGV4dC5jbGlwKGNhbGN1bGF0ZVNpZGVSZWN0SW5jbHVkaW5nSW5uZXIob3V0ZXJCb3JkZXIs
IGVkZ2VzLCBzaWRlKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBPdXRSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGNhbGN1bGF0ZUFkanVzdGVkSW5uZXJCb3JkZXIoaW5uZXJCb3JkZXIs
IHNpZGUpKSk7CiB9CiAKIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlck9ic2N1cmVz
QmFja2dyb3VuZEVkZ2UoY29uc3QgRmxvYXRTaXplJiBjb250ZXh0U2NhbGUpIGNvbnN0CkBAIC0y
MjMwLDggKzIyMzAsOCBAQCBzdGF0aWMgaW5saW5lIExheW91dFJlY3QgYXJlYUNhc3RpbmdTaGFk
b3dJbkhvbGUoY29uc3QgTGF5b3V0UmVjdCYgaG9sZVJlY3QsIGludAogdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRSZWN0JiBwYWludFJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgU2hhZG93U3R5
bGUgc2hhZG93U3R5bGUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGJvcmRlci1pbWFn
ZS4gIFdvdWxkIGJlIGdyZWF0IHRvIHVzZSBib3JkZXItaW1hZ2UgYXMgYSBtYXNrLgotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IGluZm8uY29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBpbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dC5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgIXN0eWxlLmJveFNoYWRvdygpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBSb3VuZGVkUmVjdCBib3JkZXIgPSAoc2hhZG93U3R5bGUgPT0gSW5zZXQpID8gc3R5bGUuZ2V0
Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpCkBAIC0yMjY4LDggKzIyNjgsOCBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNv
bnN0IExheW91dFJlYwogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkU2hhZG93UmVjdC5pbmZsYXRl
KHNoYWRvd1BhaW50aW5nRXh0ZW50ICsgc2hhZG93U3ByZWFkKTsKICAgICAgICAgICAgIHBpeGVs
U25hcHBlZFNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQpOwogCi0gICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgICAgICAgICAg
Y29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKKyAgICAgICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgICAgIGNv
bnRleHQuY2xpcChwaXhlbFNuYXBwZWRTaGFkb3dSZWN0KTsKIAogICAgICAgICAgICAgLy8gTW92
ZSB0aGUgZmlsbCBqdXN0IG91dHNpZGUgdGhlIGNsaXAsIGFkZGluZyAxIHBpeGVsIHNlcGFyYXRp
b24gc28gdGhhdCB0aGUgZmlsbCBkb2VzIG5vdAogICAgICAgICAgICAgLy8gYmxlZWQgaW4gKGR1
ZSB0byBhbnRpYWxpYXNpbmcpIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zZm9ybWVkLgpAQCAtMjI3
OCw5ICsyMjc4LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3co
Y29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIGZpbGxS
ZWN0Lm1vdmUoZXh0cmFPZmZzZXQpOwogCiAgICAgICAgICAgICBpZiAoc2hhZG93LT5pc1dlYmtp
dEJveFNoYWRvdygpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zZXRMZWdhY3lTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMs
IHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgICAgICBGbG9hdFJv
dW5kZWRSZWN0IHJlY3RUb0NsaXBPdXQgPSBib3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRS
ZWN0IHBpeGVsU25hcHBlZEZpbGxSZWN0ID0gZmlsbFJlY3QucGl4ZWxTbmFwcGVkUm91bmRlZFJl
Y3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CkBAIC0yMjkyLDE4ICsyMjkyLDE4IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5m
byYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBP
dXQuaW5mbGF0ZVdpdGhSYWRpaShMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoLTEpKTsKIAogICAgICAg
ICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChyZWN0VG9DbGlwT3V0KTsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CiAK
ICAgICAgICAgICAgICAgICBSb3VuZGVkUmVjdCBpbmZsdWVuY2VSZWN0KExheW91dFJlY3QocGl4
ZWxTbmFwcGVkU2hhZG93UmVjdCksIGJvcmRlci5yYWRpaSgpKTsKICAgICAgICAgICAgICAgICBp
bmZsdWVuY2VSZWN0LmV4cGFuZFJhZGlpKDIgKiBzaGFkb3dQYWludGluZ0V4dGVudCArIHNoYWRv
d1NwcmVhZCk7CiAKICAgICAgICAgICAgICAgICBpZiAoYWxsQ29ybmVyc0NsaXBwZWRPdXQoaW5m
bHVlbmNlUmVjdCwgaW5mby5yZWN0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Zmls
bFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxT
bmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHBpeGVsU25hcHBl
ZEZpbGxSZWN0LmV4cGFuZFJhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICAgICAgICAg
IGlmICghcGl4ZWxTbmFwcGVkRmlsbFJlY3QuaXNSZW5kZXJhYmxlKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxsUmVjdC5hZGp1c3RSYWRpaSgpOwotICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3Qs
IENvbG9yOjpibGFjaywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QsIENvbG9yOjpibGFj
aywgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBib3ggaXMgb3BhcXVlLCBpdCBpcyB1
bm5lY2Vzc2FyeSB0byBjbGlwIGl0IG91dC4gSG93ZXZlciwgZG9pbmcgc28gc2F2ZXMgdGltZQpA
QCAtMjMxMywxNCArMjMxMywxNCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
eFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAg
ICAgICAgIGlmIChoYXNPcGFxdWVCYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGUgZnVuY3Rpb24gdG8gZGVjaWRlIG9uIHRoZSBwb2xpY3kgYmFzZWQgb24gdGhl
IHRyYW5zZm9ybSBzaG91bGQgYmUgYSBuYW1lZCBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEl0J3Mgbm90IGNsZWFyIGlmIHRoaXMgY2hlY2sgaXMgcmlnaHQuIFdoYXQg
YWJvdXQgaW50ZWdyYWwgc2NhbGUgZmFjdG9ycz8KLSAgICAgICAgICAgICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgICAgICAgICAgICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybS5hKCkgIT0gMSB8fCAodHJhbnNmb3JtLmQoKSAh
PSAxICYmIHRyYW5zZm9ybS5kKCkgIT0gLTEpIHx8IHRyYW5zZm9ybS5iKCkgfHwgdHJhbnNmb3Jt
LmMoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RUb0NsaXBPdXQuaW5mbGF0ZShMYXlv
dXRVbml0Ojpmcm9tUGl4ZWwoLTEpLnRvRmxvYXQoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKCFyZWN0VG9DbGlwT3V0LmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+Y2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBD
b2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuY2xpcE91dChyZWN0VG9DbGlwT3V0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29u
dGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRGaWxsUmVjdC5yZWN0KCksIENvbG9yOjpibGFjaywg
c3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIC8vIEluc2V0IHNoYWRvdy4KQEAgLTIzMzAsOSArMjMzMCw5IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UmVjCiAKICAgICAgICAgICAgIGlmIChwaXhlbFNuYXBwZWRIb2xlUmVjdC5p
c0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKQotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVy
UmVjdCwgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QsIHNoYWRv
d0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5y
ZWN0KCksIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgpLCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KIApAQCAtMjM1NywyNSArMjM1NywyNSBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExh
eW91dFJlYwogICAgICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZE91dGVyUmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoYXJlYUNhc3RpbmdTaGFkb3dJbkhvbGUoTGF5b3V0UmVjdChw
aXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSksIHNoYWRvd1BhaW50aW5nRXh0ZW50LCBzaGFk
b3dTcHJlYWQsIHNoYWRvd09mZnNldCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgICAg
IEZsb2F0Um91bmRlZFJlY3QgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUgPSBGbG9hdFJvdW5kZWRS
ZWN0KHBpeGVsU25hcHBlZEhvbGVSZWN0LCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJhZGlpKCkp
OwogCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNv
bnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwogICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykgewogICAgICAgICAg
ICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHBp
eGVsU25hcHBlZEJvcmRlclJlY3QpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAocGF0
aCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBhdGgpOwogICAgICAgICAgICAgICAg
IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLnNocmlua1JhZGlpKHNoYWRvd1NwcmVhZCk7CiAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBl
ZEJvcmRlclJlY3QucmVjdCgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmNsaXAocGl4ZWxT
bmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpOwogCiAgICAgICAgICAgICBJbnRTaXplIGV4dHJhT2Zm
c2V0KDIgKiByb3VuZFRvSW50KHBhaW50UmVjdC53aWR0aCgpKSArIHN0ZDo6bWF4KDAsIHNoYWRv
d09mZnNldC53aWR0aCgpKSArIHNoYWRvd1BhaW50aW5nRXh0ZW50IC0gMiAqIHNoYWRvd1NwcmVh
ZCArIDEsIDApOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGV4dHJhT2Zmc2V0Lndp
ZHRoKCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNs
YXRlKGV4dHJhT2Zmc2V0LndpZHRoKCksIGV4dHJhT2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAg
ICAgIHNoYWRvd09mZnNldCAtPSBleHRyYU9mZnNldDsKIAogICAgICAgICAgICAgaWYgKHNoYWRv
dy0+aXNXZWJraXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRMZWdh
Y3lTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAotICAgICAgICAg
ICAgY29udGV4dC0+ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFwcGVkT3V0ZXJSZWN0
LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShwaXhlbFNuYXBw
ZWRPdXRlclJlY3QsIHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlLCBmaWxsQ29sb3IsIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNDg0LDExICsyNDg0LDExIEBA
IExheW91dFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlF
bGVtZW50KExheW91dFVuaXQgd2lkdGgsCiAgICAgcmV0dXJuIGN1cnJlbnRTdHlsZS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0UmVjdCh4LCB5LCBjYXJldFdpZHRoLCBoZWlnaHQp
IDogTGF5b3V0UmVjdCh5LCB4LCBoZWlnaHQsIGNhcmV0V2lkdGgpOwogfQogCi1ib29sIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5lcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpCitib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRBbnRpYWxpYXNMaW5lcyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgLy8gRklYTUU6IFdlIG1heSB3YW50IHRv
IG5vdCBhbnRpYWxpYXMgd2hlbiBzY2FsZWQgYnkgYW4gaW50ZWdyYWwgdmFsdWUsCiAgICAgLy8g
YW5kIHdlIG1heSB3YW50IHRvIGFudGlhbGlhcyB3aGVuIHRyYW5zbGF0ZWQgYnkgYSBub24taW50
ZWdyYWwgdmFsdWUuCi0gICAgcmV0dXJuICFjb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50aXR5T3JU
cmFuc2xhdGlvbk9yRmxpcHBlZCgpOworICAgIHJldHVybiAhY29udGV4dC5nZXRDVE0oKS5pc0lk
ZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUs
IFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggYzIyOGE0ODVlZTM1ZmM5
ODIzNzcxOGNlOWM3ZDM5NDAyMTRkMTE1OC4uNTg4MDVlMDhjMjgyMWU0ZmRiNmM4YzQ5OTI1YzE5
N2I5ZjYyMDIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlckVsZW1lbnQmKSB7IH0KIAogICAgIHZvaWQgcGFp
bnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRl
clN0eWxlJiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSA9IHRydWUpOwotICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5l
UGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7Cisg
ICAgYm9vbCBwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91
dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IE5pbmVQaWVjZUltYWdlJiwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hh
ZG93KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIFNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29s
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAgICAgdm9pZCBwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVy
KiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxv
d0JveCogPSBudWxscHRyLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUoKSwgQ29tcG9z
aXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3Jv
dW5kT2JqZWN0ID0gbnVsbHB0ciwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdlID0gQmFzZUJhY2tn
cm91bmRDb2xvclVzZSk7CiAKQEAgLTI1MSwxNiArMjUxLDE2IEBAIHByb3RlY3RlZDoKICAgICBS
b3VuZGVkUmVjdCBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRTaXplJiwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdDsK
ICAgICBMYXlvdXRSZWN0IGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2Uo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSkgY29uc3Q7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdy
YXBoaWNzQ29udGV4dCosIEltYWdlKiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsK
KyAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCYsIEltYWdl
KiwgY29uc3Qgdm9pZCosIGNvbnN0IExheW91dFNpemUmKTsKIAogICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250aW51YXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRpbnVhdGlvbihS
ZW5kZXJCb3hNb2RlbE9iamVjdCopOwogCiAgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEZv
ckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZz
ZXQpOwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250
ZXh0Jik7CiAKLSAgICBzdGF0aWMgdm9pZCBjbGlwUm91bmRlZElubmVyUmVjdChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBjbGlwUmVj
dCk7CisgICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpOwog
CiAgICAgYm9vbCBoYXNBdXRvSGVpZ2h0T3JDb250YWluaW5nQmxvY2tXaXRoQXV0b0hlaWdodCgp
IGNvbnN0OwogCkBAIC0zMDcsMTggKzMwNywxOCBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wg
Zml4ZWRCYWNrZ3JvdW5kUGFpbnRzSW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Q7CiAKLSAgICB2
b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2
b2lkIGNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSb3VuZGVk
UmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlLCBib29sIGZpcnN0RWRnZU1hdGNoZXMs
IGJvb2wgc2Vjb25kRWRnZU1hdGNoZXMpOwotICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21w
bGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3Qg
Um91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25zdCBCb3JkZXJFZGdlW10pOwotICAgIHZvaWQgcGFp
bnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3Jk
ZXIsCisgICAgdm9pZCBjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBjb25zdCBSb3VuZGVkUmVjdCYsIEJveFNpZGUs
IGNvbnN0IEJvcmRlckVkZ2VbXSk7CisgICAgdm9pZCBwYWludE9uZUJvcmRlclNpZGUoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAgICAgICAgY29uc3QgTGF5
b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUsIEJveFNpZGUgYWRqYWNlbnRTaWRlMSwgQm94U2lk
ZSBhZGphY2VudFNpZGUyLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGNvbnN0IFBhdGgq
LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9y
KiBvdmVycmlkZUNvbG9yID0gbnVsbHB0cik7Ci0gICAgdm9pZCBwYWludFRyYW5zbHVjZW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwgY29u
c3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKKyAgICB2b2lkIHBhaW50VHJhbnNs
dWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9y
ZGVyLCBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LAogICAgICAgICBjb25z
dCBCb3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNl
LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRCb3JkZXJTaWRlcyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJvdW5kZWRSZWN0JiBv
dXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAorICAgIHZvaWQgcGFp
bnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0
IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVy
LAogICAgICAgICBjb25zdCBJbnRQb2ludCYgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBjb25zdCBC
b3JkZXJFZGdlW10sIEJvcmRlckVkZ2VGbGFncywgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLAog
ICAgICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNv
bG9yID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkcmF3Qm94U2lkZUZyb21QYXRoKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBQYXRoJiwgY29uc3QgQm9yZGVyRWRnZVtd
LAorICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKICAgICAgICAgZmxv
YXQgdGhpY2tuZXNzLCBmbG9hdCBkcmF3VGhpY2tuZXNzLCBCb3hTaWRlLCBjb25zdCBSZW5kZXJT
dHlsZSYsCiAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKICAgICB2b2lkIHBhaW50TWFza0ZvclRleHRGaWxsQm94KEltYWdlQnVmZmVyKiwg
Y29uc3QgSW50UmVjdCYsIElubGluZUZsb3dCb3gqLCBjb25zdCBMYXlvdXRSZWN0Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKaW5kZXgg
NWVlZjc2MjUyOTQwNTljYmIwOTdlMTBmZjlkOTRkOGQ1ODdlYmI3MC4uYjUzZjJhZjRmZWU1ZGJm
MWYzOTA4ZDg0MjNiNDNlYTk1NDE1MjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcApAQCAtMTMwLDEzICsxMzAsMTMgQEAgdm9pZCBS
ZW5kZXJEZXRhaWxzTWFya2VyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgQ29sb3IgY29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9r
ZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAg
ICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5
bGUoU29saWRTdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tu
ZXNzKDEuMGYpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGNvbG9yLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAKICAgICBib3hPcmlnaW4ubW92ZShib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7Ci0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmZpbGxQYXRoKGdldFBhdGgoYm94T3JpZ2luKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOwogfQogCiBib29sIFJlbmRl
ckRldGFpbHNNYXJrZXI6OmlzT3BlbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKaW5kZXggMjU4MjA0ZTBiMGIwYmEwNWU1NGNkY2U0Nzc0MzYyODM1
ODZjZTYyOS4uMGUxNzZhZDExNTFmY2JmM2E4Y2I1OGYwNzliNjYzYzM0YmI0YjQ2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjA0MSwxNyArMjA0
MSwxNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIGFkZEZvY3VzUmluZ1JlY3RzKGZv
Y3VzUmluZ1JlY3RzLCBwYWludE9mZnNldCwgcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKTsKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBuZWVkc1JlcGFpbnQ7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRoZW1lKCkucGxhdGZvcm1Gb2N1
c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50KCkucGFnZSgpLT5m
b2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLCBuZWVkc1JlcGFpbnQpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0cywgdGhl
bWUoKS5wbGF0Zm9ybUZvY3VzUmluZ1dpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgZG9j
dW1lbnQoKS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnRpbWVTaW5jZUZvY3VzV2FzU2V0KCks
IG5lZWRzUmVwYWludCk7CiAgICAgaWYgKG5lZWRzUmVwYWludCkKICAgICAgICAgZG9jdW1lbnQo
KS5wYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50TmVlZHNSZXBhaW50
KCk7CiAjZWxzZQotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmlu
Z1JlY3RzLCBzdHlsZS5vdXRsaW5lV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHN0eWxlLm91
dGxpbmVXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIHN0eWxlLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwogI2VuZGlmCiB9CiAKIHZvaWQgUmVu
ZGVyRWxlbWVudDo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRSZWN0JiBwYWludFJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGlmIChncmFwaGljc0NvbnRleHQucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDMxNWRjMTQ1ZGRmYjg1
MDE0NWNhMjBiZDlmMGExNTBhMWI2NTdlZTQuLjJiMWYxNjU1ZDk5NjQ2YTBmZDA1MDFlZWM1Zjgy
ODNiNzI2MmQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVt
YmVkZGVkT2JqZWN0LmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0CiAgICAgaWYgKCFjV2lkdGggfHwgIWNIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0U2l6
ZSBjb250ZW50U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRM
b2NhdGlvbiA9IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKICAgICBjb250ZW50TG9jYXRpb24u
bW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSk7CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICNpZiBF
TkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0aW9uRGVzY3JpcHRpb24u
c2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogI2Vu
ZGlmCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwg
YWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24s
IHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKIH0KIAogdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpAQCAtMjYyLDkgKzI2Miw5IEBAIHZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPCiAgICAgUmVuZGVyV2lkZ2V0OjpwYWludChwYWludEluZm8sIHBh
aW50T2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2lkZVJlY3QpCitzdGF0aWMg
dm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgaW5zaWRlUmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKIAogICAgIEZsb2F0UmVjdCByZWN0KGluc2lkZVJlY3QpOwogICAg
IHJlY3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJvd1BhZGRpbmcpOwpAQCAtMjcyLDkgKzI3Miw5
IEBAIHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAgICAgRmxvYXRQb2ludCBjZW50ZXIocmVjdC5j
ZW50ZXIoKSk7CiAgICAgRmxvYXRQb2ludCBhcnJvd1RpcChyZWN0Lm1heFgoKSwgY2VudGVyLnko
KSk7CiAKLSAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMik7Ci0gICAgY29udGV4dC0+
c2V0TGluZUNhcChSb3VuZENhcCk7Ci0gICAgY29udGV4dC0+c2V0TGluZUpvaW4oUm91bmRKb2lu
KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250ZXh0LnNldExp
bmVDYXAoUm91bmRDYXApOworICAgIGNvbnRleHQuc2V0TGluZUpvaW4oUm91bmRKb2luKTsKIAog
ICAgIFBhdGggcGF0aDsKICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHJlY3QueCgpLCBjZW50
ZXIueSgpKSk7CkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHZvaWQgZHJhd1JlcGxhY2VtZW50
QXJyb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGluc2kKICAg
ICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNlbnRlci54KCksIHJlY3QueSgpKSk7CiAgICAg
cGF0aC5tb3ZlVG8oYXJyb3dUaXApOwogICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoY2Vu
dGVyLngoKSwgcmVjdC5tYXhZKCkpKTsKLSAgICBjb250ZXh0LT5zdHJva2VQYXRoKHBhdGgpOwor
ICAgIGNvbnRleHQuc3Ryb2tlUGF0aChwYXRoKTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQpAQCAtMjkzLDggKzI5Myw4IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50CiAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dDsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3Qg
Y29udGVudFJlY3Q7CkBAIC0zMTAsMzYgKzMxMCwzNiBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dAogICAgIFBhdGggYmFja2dyb3VuZDsKICAgICBiYWNrZ3JvdW5kLmFkZFJvdW5kZWRSZWN0KGlu
ZGljYXRvclJlY3QsIEZsb2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cywg
cmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+Y2xpcChjb250
ZW50UmVjdCk7Ci0gICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVnaW5J
bmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xv
cigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgoYmFja2dyb3VuZCk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuY2xpcChj
b250ZW50UmVjdCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IobV91bmF2YWlsYWJsZVBsdWdp
bkluZGljYXRvcklzUHJlc3NlZCA/IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UHJlc3NlZENv
bG9yKCkgOiByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKGJhY2tncm91bmQpOwogCiAgICAgUGF0aCBz
dHJva2VQYXRoOwogICAgIEZsb2F0UmVjdCBzdHJva2VSZWN0KGluZGljYXRvclJlY3QpOwogICAg
IHN0cm9rZVJlY3QuaW5mbGF0ZSgxKTsKICAgICBzdHJva2VQYXRoLmFkZFJvdW5kZWRSZWN0KHN0
cm9rZVJlY3QsIEZsb2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEs
IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzICsgMSkpOwogCi0gICAgY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNv
bnRleHQtPnN0cm9rZVBhdGgoc3Ryb2tlUGF0aCk7CisgICAgY29udGV4dC5zZXRTdHJva2VDb2xv
cih1bmF2YWlsYWJsZVBsdWdpbkJvcmRlckNvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKKyAgICBjb250ZXh0LnN0cm9rZVBh
dGgoc3Ryb2tlUGF0aCk7CiAKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBm
b250LmZvbnRNZXRyaWNzKCk7CiAgICAgZmxvYXQgbGFiZWxYID0gcm91bmRmKHJlcGxhY2VtZW50
VGV4dFJlY3QubG9jYXRpb24oKS54KCkgKyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdExlZnRU
ZXh0TWFyZ2luKTsKICAgICBmbG9hdCBsYWJlbFkgPSByb3VuZGYocmVwbGFjZW1lbnRUZXh0UmVj
dC5sb2NhdGlvbigpLnkoKSArIChyZXBsYWNlbWVudFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAt
IGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgKyBmb250TWV0cmljcy5hc2NlbnQoKSArIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0VG9wVGV4dE1hcmdpbik7Ci0gICAgY29udGV4dC0+c2V0Rmls
bENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAg
ICBjb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgcnVuLCBGbG9hdFBvaW50KGxhYmVsWCwgbGFi
ZWxZKSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1
biwgRmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkpOwogCiAgICAgaWYgKHNob3VsZFVuYXZhaWxh
YmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKGRvY3VtZW50KCksIG1fcGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24pKSB7CiAgICAgICAgIGFycm93UmVjdC5pbmZsYXRlKC1yZXBsYWNlbWVudEFycm93
Q2lyY2xlUGFkZGluZyk7CiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxLjApOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29s
b3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICBjb250ZXh0LT5maWxsRWxsaXBz
ZShhcnJvd1JlY3QpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4w
KTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IocmVwbGFjZW1lbnRUZXh0Q29sb3IoKSwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxFbGxpcHNlKGFycm93
UmVjdCk7CiAKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZUNsZWFyKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRl
Q2xlYXIpOwogICAgICAgICBkcmF3UmVwbGFjZW1lbnRBcnJvdyhjb250ZXh0LCBhcnJvd1JlY3Qp
OwotICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAppbmRleCBkNWZmZjkyMDMyMzU0MTg0ODI1YjEy
MDQ4NjFkNmE2NDJlNjVkMDdlLi4wOTUyZmRhMzRiODgyODkxNGMzOWZhYzRiMjg5OTQzYmIyMDQ4
OTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKQEAg
LTE1OSw3ICsxNTksNyBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogICAgICAgICBwYWludFJl
Y3Quc2V0WChwYWludFJlY3QueCgpICsgeE9mZik7CiAgICAgfQogCi0gICAgaWYgKCFib3hTaGFk
b3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocGFpbnRSZWN0LmxvY2F0aW9uKCksIGRldGVy
bWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCkpKQorICAgIGlm
ICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlv
bigpLCBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQo
KSkpKQogICAgICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBhaW50UmVjdCwgc3R5bGUo
KSwgTm9ybWFsKTsKICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCkuYmFj
a2dyb3VuZExheWVycygpLCBwYWludFJlY3QpOwogICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5m
bywgcGFpbnRSZWN0LCBzdHlsZSgpLCBJbnNldCk7CkBAIC0xNjgsOCArMTY4LDggQEAgdm9pZCBS
ZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIENyZWF0ZSBh
IGNsaXBwaW5nIHJlZ2lvbiBhcm91bmQgdGhlIGxlZ2VuZCBhbmQgcGFpbnQgdGhlIGJvcmRlciBh
cyBub3JtYWwKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0OwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3Jh
cGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB3b3JrIHdp
dGggInJsIiBhbmQgImJ0IiBibG9jayBmbG93IGRpcmVjdGlvbnMuICBJbiB0aG9zZQogICAgIC8v
IGNhc2VzIHRoZSBsZWdlbmQgaXMgZW1iZWRkZWQgaW4gdGhlIHJpZ2h0IGFuZCBib3R0b20gYm9y
ZGVycyByZXNwZWN0aXZlbHkuCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNl
dDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQKICAgICAgICAgY2xpcFJlY3Quc2V0V2lkdGgoc3RkOjptYXg8TGF5b3V0VW5pdD4oc3R5
bGUoKS5ib3JkZXJMZWZ0V2lkdGgoKSwgbGVnZW5kLT53aWR0aCgpKSk7CiAgICAgICAgIGNsaXBS
ZWN0LnNldEhlaWdodChsZWdlbmQtPmhlaWdodCgpKTsKICAgICB9Ci0gICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwT3V0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3QsIGRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoY2xpcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOwogCiAgICAgcGFpbnRCb3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKaW5kZXggYzdhYzY3NDZhMjc1YTk4ZWM4NmQwOTk4ZTY3NmQ2YjVhZjUxYWNjYS4u
NjRlY2FjYjA2ZWNlZTkzMGYyNWM2NjZiMTQ5ZWQ4N2VlNTZkM2E2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0x
MjAsMTQgKzEyMCwxNCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVj
dChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgLy8gUHVzaCBhIGNsaXAuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAg
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcykgewogICAgICAgICBJ
bnRSZWN0IGNsaXBSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChMYXlvdXRSZWN0KHBhaW50T2Zmc2V0
LngoKSArIGJvcmRlckxlZnQoKSwgcGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0
KCksIGhlaWdodCgpIC0gYm9yZGVyQm90dG9tKCkgLSBib3JkZXJUb3AoKSArIGJ1dHRvblNoYWRv
d0hlaWdodCkpOwogICAgICAgICBpZiAoY2xpcFJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAo
Y2xpcFJlY3QpOwogICAgIH0KIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZUZvcmVncm91bmQpIHsKQEAgLTE2MywxMCArMTYzLDEwIEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2w6OnBhaW50T2JqZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2luCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHRZID0gYmFzZWxpbmVQb3NpdGlvbihB
bHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIERyYXcgdGhlIGZpbGVuYW1lCi0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgSW50UG9p
bnQocm91bmRUb0ludCh0ZXh0WCksIHJvdW5kVG9JbnQodGV4dFkpKSk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJvdW5k
VG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOwogICAgICAgICAKICAgICAgICAgaWYg
KGlucHV0RWxlbWVudCgpLmljb24oKSkgewogICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoZXJl
IHRoZSBpY29uIHNob3VsZCBiZSBwbGFjZWQKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIFJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbgogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIC8vIERyYXcg
dGhlIGZpbGUgaWNvbgotICAgICAgICAgICAgaW5wdXRFbGVtZW50KCkuaWNvbigpLT5wYWludCgq
cGFpbnRJbmZvLmNvbnRleHQsIEludFJlY3Qocm91bmRUb0ludChpY29uWCksIHJvdW5kVG9JbnQo
aWNvblkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKKyAgICAgICAgICAgIGlucHV0RWxlbWVu
dCgpLmljb24oKS0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgSW50UmVjdChyb3VuZFRvSW50
KGljb25YKSwgcm91bmRUb0ludChpY29uWSksIGljb25XaWR0aCwgaWNvbkhlaWdodCkpOwogI2Vu
ZGlmCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lU2V0LmNwcAppbmRleCAzMzMxNzc2YWM0M2M4NGI4ODQ4YjMyYzQyM2U3NGU5ZTcxZmRjNjA0
Li4yZjgyZGNiMTRiMzk0N2M4M2M2ODQ5OTc3NGU2ZDhkMjJmYTgwYTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKQEAgLTkwLDE1ICs5MCwxNSBAQCB2
b2lkIFJlbmRlckZyYW1lU2V0OjpwYWludENvbHVtbkJvcmRlcihjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gc29tZXRo
aW5nIGNsZXZlciB3aGVuIGJvcmRlcnMgZnJvbSBkaXN0aW5jdCBmcmFtZXNldHMgbWVldCBhdCBh
IGpvaW4uCiAgICAgCiAgICAgLy8gRmlsbCBmaXJzdC4KLSAgICBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpOwogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHN0eWxl
KCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1l
U2V0RWxlbWVudCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29s
b3JTcGFjZSk7CisgICAgY29udGV4dC5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVsZW1l
bnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3BhY2Up
OwogICAgIAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlmIHdlIGhhdmUg
ZW5vdWdoIHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAgICAgLy8gYml0
IG9mIHRoZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9yZGVyUmVjdC53
aWR0aCgpID49IDMpIHsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoSW50UmVjdChib3JkZXJS
ZWN0LmxvY2F0aW9uKCksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyU3RhcnRFZGdlQ29s
b3IoKSwgY29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50
UG9pbnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAxLCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwg
aGVpZ2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKDEs
IGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQoYm9yZGVyUmVjdC5tYXhYKCkgLSAx
LCBib3JkZXJSZWN0LnkoKSksIEludFNpemUoMSwgaGVpZ2h0KCkpKSwgYm9yZGVyRW5kRWRnZUNv
bG9yKCksIGNvbG9yU3BhY2UpOwogICAgIH0KIH0KIApAQCAtMTEwLDE1ICsxMTAsMTUgQEAgdm9p
ZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRSb3dCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QmIGIKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0aGlu
ZyBjbGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1lZXQgYXQgYSBq
b2luLgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgp
LmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNl
dEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9y
U3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50
KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNlKTsK
IAogICAgIC8vIE5vdyBzdHJva2UgdGhlIGVkZ2VzIGJ1dCBvbmx5IGlmIHdlIGhhdmUgZW5vdWdo
IHJvb20gdG8gcGFpbnQgYm90aCBlZGdlcyB3aXRoIGEgbGl0dGxlCiAgICAgLy8gYml0IG9mIHRo
ZSBmaWxsIGNvbG9yIHNob3dpbmcgdGhyb3VnaC4KICAgICBpZiAoYm9yZGVyUmVjdC5oZWlnaHQo
KSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5s
b2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSwg
Y29sb3JTcGFjZSk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoSW50UG9pbnQo
Ym9yZGVyUmVjdC54KCksIGJvcmRlclJlY3QubWF4WSgpIC0gMSksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJFbmRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QoSW50UmVjdChib3JkZXJSZWN0LmxvY2F0aW9uKCksIEludFNpemUod2lkdGgoKSwg
MSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4
dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1h
eFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNv
bG9yU3BhY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckhUTUxDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckhUTUxDYW52YXMuY3BwCmluZGV4IDVhNjUwYWFjOWRkYjQ5Nzc3YjYzZjNiZDg4MDNmMDZlNWVj
NmJjMTYuLmM2NzNkODBlYWQ5ODM2NDdhZmViOTMxZjQzZDc0ZDRkMGZlNWI3ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKQEAgLTY2LDcgKzY2
LDcgQEAgYm9vbCBSZW5kZXJIVE1MQ2FudmFzOjpyZXF1aXJlc0xheWVyKCkgY29uc3QKIAogdm9p
ZCBSZW5kZXJIVE1MQ2FudmFzOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIExheW91dFJlY3QgY29udGVudEJveFJlY3Qg
PSB0aGlzLT5jb250ZW50Qm94UmVjdCgpOwogICAgIGNvbnRlbnRCb3hSZWN0Lm1vdmVCeShwYWlu
dE9mZnNldCk7CkBAIC03NSw5ICs3NSw5IEBAIHZvaWQgUmVuZGVySFRNTENhbnZhczo6cGFpbnRS
ZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhCiAKICAg
ICAvLyBOb3QgYWxsb3dlZCB0byBvdmVyZmxvdyB0aGUgY29udGVudCBib3guCiAgICAgYm9vbCBj
bGlwID0gIWNvbnRlbnRCb3hSZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQs
IGNsaXApOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludElu
Zm8uY29udGV4dCgpLCBjbGlwKTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAoc25hcHBlZEludFJlY3QoY29udGVudEJveFJlY3QpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KSk7CiAK
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CiAgICAgICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAyOTg0ZDU3Y2FiN2YzMDdkOTlmOGZlMDAwNjI3MTcx
MDYyMTEwM2JkLi42OWFkMjE0OGZhNzlkZWFjNmEyOTJkMjc4YzEzNTZmYmZhODVkMjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTM3NSw3ICszNzUsNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgIExheW91dFVuaXQgbGVmdFBhZCA9IHBhZGRp
bmdMZWZ0KCk7CiAgICAgTGF5b3V0VW5pdCB0b3BQYWQgPSBwYWRkaW5nVG9wKCk7CiAKLSAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCiAgICAgUGFn
ZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpOwpAQCAtMzkxLDEwICszOTEsMTAgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBMYXlv
dXRVbml0KDEgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAgICAgICAgIC8vIERyYXcgYW4g
b3V0bGluZSByZWN0IHdoZXJlIHRoZSBpbWFnZSBzaG91bGQgYmUuCi0gICAgICAgICAgICBjb250
ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihDb2xvcjo6bGlnaHRHcmF5LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3UmVjdChzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJvcmRlciAr
IGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dpZHRoLCBj
SGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CisgICAgICAgICAgICBj
b250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgICAgIGNvbnRleHQu
c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkgKyBsZWZ0Qm9yZGVyICsg
bGVmdFBhZCwgcGFpbnRPZmZzZXQueSgpICsgdG9wQm9yZGVyICsgdG9wUGFkLCBjV2lkdGgsIGNI
ZWlnaHQpLCBkZXZpY2VTY2FsZUZhY3RvciksIGJvcmRlcldpZHRoKTsKIAogICAgICAgICAgICAg
Ym9vbCBlcnJvclBpY3R1cmVEcmF3biA9IGZhbHNlOwogICAgICAgICAgICAgTGF5b3V0U2l6ZSBp
bWFnZU9mZnNldDsKQEAgLTQyNCwxMyArNDI0LDEzIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
CiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICAgICAgICAgICAgICBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VP
cmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZp
Y2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgc25h
cFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQs
IGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbik7
CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoIW1fYWx0VGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
ICAgICBTdHJpbmcgdGV4dCA9IGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZyhtX2FsdFRleHQpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihz
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCk7CiAgICAgICAgICAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzID0gZm9udC5mb250TWV0cmljcygpOwogICAgICAgICAgICAgICAgIExheW91dFVu
aXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7CkBAIC00NDMsOSArNDQzLDkgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHRleHRXaWR0
aCA9IGZvbnQud2lkdGgodGV4dFJ1bik7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yUGljdHVy
ZURyYXduKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh1c2FibGVXaWR0aCA+PSB0ZXh0V2lk
dGggJiYgZm9udE1ldHJpY3MuaGVpZ2h0KCkgPD0gaW1hZ2VPZmZzZXQuaGVpZ2h0KCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCBhbHRU
ZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1
c2FibGVXaWR0aCA+PSB0ZXh0V2lkdGggJiYgdXNhYmxlSGVpZ2h0ID49IGZvbnRNZXRyaWNzLmhl
aWdodCgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0
UnVuLCBhbHRUZXh0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4
dChmb250LCB0ZXh0UnVuLCBhbHRUZXh0T2Zmc2V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0gZWxzZSBpZiAoaW1hZ2VSZXNvdXJjZSgpLmhhc0ltYWdlKCkgJiYgY1dpZHRoID4g
MCAmJiBjSGVpZ2h0ID4gMCkgewpAQCAtNDYxLDkgKzQ2MSw5IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mCiAgICAgICAgIExheW91dFJlY3QgcmVwbGFjZWRDb250ZW50UmVjdCA9IHRoaXMtPnJl
cGxhY2VkQ29udGVudFJlY3QoaW50cmluc2ljU2l6ZSgpKTsKICAgICAgICAgcmVwbGFjZWRDb250
ZW50UmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgICAgICBib29sIGNsaXAgPSAhY29udGVu
dEJveFJlY3QuY29udGFpbnMocmVwbGFjZWRDb250ZW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgY2xpcCk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlwKTsKICAgICAg
ICAgaWYgKGNsaXApCi0gICAgICAgICAgICBjb250ZXh0LT5jbGlwKGNvbnRlbnRCb3hSZWN0KTsK
KyAgICAgICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50Qm94UmVjdCk7CiAKICAgICAgICAgcGFp
bnRJbnRvUmVjdChjb250ZXh0LCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlcGxhY2VkQ29udGVu
dFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIApAQCAtNDk1LDcgKzQ5NSw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBw
YWludEluZm8pCiAgICAgaWYgKGRvY3VtZW50KCkucHJpbnRpbmcoKSB8fCAhZnJhbWUoKS5zZWxl
Y3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8u
Y29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRl
eHQoKS5wYWludGluZ0Rpc2FibGVkKCkgJiYgIXBhaW50SW5mby5jb250ZXh0KCkudXBkYXRpbmdD
b250cm9sVGludHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVs
ZW1lbnQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CkBAIC01MjAsNyArNTIwLDcgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRBcmVhRWxlbWVudEZvY3VzUmluZyhQYWludEluZm8mIHBh
aW50SW5mbykKICAgICBpZiAoIW91dGxpbmVXaWR0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdpZHRoLAorICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ZvY3VzUmluZyhwYXRoLCBvdXRsaW5lV2lkdGgsCiAg
ICAgICAgIGFyZWFFbGVtZW50U3R5bGUtPm91dGxpbmVPZmZzZXQoKSwKICAgICAgICAgYXJlYUVs
ZW1lbnRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9y
KSk7CiAjZW5kaWYKQEAgLTUzNiw3ICs1MzYsNyBAQCB2b2lkIFJlbmRlckltYWdlOjphcmVhRWxl
bWVudEZvY3VzQ2hhbmdlZChIVE1MQXJlYUVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmVwYWludCgp
OwogfQogCi12b2lkIFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJ
bnRvUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKICAgICBpZiAoIWltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpIHx8IGltYWdlUmVzb3VyY2Uo
KS5lcnJvck9jY3VycmVkKCkgfHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8
PSAwKQogICAgICAgICByZXR1cm47CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBSZW5kZXJJbWFn
ZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKICNpZiBFTkFCTEUoQ1NTX0lNQUdFX09SSUVOVEFUSU9OKQogICAgIG9yaWVudGF0
aW9uRGVzY3JpcHRpb24uc2V0SW1hZ2VPcmllbnRhdGlvbkVudW0oc3R5bGUoKS5pbWFnZU9yaWVu
dGF0aW9uKCkpOwogI2VuZGlmCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlUmVzb3VyY2Uo
KS5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLmdldCgpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSwgcmVjdCwKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZVJlc291cmNlKCkuaW1h
Z2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCksIHJlY3QsCiAgICAgICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGVOb3JtYWwsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlT
Y2FsaW5nKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXgg
OTBmM2UyNmJlNDgxMjA5YmNmZjZmODg3NWMxNGVmZDg3M2I2NjNkNC4uNjdkZWQxNzZkNmEzMTdi
NmRiYzRmNjFiY2Y1ODFjNDNiNjFkZTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lk
IGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNw
cAppbmRleCA0OWQ0NTIwNWMwYTljOGIxZDYxNDUwMjU2MmU1NWJmMGE4MzQ2M2M1Li5mZTg4ZTc2
YzhlMTE5YmMyMDBkNWRlODNjZDFlYzVhMGYzZThiYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMTU2MCw4ICsxNTYwLDggQEAgdm9pZCBSZW5kZXJJ
bmxpbmU6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2YKICAgICBpZiAoaGFzT3V0bGluZUFubm90YXRpb24oKSAmJiAhc3R5bGVUb1Vz
ZS5vdXRsaW5lU3R5bGVJc0F1dG8oKSAmJiAhdGhlbWUoKS5zdXBwb3J0c0ZvY3VzUmluZyhzdHls
ZVRvVXNlKSkKICAgICAgICAgYWRkUERGVVJMUmVjdChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdy
YXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAg
ICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHN0eWxlVG9Vc2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgfHwgc3R5bGVUb1Vz
ZS5vdXRsaW5lU3R5bGUoKSA9PSBCTk9ORSkKQEAgLTE1ODEsNyArMTU4MSw3IEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgQ29sb3Igb3V0bGluZUNvbG9yID0gc3R5bGVUb1VzZS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpOwogICAgIGJvb2wgdXNl
VHJhbnNwYXJlbmN5TGF5ZXIgPSBvdXRsaW5lQ29sb3IuaGFzQWxwaGEoKTsKICAgICBpZiAodXNl
VHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5z
cGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0PihvdXRsaW5lQ29sb3IuYWxwaGEoKSkgLyAy
NTUpOworICAgICAgICBncmFwaGljc0NvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdGF0
aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsKICAgICAgICAgb3V0
bGluZUNvbG9yID0gQ29sb3Iob3V0bGluZUNvbG9yLnJlZCgpLCBvdXRsaW5lQ29sb3IuZ3JlZW4o
KSwgb3V0bGluZUNvbG9yLmJsdWUoKSk7CiAgICAgfQogCkBAIC0xNTg5LDEwICsxNTg5LDEwIEBA
IHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHBhaW50T3V0bGluZUZvckxpbmUoZ3Jh
cGhpY3NDb250ZXh0LCBwYWludE9mZnNldCwgcmVjdHMuYXQoaSAtIDEpLCByZWN0cy5hdChpKSwg
cmVjdHMuYXQoaSArIDEpLCBvdXRsaW5lQ29sb3IpOwogCiAgICAgaWYgKHVzZVRyYW5zcGFyZW5j
eUxheWVyKQotICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi12
b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LAordm9pZCBSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGxhc3RsaW5lLCBjb25zdCBM
YXlvdXRSZWN0JiB0aGlzbGluZSwgY29uc3QgTGF5b3V0UmVjdCYgbmV4dGxpbmUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2xvciBvdXRsaW5lQ29sb3Ip
CiB7CkBAIC0xNjE0LDcgKzE2MTQsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5l
Rm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgIElu
dFJlY3QgcGl4ZWxTbmFwcGVkTmV4dExpbmUgPSBzbmFwcGVkSW50UmVjdChwYWludE9mZnNldC54
KCkgKyBuZXh0bGluZS54KCksIDAsIG5leHRsaW5lLndpZHRoKCksIDApOwogICAgIAogICAgIC8v
IGxlZnQgZWRnZQotICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgIEZsb2F0UmVjdChG
bG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgsCiAgICAgICAgIHBp
eGVsU25hcHBlZEJveC55KCkgLSAobGFzdGxpbmUuaXNFbXB0eSgpIHx8IHRoaXNsaW5lLngoKSA8
IGxhc3RsaW5lLngoKSB8fCAobGFzdGxpbmUubWF4WCgpIC0gMSkgPD0gdGhpc2xpbmUueCgpID8g
b3V0bGluZVdpZHRoIDogMCkpLAogICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC54
KCksCkBAIC0xNjI2LDcgKzE2MjYsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5l
Rm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAg
ICBhbnRpYWxpYXMpOwogICAgIAogICAgIC8vIHJpZ2h0IGVkZ2UKLSAgICBkcmF3TGluZUZvckJv
eFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3ND
b250ZXh0LAogICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4
WCgpLAogICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8
fCBsYXN0bGluZS5tYXhYKCkgPCB0aGlzbGluZS5tYXhYKCkgfHwgKHRoaXNsaW5lLm1heFgoKSAt
IDEpIDw9IGxhc3RsaW5lLngoKSA/IG91dGxpbmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQ
b2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApAQCAtMTYzOCw3ICsx
NjM4LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgYW50aWFsaWFzKTsKICAg
ICAvLyB1cHBlciBlZGdlCiAgICAgaWYgKHRoaXNsaW5lLngoKSA8IGxhc3RsaW5lLngoKSkKLSAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxv
YXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICAgICAg
cGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCksCiAgICAgICAgICAgICBGbG9hdFBv
aW50KHN0ZDo6bWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsIChsYXN0
bGluZS5pc0VtcHR5KCkgPyAxMDAwMDAwIDogcGl4ZWxTbmFwcGVkTGFzdExpbmUueCgpKSksCkBA
IC0xNjQ5LDcgKzE2NDksNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGlu
ZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAg
YW50aWFsaWFzKTsKICAgICAKICAgICBpZiAobGFzdGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4
WCgpKQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICAg
ICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIEZsb2F0
UmVjdChGbG9hdFBvaW50KHN0ZDo6bWF4KGxhc3RsaW5lLmlzRW1wdHkoKSA/IC0xMDAwMDAwIDog
cGl4ZWxTbmFwcGVkTGFzdExpbmUubWF4WCgpLCBwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGlu
ZVdpZHRoKSwKICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgp
LAogICAgICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGlu
ZVdpZHRoLApAQCAtMTY1OSw3ICsxNjU5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0
bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAg
ICAgICAgICAgIG91dGxpbmVXaWR0aCwgYW50aWFsaWFzKTsKIAogICAgIGlmICh0aGlzbGluZS54
KCkgPT0gdGhpc2xpbmUubWF4WCgpKQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBo
aWNzQ29udGV4dCwKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwK
ICAgICAgICAgICAgIEZsb2F0UmVjdChGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC54KCkgLSBv
dXRsaW5lV2lkdGgsCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gb3V0bGluZVdp
ZHRoKSwKICAgICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91
dGxpbmVXaWR0aCwKQEAgLTE2NzEsNyArMTY3MSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWlu
dE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBM
CiAKICAgICAvLyBsb3dlciBlZGdlCiAgICAgaWYgKHRoaXNsaW5lLngoKSA8IG5leHRsaW5lLngo
KSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJl
Y3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9hdFBvaW50KHN0
ZDo6bWluKHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsICFuZXh0bGluZS5p
c0VtcHR5KCkgPyBwaXhlbFNuYXBwZWROZXh0TGluZS54KCkgKyAxIDogMTAwMDAwMCksCkBAIC0x
NjgyLDcgKzE2ODIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgYW50
aWFsaWFzKTsKICAgICAKICAgICBpZiAobmV4dGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgp
KQotICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgICAgIEZsb2F0UmVj
dChGbG9hdFBvaW50KHN0ZDo6bWF4KCFuZXh0bGluZS5pc0VtcHR5KCkgPyBwaXhlbFNuYXBwZWRO
ZXh0TGluZS5tYXhYKCkgOiAtMTAwMDAwMCwgcGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVX
aWR0aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gubWF4WSgpKSwKICAgICAgICAgICAg
IEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2
OTIsNyArMTY5Miw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAgICAgICBvdXRs
aW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUueCgpID09IHRoaXNsaW5l
Lm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisg
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBG
bG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAog
ICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9hdFBv
aW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggOTJiY2ViNWI2ZWU0NzIxOWQ3NDlhNTYxOGNi
YTgxNDczMGIyNWRlNS4uNDUwYmIwZjk5NTY4NmYxZWVmZjEzZGU1YzZlMWQ0NzdkMGE0ODk3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTczLDcgKzE3Myw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmVuZGVyUHRyPFJlbmRlcklubGluZT4gY2xvbmUoKSBj
b25zdDsKIAotICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIHByZXZMaW5lLCBjb25zdCBMYXlv
dXRSZWN0JiB0aGlzTGluZSwKKyAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwg
Y29uc3QgTGF5b3V0UmVjdCYgdGhpc0xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExheW91dFJlY3QmIG5leHRMaW5lLCBjb25zdCBDb2xvcik7CiAgICAgUmVuZGVyQm94
TW9kZWxPYmplY3QqIGNvbnRpbnVhdGlvbkJlZm9yZShSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxk
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggN2RlZGU3
MWNjNGQ0MzQxNGU4M2E5ZjhhNzE3NTk2MjlhYjdkYWQ3My4uNzQzMDlmZGMyODFmZjgyYTYxYzk1
NTIxZTc3MDY4MjJjODVmNGNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0xNzg3LDkgKzE3ODcsOSBAQCBzdGF0aWMgTGF5b3V0UmVjdCBwYWludGluZ0V4
dGVudChjb25zdCBSZW5kZXJMYXllciYgY3VycmVudExheWVyLCBjb25zdCBSZW5kZXJMYQogICAg
IHJldHVybiBpbnRlcnNlY3Rpb24odHJhbnNwYXJlbmN5Q2xpcEJveChjdXJyZW50TGF5ZXIsIHJv
b3RMYXllciwgUGFpbnRpbmdUcmFuc3BhcmVuY3lDbGlwQm94LCBSb290T2ZUcmFuc3BhcmVuY3lD
bGlwQm94LCBwYWludEJlaGF2aW9yKSwgcGFpbnREaXJ0eVJlY3QpOwogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIGNvbnN0IExheW91dFJlY3Qm
IGRpcnR5UmVjdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5n
SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkgfHwgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZv
LnBhaW50QmVoYXZpb3IpICYmIG1fdXNlZFRyYW5zcGFyZW5jeSkpCisgICAgaWYgKGNvbnRleHQu
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQogICAgICAgICByZXR1cm47
CiAKICAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSB0cmFuc3BhcmVudFBhaW50aW5nQW5jZXN0
b3IoKTsKQEAgLTE3OTgsMjIgKzE3OTgsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6YmVnaW5UcmFu
c3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclAKICAg
ICAKICAgICBpZiAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFpbnRCZWhh
dmlvcikpIHsKICAgICAgICAgbV91c2VkVHJhbnNwYXJlbmN5ID0gdHJ1ZTsKLSAgICAgICAgY29u
dGV4dC0+c2F2ZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKICAgICAgICAgTGF5b3V0UmVj
dCBhZGp1c3RlZENsaXBSZWN0ID0gcGFpbnRpbmdFeHRlbnQoKnRoaXMsIHBhaW50aW5nSW5mby5y
b290TGF5ZXIsIGRpcnR5UmVjdCwgcGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IpOwogICAgICAg
ICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9u
KTsKICAgICAgICAgRmxvYXRSZWN0IHBpeGVsU25hcHBlZENsaXBSZWN0ID0gc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkQ2xpcFJl
Y3QpOworICAgICAgICBjb250ZXh0LmNsaXAocGl4ZWxTbmFwcGVkQ2xpcFJlY3QpOwogCiAjaWYg
RU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSgpKQotICAg
ICAgICAgICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQtPmNvbXBvc2l0
ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUoKSk7CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBv
c2l0ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBibGVuZE1vZGUoKSk7
CiAjZW5kaWYKIAotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHJlbmRl
cmVyKCkub3BhY2l0eSgpKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KHJlbmRlcmVyKCkub3BhY2l0eSgpKTsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAg
ICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNldENvbXBv
c2l0ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9y
bWFsKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQu
Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7CiAjZW5kaWYKIAogI2lmZGVm
IFJFVkVBTF9UUkFOU1BBUkVOQ1lfTEFZRVJTCkBAIC0zNTQxLDcgKzM1NDEsNyBAQCBib29sIFJl
bmRlckxheWVyOjpzaG93c092ZXJmbG93Q29udHJvbHMoKSBjb25zdAogICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMpCit2b2lkIFJlbmRl
ckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIGJv
b2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMpCiB7CiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcg
aWYgd2UgaGF2ZSBubyBvdmVyZmxvdy4KICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dD
bGlwKCkpCkBAIC0zNjA1LDcgKzM2MDUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJm
bG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludAogICAg
IHBhaW50UmVzaXplcihjb250ZXh0LCBhZGp1c3RlZFBhaW50T2Zmc2V0LCBkYW1hZ2VSZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCkKIHsKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAg
IEFTU0VSVChib3gpOwpAQCAtMzYxNSw3ICszNjE1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYg
cGEKICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhkYW1hZ2VSZWN0KSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKKyAgICBp
ZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIHVwZGF0ZVNjcm9s
bENvcm5lclN0eWxlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNjI4LDEwICszNjI4
LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBw
YWludCB3aGl0ZSBpZiB3ZSBoYXZlIG92ZXJsYXkgc2Nyb2xsYmFycywgc2luY2Ugd2UgbmVlZAog
ICAgIC8vIHRvIHNlZSB3aGF0IGlzIGJlaGluZCBpdC4KICAgICBpZiAoIWhhc092ZXJsYXlTY3Jv
bGxiYXJzKCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGFic1JlY3QsIENvbG9yOjp3aGl0
ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qo
YWJzUmVjdCwgQ29sb3I6OndoaXRlLCBib3gtPnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIH0KIAot
dm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCit2b2lkIFJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCkKIHsKICAgICBSZWZQdHI8
SW1hZ2U+IHJlc2l6ZUNvcm5lckltYWdlOwogICAgIEZsb2F0U2l6ZSBjb3JuZXJSZXNpemVyU2l6
ZTsKQEAgLTM2NDcsMTggKzM2NDcsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3Jt
UmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3UKICAgICB9
CiAKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnNob3VsZFBsYWNlQmxvY2tEaXJlY3Rpb25T
Y3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAg
ICAgICBjb250ZXh0LT50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVz
aXplclNpemUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJl
Y3QuaGVpZ2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIGNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSgtMS4wLCAxLjApKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFj
ZSgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOwotICAgICAg
ICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZShyZXNpemVyQ29ybmVyUmVjdC54KCkgKyBjb3JuZXJSZXNpemVyU2l6
ZS53aWR0aCgpLCByZXNpemVyQ29ybmVyUmVjdC55KCkgKyByZXNpemVyQ29ybmVyUmVjdC5oZWln
aHQoKSAtIGNvcm5lclJlc2l6ZXJTaXplLmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKHJlc2l6
ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBjb3JuZXJSZXNpemVyU2l6ZSkpOworICAgICAgICBjb250ZXh0
LnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBGbG9hdFJlY3QgaW1hZ2VS
ZWN0ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHJlc2l6ZXJDb3JuZXJSZWN0
Lm1heFhNYXhZQ29ybmVyKCkgLSBjb3JuZXJSZXNpemVyU2l6ZSwgY29ybmVyUmVzaXplclNpemUp
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7Ci0gICAgY29udGV4
dC0+ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCku
Y29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHJlc2l6ZUNv
cm5lckltYWdlLmdldCgpLCByZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBpbWFnZVJl
Y3QpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGRhbWFnZVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExh
eW91dFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5yZXNp
emUoKSA9PSBSRVNJWkVfTk9ORSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY3MSw3ICszNjcxLDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0cyhk
YW1hZ2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPnVwZGF0aW5n
Q29udHJvbFRpbnRzKCkpIHsKKyAgICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygp
KSB7CiAgICAgICAgIHVwZGF0ZVJlc2l6ZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMzY4NiwxNCArMzY4NiwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIC8v
IERyYXcgYSBmcmFtZSBhcm91bmQgdGhlIHJlc2l6ZXIgKDFweCBncmV5IGxpbmUpIGlmIHRoZXJl
IGFyZSBhbnkgc2Nyb2xsYmFycyBwcmVzZW50LgogICAgIC8vIENsaXBwaW5nIHdpbGwgZXhjbHVk
ZSB0aGUgcmlnaHQgYW5kIGJvdHRvbSBlZGdlcyBvZiB0aGlzIGZyYW1lLgogICAgIGlmICghaGFz
T3ZlcmxheVNjcm9sbGJhcnMoKSAmJiAobV92QmFyIHx8IG1faEJhcikpIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29u
dGV4dC0+Y2xpcChhYnNSZWN0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LmNsaXAoYWJzUmVjdCk7CiAgICAg
ICAgIExheW91dFJlY3QgbGFyZ2VyQ29ybmVyID0gYWJzUmVjdDsKICAgICAgICAgbGFyZ2VyQ29y
bmVyLnNldFNpemUoTGF5b3V0U2l6ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIExheW91dFVuaXQ6
OmZyb21QaXhlbCgxKSwgbGFyZ2VyQ29ybmVyLmhlaWdodCgpICsgTGF5b3V0VW5pdDo6ZnJvbVBp
eGVsKDEpKSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0Io
MjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgY29udGV4
dC0+ZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2VyQ29ybmVyKSk7CisgICAgICAgIGNvbnRl
eHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsK
KyAgICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwcGVkSW50UmVjdChs
YXJnZXJDb3JuZXIpKTsKICAgICB9CiB9CiAKQEAgLTM3NjEsNyArMzc2MSw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxh
cml0eSBncmFudWxhcml0CiAgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGwoZGlyZWN0
aW9uLCBncmFudWxhcml0eSwgbXVsdGlwbGllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVj
dCwgY29uc3QgTGF5b3V0U2l6ZSYgc3VicGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQYWludExheWVy
RmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgY29uc3QgTGF5b3V0U2l6
ZSYgc3VicGl4ZWxBY2N1bXVsYXRpb24sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykK
IHsKICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAgb3ZlcmxhcFRlc3RSZXF1ZXN0czsKIApAQCAt
Mzc3Miw3ICszNzcyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LAogICAgICAgICB3aWRnZXQt
PnNldE92ZXJsYXBUZXN0UmVzdWx0KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91
dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2Jq
ZWN0KiBzdWJ0cmVlUGFpbnRSb290KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVybGF5U2Ny
b2xsYmFycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFn
ZVJlY3QsIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVl
UGFpbnRSb290KQogewogICAgIGlmICghbV9jb250YWluc0RpcnR5T3ZlcmxheVNjcm9sbGJhcnMp
CiAgICAgICAgIHJldHVybjsKQEAgLTM3OTcsMTggKzM3OTcsMTggQEAgc3RhdGljIGJvb2wgaW5D
b250YWluaW5nQmxvY2tDaGFpbihSZW5kZXJMYXllciogc3RhcnRMYXllciwgUmVuZGVyTGF5ZXIq
IGVuZExheWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBU
b1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBw
aW5nUnVsZSBydWxlKQordm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IENsaXBSZWN0JiBjbGlwUmVjdCwgQm9yZGVyUmFkaXVzQ2xpcHBpbmdSdWxlIHJ1bGUpCiB7CiAg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKTsKIAogICAgIGJvb2wgbmVlZHNDbGlwcGluZyA9IGNsaXBSZWN0LnJlY3Qo
KSAhPSBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3Q7CiAgICAgaWYgKG5lZWRzQ2xpcHBpbmcg
fHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250ZXh0LT5zYXZlKCk7
CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgaWYgKG5lZWRzQ2xpcHBpbmcpIHsKICAg
ICAgICAgTGF5b3V0UmVjdCBhZGp1c3RlZENsaXBSZWN0ID0gY2xpcFJlY3QucmVjdCgpOwogICAg
ICAgICBhZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0
aW9uKTsKLSAgICAgICAgY29udGV4dC0+Y2xpcChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVz
dGVkQ2xpcFJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkQ2xpcFJlY3QsIGRldmljZVNjYWxlRmFjdG9y
KSk7CiAgICAgfQogCiAgICAgaWYgKGNsaXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkgewpAQCAt
MzgxOSw3ICszODE5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdChjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBHcmFwaGljc0NvbnQKICAgICAgICAgICAgIGlm
IChsYXllci0+cmVuZGVyZXIoKS5oYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllci0+cmVuZGVyZXIo
KS5zdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpICYmIGluQ29udGFpbmluZ0Jsb2NrQ2hhaW4odGhp
cywgbGF5ZXIpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBhZGp1c3RlZENsaXBSZWN0
ID0gTGF5b3V0UmVjdCh0b0xheW91dFBvaW50KGxheWVyLT5vZmZzZXRGcm9tQW5jZXN0b3IocGFp
bnRpbmdJbmZvLnJvb3RMYXllcikpLCBsYXllci0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICBh
ZGp1c3RlZENsaXBSZWN0Lm1vdmUocGFpbnRpbmdJbmZvLnN1YnBpeGVsQWNjdW11bGF0aW9uKTsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QobGF5ZXItPnJlbmRlcmVy
KCkuc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoYWRqdXN0ZWRDbGlwUmVjdCkucGl4
ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQuY2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3QpLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxheWVyID09IHBhaW50aW5nSW5m
by5yb290TGF5ZXIpCkBAIC0zODI4LDEwICszODI4LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNs
aXBUb1JlY3QoY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3ND
b250CiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpyZXN0b3JlQ2xpcChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBjb25zdCBD
bGlwUmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpyZXN0b3JlQ2xpcChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlSZWN0LCBjb25z
dCBDbGlwUmVjdCYgY2xpcFJlY3QpCiB7CiAgICAgaWYgKGNsaXBSZWN0LnJlY3QoKSAhPSBwYWlu
dERpcnR5UmVjdCB8fCBjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpCi0gICAgICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKKyAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKIHN0YXRpYyB2
b2lkIHBlcmZvcm1PdmVybGFwVGVzdHMoT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwJiBvdmVybGFwVGVz
dFJlcXVlc3RzLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBSZW5kZXJMYXll
ciogbGF5ZXIpCkBAIC0zODc1LDEyICszODc1LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWlu
dEZvckZpeGVkUm9vdEJhY2tncm91bmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBSZW5kZXJM
CiAgICAgcmV0dXJuIGxheWVyLT5yZW5kZXJlcigpLmlzUm9vdCgpICYmIChwYWludEZsYWdzICYg
UmVuZGVyTGF5ZXI6OlBhaW50TGF5ZXJQYWludGluZ1Jvb3RCYWNrZ3JvdW5kT25seSk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVy
RmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBpZiAoaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAg
Ly8gVGhlIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgcGFpbnRpbmcgcGFzcyBnb2VzIHRocm91Z2gg
Y29tcG9zaXRpbmcgbGF5ZXJzLAogICAgICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgdGhh
dCB3ZSBkb24ndCBjYWNoZSBjbGlwIHJlY3RzIGNvbXB1dGVkIHdpdGggdGhlIHdyb25nIHJvb3Qg
aW4gdGhpcyBjYXNlLgotICAgICAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMo
KSB8fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKSkKKyAgICAgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGlu
dHMoKSB8fCAocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2aW9yRmxhdHRl
bkNvbXBvc2l0aW5nTGF5ZXJzKSkKICAgICAgICAgICAgIHBhaW50RmxhZ3MgfD0gUGFpbnRMYXll
clRlbXBvcmFyeUNsaXBSZWN0czsKICAgICAgICAgZWxzZSBpZiAoIWJhY2tpbmcoKS0+cGFpbnRz
SW50b1dpbmRvdygpCiAgICAgICAgICAgICAmJiAhYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9z
aXRlZEFuY2VzdG9yKCkKQEAgLTM5NjQsNyArMzk2NCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHBhaW50aW5n
SW5mbywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250
ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3Zv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBBU1NFUlQoaXNTZWxmUGFpbnRpbmdM
YXllcigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpKTsKIApAQCAtMzk4Miw5
ICszOTgyLDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVj
dGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBwYWludExheWVyQ29udGVu
dHMoY29udGV4dCwgcGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogfQogCi1ib29sIFJl
bmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpCitib29sIFJlbmRlckxheWVyOjpzZXR1
cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wm
IGRpZFF1YW50aXplRm9udHMpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgc2Nyb2xsaW5nT25NYWluVGhyZWFkID0gdHJ1ZTsKQEAgLTQwMDIs
OCArNDAwMiw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0
aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYm9vbCYKICAgICBpZiAoUGFnZSogcGFnZSA9
IHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCkpCiAgICAgICAgIGlzWm9vbWluZyA9ICFwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS5oYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKTsKICAgICBpZiAoc2Ny
b2xsaW5nT25NYWluVGhyZWFkIHx8IGNvbnRlbnRzU2Nyb2xsQnlQYWludGluZyB8fCBpc1pvb21p
bmcpIHsKLSAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQtPnNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cygpOwotICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoZmFsc2UpOworICAgICAgICBkaWRRdWFudGl6ZUZvbnRzID0gY29udGV4dC5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKTsKKyAgICAgICAgY29udGV4dC5zZXRTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMoZmFsc2UpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA3Miw5ICs0MDcyLDkgQEAgUGF0aCBSZW5kZXJMYXllcjo6
Y29tcHV0ZUNsaXBQYXRoKGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRS
ZWN0JgogICAgIHJldHVybiBQYXRoKCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xp
cFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYg
cGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVj
dCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkK
K2Jvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiBy
b290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKIHsKLSAgICBpZiAoIXJlbmRlcmVyKCkuaGFzQ2xp
cFBhdGgoKSB8fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFyZW5kZXJl
cigpLmhhc0NsaXBQYXRoKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpIHsK
QEAgLTQwODgsOCArNDA4OCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgICAgIFdp
bmRSdWxlIHdpbmRSdWxlOwogICAgICAgICBMYXlvdXRTaXplIHBhaW50aW5nT2Zmc2V0RnJvbVJv
b3QgPSBMYXlvdXRTaXplKHNuYXBTaXplVG9EZXZpY2VQaXhlbChvZmZzZXRGcm9tUm9vdCArIHBh
aW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbiwgTGF5b3V0UG9pbnQoKSwgcmVuZGVyZXIo
KS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKICAgICAgICAgUGF0aCBwYXRoID0g
Y29tcHV0ZUNsaXBQYXRoKHBhaW50aW5nT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5k
cywgd2luZFJ1bGUpOwotICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQt
PmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAg
ICAgIGNvbnRleHQuY2xpcFBhdGgocGF0aCwgd2luZFJ1bGUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKQEAgLTQwOTgsNyArNDA5OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVw
Q2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZ2V0RWxl
bWVudEJ5SWQocmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24tPmZyYWdtZW50KCkpOwogICAgICAg
ICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpjbGlwUGF0aFRh
ZykgJiYgZWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHVzZSBhIHNhZmVyIGNhc3Qgc3VjaCBhcyB0b1JlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyKCkuCi0gICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZG8gYSBjb250ZXh0LT5z
YXZlKCkgYW5kIHJldHVybiB0cnVlIHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CisgICAgICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZG8gYSBjb250ZXh0LnNhdmUoKSBhbmQgcmV0dXJu
IHRydWUgc28gd2UgcmVzdG9yZSB0aGUgY29udGV4dD8KICAgICAgICAgICAgIHN0YXRpY19jYXN0
PFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcio+KGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5hcHBseUNs
aXBwaW5nVG9Db250ZXh0KHJlbmRlcmVyKCksIHJvb3RSZWxhdGl2ZUJvdW5kcywgcGFpbnRpbmdJ
bmZvLnBhaW50RGlydHlSZWN0LCBjb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTQxMDYs
OSArNDEwNiw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIFJlbmRlckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKSBjb25zdAorYm9vbCBS
ZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKIHsKLSAgICBpZiAoY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHBhaW50RmxhZ3MgJiBQYWludExh
eWVyUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykKQEAgLTQxMjYsNyArNDEyNiw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgUGFpbnRMYXllckZsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9t
Um9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVC
b3VuZHNDb21wdXRlZCkKK3N0ZDo6dW5pcXVlX3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
cj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIExh
eWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdz
LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0
aXZlQm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCkKIHsKICAgICBpZiAo
IWhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50RmxhZ3MpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTQxNjMsNyArNDE2Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhHcmFwaGlj
c0NvCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5
ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciogZmlsdGVyUGFpbnRl
ciwgR3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cykKK0dyYXBoaWNzQ29u
dGV4dCYgUmVuZGVyTGF5ZXI6OmFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
ciogZmlsdGVyUGFpbnRlciwgR3JhcGhpY3NDb250ZXh0JiBvcmlnaW5hbENvbnRleHQsIExheWVy
UGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50
cykKIHsKICAgICBBU1NFUlQoZmlsdGVyUGFpbnRlci0+aGFzU3RhcnRlZEZpbHRlckVmZmVjdCgp
KTsKICAgICAvLyBBcHBseSB0aGUgY29ycmVjdCBjbGlwcGluZyAoaWUuIG92ZXJmbG93OiBoaWRk
ZW4pLgpAQCAtNDE4NSw3ICs0MTg1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVaSW5k
ZXgoUmVuZGVyTGF5ZXIqIGZpcnN0LCBSZW5kZXJMYXllciogc2Vjb25kKQogLy8gVGhlc2UgbGF5
ZXJzIHNob3VsZCBub3QgYmUgcGFpbnRlZCBpbiBhIHNpbWlsYXIgd2F5IGFzIHRoZSBvdGhlciBl
bGVtZW50cyBjb2xsZWN0ZWQgaW4KIC8vIG5hbWVkIGZsb3dzIC0gcmVnaW9ucyAtPiBuYW1lZCBm
bG93cyAtIHNpbmNlIHdlIGRvIG5vdCB3YW50IHRoZW0gdG8gYmUgY2xpcHBlZCB0byB0aGUKIC8v
IHJlZ2lvbnMgdmlld3BvcnQuCi12b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVkTGF5ZXJzSW5O
YW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRl
ckxheWVyOjpwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZs
YWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKCFpc1Jvb3RMYXllcigpKQogICAgICAgICByZXR1
cm47CkBAIC00MjA2LDcgKzQyMDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZpeGVkTGF5
ZXJzSW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTAogICAgICAg
ICBmaXhlZExheWVyLT5wYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFn
cyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBh
aW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAg
ICBBU1NFUlQoaXNTZWxmUGFpbnRpbmdMYXllcigpIHx8IGhhc1NlbGZQYWludGluZ0xheWVyRGVz
Y2VuZGFudCgpKTsKIApAQCAtNDI0OCwyNCArNDI0OCwyNSBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkaXNhYmxlIHN1YnBpeGVs
IHF1YW50aXphdGlvbiBmb3Igb3ZlcmZsb3cgY2xpcHMgb3Igc3ViZnJhbWVzIG9uY2Ugd2Ugc2Ny
b2xsIHRob3NlCiAgICAgLy8gdGhpbmdzIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLgogICAgIGJv
b2wgZGlkUXVhbnRpemVGb250cyA9IHRydWU7Ci0gICAgYm9vbCBuZWVkVG9BZGp1c3RTdWJwaXhl
bFF1YW50aXphdGlvbiA9IHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQsIGRp
ZFF1YW50aXplRm9udHMpOworICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4ZWxRdWFudGl6YXRp
b24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihvcmlnaW5hbENvbnRleHQsIGRpZFF1
YW50aXplRm9udHMpOwogCiAgICAgLy8gQXBwbHkgY2xpcC1wYXRoIHRvIGNvbnRleHQuCiAgICAg
TGF5b3V0U2l6ZSBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290ID0gb2Zmc2V0RnJvbVJvb3Q7Ci0g
ICAgaWYgKHJlbmRlcmVyKCkuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpICYmIChyZW5kZXJl
cigpLmhhc0NsaXBQYXRoKCkgfHwgaGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoY29udGV4dCwgcGFp
bnRGbGFncykpKQorICAgIGlmIChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2so
KSAmJiAocmVuZGVyZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50aW5n
KG9yaWdpbmFsQ29udGV4dCwgcGFpbnRGbGFncykpKQogICAgICAgICBjb2x1bW5Bd2FyZU9mZnNl
dEZyb21Sb290ID0gdG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5nSW5m
by5yb290TGF5ZXIsIExheW91dFBvaW50KCksIEFkanVzdEZvckNvbHVtbnMpKTsKIAogICAgIGJv
b2wgaGFzQ2xpcFBhdGggPSBmYWxzZTsKICAgICBpZiAoc2hvdWxkQXBwbHlDbGlwUGF0aChwYWlu
dGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkKLSAgICAgICAgaGFzQ2xp
cFBhdGggPSBzZXR1cENsaXBQYXRoKGNvbnRleHQsIHBhaW50aW5nSW5mbywgY29sdW1uQXdhcmVP
ZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21w
dXRlZCk7CisgICAgICAgIGhhc0NsaXBQYXRoID0gc2V0dXBDbGlwUGF0aChvcmlnaW5hbENvbnRl
eHQsIHBhaW50aW5nSW5mbywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZl
Qm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKICAgICBMYXllclBhaW50aW5n
SW5mbyBsb2NhbFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBjb250ZXh0OwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gZmlsdGVyUGFpbnRlciA9IHNldHVwRmls
dGVycyhjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRGbGFncywgY29sdW1uQXdhcmVP
ZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21w
dXRlZCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gJm9yaWdpbmFsQ29udGV4dDsK
KyAgICBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9IG9yaWdpbmFs
Q29udGV4dDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+
IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMoKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
LCBwYWludEZsYWdzLCBjb2x1bW5Bd2FyZU9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3Vu
ZHMsIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKICAgICBpZiAoZmlsdGVyUGFpbnRlcikg
ewogICAgICAgICBjb250ZXh0ID0gZmlsdGVyUGFpbnRlci0+ZmlsdGVyQ29udGV4dCgpOwotICAg
ICAgICBpZiAoY29udGV4dCAhPSB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgJiYgaGF2ZVRyYW5z
cGFyZW5jeSkgeworICAgICAgICBpZiAoY29udGV4dCAhPSAmdHJhbnNwYXJlbmN5TGF5ZXJDb250
ZXh0ICYmIGhhdmVUcmFuc3BhcmVuY3kpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBm
aWx0ZXIgYW5kIHRyYW5zcGFyZW5jeSwgd2UgaGF2ZSB0byBlYWdlcmx5IHN0YXJ0IGEgdHJhbnNw
YXJlbmN5IGxheWVyIGhlcmUsIHJhdGhlciB0aGFuIHJpc2sgYSBjaGlsZCBsYXllciBsYXppbHkg
c3RhcnRzIG9uZSB3aXRoIHRoZSB3cm9uZyBjb250ZXh0LgogICAgICAgICAgICAgYmVnaW5UcmFu
c3BhcmVuY3lMYXllcnModHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KTsKICAgICAgICAgfQpAQCAtNDMxMSw2MyAr
NDMxMiw2MyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aQogICAgIGlmIChpc1BhaW50aW5nQ29t
cG9zaXRlZEJhY2tncm91bmQpIHsKICAgICAgICAgLy8gUGFpbnQgb25seSB0aGUgYmFja2dyb3Vu
ZHMgZm9yIGFsbCBvZiB0aGUgZnJhZ21lbnRzIG9mIHRoZSBsYXllci4KICAgICAgICAgaWYgKHNo
b3VsZFBhaW50Q29udGVudCAmJiAhc2VsZWN0aW9uT25seSkKLSAgICAgICAgICAgIHBhaW50QmFj
a2dyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgdHJhbnNwYXJlbmN5
TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVu
Y3ksCisgICAgICAgICAgICBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVu
dHMsICpjb250ZXh0LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIHBhaW50aW5nSW5mby5wYWlu
dERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKICAgICAgICAgICAgICAgICBsb2NhbFBhaW50
aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAg
ICB9CiAKICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBu
ZWdhdGl2ZSB6LWluZGljZXMuCiAgICAgaWYgKChpc1BhaW50aW5nU2Nyb2xsaW5nQ29udGVudCAm
JiBpc1BhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgfHwgKCFpc1BhaW50aW5nU2Nyb2xsaW5nQ29u
dGVudCAmJiBpc1BhaW50aW5nQ29tcG9zaXRlZEJhY2tncm91bmQpKQotICAgICAgICBwYWludExp
c3QobmVnWk9yZGVyTGlzdCgpLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWlu
dEZsYWdzKTsKKyAgICAgICAgcGFpbnRMaXN0KG5lZ1pPcmRlckxpc3QoKSwgKmNvbnRleHQsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIAogICAgIGlmIChpc1BhaW50
aW5nQ29tcG9zaXRlZEZvcmVncm91bmQpIHsKICAgICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVu
dCkKLSAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50cyhsYXllckZyYWdtZW50
cywgY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnRE
aXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCisgICAgICAgICAgICBwYWludEZvcmVncm91bmRG
b3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCB0cmFuc3BhcmVuY3lMYXllckNv
bnRleHQsIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCwgaGF2ZVRyYW5zcGFyZW5jeSwKICAg
ICAgICAgICAgICAgICBsb2NhbFBhaW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBh
aW50Um9vdEZvclJlbmRlcmVyLCBzZWxlY3Rpb25Pbmx5IHx8IHNlbGVjdGlvbkFuZEJhY2tncm91
bmRzT25seSk7CiAgICAgfQogCiAgICAgaWYgKHNob3VsZFBhaW50T3V0bGluZSkKLSAgICAgICAg
cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgcGFpbnRCZWhhdmlvciwgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsK
KyAgICAgICAgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4
dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JS
ZW5kZXJlcik7CiAKICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAg
ICAgICAgIC8vIFBhaW50IGFueSBjaGlsZCBsYXllcnMgdGhhdCBoYXZlIG92ZXJmbG93LgotICAg
ICAgICBwYWludExpc3QobV9ub3JtYWxGbG93TGlzdC5nZXQoKSwgY29udGV4dCwgbG9jYWxQYWlu
dGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgIHBhaW50TGlzdChtX25vcm1hbEZs
b3dMaXN0LmdldCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CiAgICAgCiAgICAgICAgIC8vIE5vdyB3YWxrIHRoZSBzb3J0ZWQgbGlzdCBvZiBjaGlsZHJl
biB3aXRoIHBvc2l0aXZlIHotaW5kaWNlcy4KLSAgICAgICAgcGFpbnRMaXN0KHBvc1pPcmRlckxp
c3QoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAg
ICAgIHBhaW50TGlzdChwb3NaT3JkZXJMaXN0KCksICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgbG9jYWxQYWludEZsYWdzKTsKIAogICAgICAgICAvLyBQYWludCB0aGUgZml4ZWQgZWxlbWVu
dHMgZnJvbSBmbG93IHRocmVhZHMuCi0gICAgICAgIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxv
d3MoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAg
IHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
LCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHJl
Z2lvbiwgcGFpbnQgaXRzIGNvbnRlbnRzIHZpYSB0aGUgZmxvdyB0aHJlYWQncyBsYXllci4KICAg
ICAgICAgaWYgKHNob3VsZFBhaW50Q29udGVudCkKLSAgICAgICAgICAgIHBhaW50Rmxvd1RocmVh
ZElmUmVnaW9uRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50
aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKKyAgICAgICAgICAgIHBhaW50Rmxvd1RocmVhZElm
UmVnaW9uRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CiAgICAgfQogCiAgICAgaWYgKGlzUGFpbnRpbmdPdmVy
bGF5U2Nyb2xsYmFycyAmJiBoYXNTY3JvbGxiYXJzKCkpCi0gICAgICAgIHBhaW50T3ZlcmZsb3dD
b250cm9sc0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8pOworICAgICAgICBwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMobGF5ZXJG
cmFnbWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbyk7CiAKICAgICBpZiAoZmlsdGVy
UGFpbnRlcikgewotICAgICAgICBjb250ZXh0ID0gYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50ZXIu
Z2V0KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxheWVy
RnJhZ21lbnRzKTsKKyAgICAgICAgY29udGV4dCA9ICZhcHBseUZpbHRlcnMoZmlsdGVyUGFpbnRl
ci5nZXQoKSwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbGF5
ZXJGcmFnbWVudHMpOwogICAgICAgICBmaWx0ZXJQYWludGVyID0gbnVsbHB0cjsKICAgICB9CiAg
ICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2Ugbm93IHVzZSB0aGUgb3JpZ2luYWwgdHJhbnNw
YXJlbmN5IGNvbnRleHQuCi0gICAgQVNTRVJUKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9PSBj
b250ZXh0KTsKKyAgICBBU1NFUlQoJnRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCA9PSBjb250ZXh0
KTsKIAogICAgIGlmIChzaG91bGRQYWludENvbnRlbnQgJiYgIShzZWxlY3Rpb25Pbmx5IHx8IHNl
bGVjdGlvbkFuZEJhY2tncm91bmRzT25seSkpIHsKICAgICAgICAgaWYgKHNob3VsZFBhaW50TWFz
ayhwYWludGluZ0luZm8ucGFpbnRCZWhhdmlvciwgbG9jYWxQYWludEZsYWdzKSkgewogICAgICAg
ICAgICAgLy8gUGFpbnQgdGhlIG1hc2sgZm9yIHRoZSBmcmFnbWVudHMuCi0gICAgICAgICAgICBw
YWludE1hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOworICAgICAgICAgICAgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIShwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdNYXNrUGhhc2Up
ICYmIChwYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdDbGlwUGF0aFBo
YXNlKSkgewogICAgICAgICAgICAgLy8gUmUtdXNlIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JG
cmFnbWVudHMgdG8gcGFpbnQgYmxhY2sgZm9yIHRoZSBjb21wb3NpdGluZyBjbGlwcGluZyBtYXNr
LgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXllckZy
YWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RGb3JS
ZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRz
KGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWlu
dFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgobG9j
YWxQYWludEZsYWdzICYgUGFpbnRMYXllclBhaW50aW5nQ2hpbGRDbGlwcGluZ01hc2tQaGFzZSkp
IHsKICAgICAgICAgICAgIC8vIFBhaW50IHRoZSBib3JkZXIgcmFkaXVzIG1hc2sgZm9yIHRoZSBm
cmFnbWVudHMuCi0gICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRz
KGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgc3VidHJlZVBhaW50
Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JG
cmFnbWVudHMobGF5ZXJGcmFnbWVudHMsICpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgc3Vi
dHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDM4Niw3
ICs0Mzg3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5z
Zm9ybShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRTaXpl
JiB0cmFuc2xhdGlvbk9mZnNldCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5
aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MsIGNvbnN0IExh
eW91dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0KQogewogICAgIC8vIFRoaXMgaW52b2x2ZXMgc3Vi
dHJhY3Rpbmcgb3V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbGF5ZXIgaW4gb3VyIGN1cnJlbnQgY29v
cmRpbmF0ZSBzcGFjZSwgYnV0IHByZXNlcnZpbmcKICAgICAvLyB0aGUgYWNjdW11bGF0ZWQgZXJy
b3IgZm9yIHN1Yi1waXhlbCBsYXlvdXQuCkBAIC00NDAyLDggKzQ0MDMsOCBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBncmFwaGljcyBjb250ZXh0IHRvIHRo
ZSBzbmFwcGluZyBwb3NpdGlvbiB0byBhdm9pZCBvZmYtZGV2aWNlLXBpeGVsIHBvc2l0aW5nLgog
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGVSaWdodChkZXZpY2VQaXhlbFNuYXBwZWRPZmZzZXRGb3JU
aGlzTGF5ZXIud2lkdGgoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyLmhl
aWdodCgpKTsKICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtLgotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+Y29uY2F0Q1RN
KHRyYW5zZm9ybS50b0FmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5jb25jYXRDVE0odHJhbnNm
b3JtLnRvQWZmaW5lVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gTm93IGRvIGEgcGFpbnQgd2l0aCB0
aGUgcm9vdCBsYXllciBzaGlmdGVkIHRvIGJlIHVzLgogICAgIExheW91dFNpemUgYWRqdXN0ZWRT
dWJwaXhlbEFjY3VtdWxhdGlvbiA9IG9mZnNldEZvclRoaXNMYXllciAtIExheW91dFNpemUoZGV2
aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKQEAgLTQ0MTIsNyArNDQxMyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QKICAgICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0
aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIH0KIAot
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGlu
Z0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6cGFp
bnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFn
cyBwYWludEZsYWdzKQogewogICAgIGlmICghbGlzdCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDU5
Nyw3ICs0NTk4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJh
Z21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnMKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNm
b3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cykKIHsKICAgICBMYXllckZyYWdtZW50cyBlbmNsb3NpbmdQYWdpbmF0aW9uRnJhZ21lbnRzOwog
ICAgIExheW91dFNpemUgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdDsKQEAgLTQ2Mjks
NyArNDYzMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRMYXllckludG9G
cmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgfQogfQogCi12b2lkIFJl
bmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVu
dHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29u
dGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRC
YWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50
cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5j
eUxheWVyQ29udGV4dCwKICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERp
cnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYg
bG9jYWxQYWludGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKICAgICBSZW5k
ZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcikKIHsKQEAgLTQ2NTcsNyArNDY1
OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25z
dCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxh
eWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxh
eWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dCog
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3Jv
dW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVy
Q29udGV4dCwKICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVj
dCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQ
YWludGluZ0luZm8sIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwKICAgICBSZW5kZXJPYmpl
Y3QqIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlciwgYm9vbCBzZWxlY3Rpb25Pbmx5KQogewpA
QCAtNDcxNCw3ICs0NzE1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9y
RnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW4KICAgICAgICAgcmVz
dG9yZUNsaXAoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGNsaXBw
ZWRSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21l
bnRzV2l0aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXll
ckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LAordm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UgcGhhc2UsIGNv
bnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LAogICAgIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywgUGFp
bnRCZWhhdmlvciBwYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlcikKIHsKICAgICBib29sIHNob3VsZENsaXAgPSBsb2NhbFBhaW50aW5nSW5mby5j
bGlwVG9EaXJ0eVJlY3QgJiYgbGF5ZXJGcmFnbWVudHMuc2l6ZSgpID4gMTsKQEAgLTQ3MzYsNyAr
NDczNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dp
dGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMCiAgICAgfQogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxh
eWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3V0bGlu
ZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRp
bmdJbmZvLAogICAgIFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFn
bWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzUxLDcgKzQ3NTIsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxh
eWVyRnJhZ21lbnRzLAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9y
RnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0lu
Zm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJG
cmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbywKICAgICBSZW5kZXJPYmplY3Qq
IHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcikKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZy
YWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKQEAgLTQ3NzEsNyArNDc3Miw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5
ZXJGcmFnbWVudHMsIEdyCiAgICAgfQogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxk
Q2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdt
ZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYg
bG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdN
YXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWlu
dGluZ0luZm8sCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIp
CiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CkBA
IC00NzkwLDcgKzQ3OTEsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdN
YXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllcgogICAgIH0KIH0KIAot
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCit2b2lkIFJlbmRl
ckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5mbykKIHsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIGZyYWdtZW50IDogbGF5ZXJGcmFnbWVudHMpIHsKICAgICAgICAgaWYgKGZyYWdtZW50LmJh
Y2tncm91bmRSZWN0LmlzRW1wdHkoKSkKQEAgLTY5MTgsNyArNjkxOSw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmZpbHRlck5lZWRzUmVwYWludCgpCiAgICAgcmVuZGVyZXIoKS5yZXBhaW50KCk7CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIHJlZ2lvbiwg
TGF5b3V0UmVjdCBwYWludERpcnR5UmVjdCwgTGF5b3V0UG9pbnQgcGFpbnRPZmZzZXQsIFBhaW50
QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lk
IFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIExheW91dFJl
Y3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWludEJlaGF2aW9y
IHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewogICAgIExheW91
dFJlY3QgcmVnaW9uQ29udGVudEJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVnaW9uLT5sYXll
ck93bmVyKCkpLmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgQ3VycmVudFJlbmRlclJlZ2lvbk1haW50
YWluZXIgcmVnaW9uTWFpbnRhaW5lcigqcmVnaW9uKTsKQEAgLTY5MjYsMTcgKzY5MjcsMTcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBSZW4KIAogICAgIExheW91dFNpemUgbW92ZU9mZnNldCA9IHJl
Z2lvbi0+Zmxvd1RocmVhZFBvcnRpb25Mb2NhdGlvbigpIC0gKHBhaW50T2Zmc2V0ICsgcmVnaW9u
Q29udGVudEJveC5sb2NhdGlvbigpKSArIHJlZ2lvbi0+ZnJhZ21lbnRDb250YWluZXIoKS5zY3Jv
bGxlZENvbnRlbnRPZmZzZXQoKTsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQg
PSByb3VuZFBvaW50VG9EZXZpY2VQaXhlbHModG9MYXlvdXRQb2ludChtb3ZlT2Zmc2V0KSwgcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQtPnNh
dmUoKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLWFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCAt
YWRqdXN0ZWRQYWludE9mZnNldC55KCkpOworICAgIGNvbnRleHQuc2F2ZSgpOworICAgIGNvbnRl
eHQudHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgLWFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpKTsKIAogICAgIExheW91dFNpemUgc3VicGl4ZWxBY2N1bXVsYXRpb24gPSBtb3ZlT2Zm
c2V0IC0gdG9MYXlvdXRTaXplKExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQpKTsKICAg
ICBwYWludERpcnR5UmVjdC5tb3ZlKG1vdmVPZmZzZXQpOwogICAgIHBhaW50KGNvbnRleHQsIHBh
aW50RGlydHlSZWN0LCBMYXlvdXRTaXplKC1zdWJwaXhlbEFjY3VtdWxhdGlvbi53aWR0aCgpLCAt
c3VicGl4ZWxBY2N1bXVsYXRpb24uaGVpZ2h0KCkpLCBwYWludEJlaGF2aW9yLCBudWxscHRyLCBw
YWludEZsYWdzIHwgUGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyk7CiAgICAgcmVnaW9uLT5y
ZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKTsKLSAgICBjb250ZXh0LT5yZXN0b3Jl
KCk7CisgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBmcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxh
eWVyOjpwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdt
ZW50cyYgZnJhZ21lbnRzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQogewog
ICAgIGlmICghcmVuZGVyZXIoKS5pc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5k
ZXggYjZhMTI4Y2E4ZWY5NDVkMDA2ZTE4Yjc5MDlhYzkxNzVjN2MyYWI0My4uZWQxYjQwMDI0Njc0
ODE3YjI3ZTdiNDcxNzZhMDYzZTE2ZjJlMmI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKQEAgLTI2MCw5ICsyNjAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoaXRUZXN0
T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQmIGxvY2FsUG9p
bnQpOwogICAgIEludFNpemUgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2ludCYg
YWJzb2x1dGVQb2ludCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50T3ZlcmZsb3dDb250cm9scyhH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMgPSBmYWxzZSk7Ci0gICAgdm9pZCBwYWlu
dFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCk7Cisg
ICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNv
bnRyb2xzID0gZmFsc2UpOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2
b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXQoKTsKIApAQCAtNDYwLDEzICs0NjAsMTMgQEAgcHVibGljOgogICAgIC8vIHBh
aW50cyB0aGUgbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBkYW1hZ2UgcmVjdCBmcm9tIGJhY2sg
dG8KICAgICAvLyBmcm9udC4gIFRoZSBoaXRUZXN0IG1ldGhvZCBsb29rcyBmb3IgbW91c2UgZXZl
bnRzIGJ5IHdhbGtpbmcKICAgICAvLyBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIHBvaW50IGZy
b20gZnJvbnQgdG8gYmFjay4KLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11
bGF0aW9uID0gTGF5b3V0U2l6ZSgpLCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1h
bCwKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGRh
bWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uID0gTGF5b3V0
U2l6ZSgpLCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1hbCwKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgUGFpbnRMYXllckZsYWdzID0g
MCk7CiAgICAgYm9vbCBoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYpOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYsIEhpdFRlc3RSZXN1bHQmKTsKLSAgICB2b2lkIHBhaW50T3ZlcmxheVNjcm9s
bGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgUGFp
bnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0cik7Cisg
ICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExh
eW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdCA9IG51bGxwdHIpOwogCi0gICAgdm9pZCBwYWludE5hbWVkRmxvd1RocmVhZElu
c2lkZVJlZ2lvbihHcmFwaGljc0NvbnRleHQqLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCosIExh
eW91dFJlY3QsIExheW91dFBvaW50LCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1h
bCwgUGFpbnRMYXllckZsYWdzID0gMCk7CisgICAgdm9pZCBwYWludE5hbWVkRmxvd1RocmVhZElu
c2lkZVJlZ2lvbihHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCosIExh
eW91dFJlY3QsIExheW91dFBvaW50LCBQYWludEJlaGF2aW9yID0gUGFpbnRCZWhhdmlvck5vcm1h
bCwgUGFpbnRMYXllckZsYWdzID0gMCk7CiAKICAgICBzdHJ1Y3QgQ2xpcFJlY3RzQ29udGV4dCB7
CiAgICAgICAgIENsaXBSZWN0c0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXIqIGluUm9vdExheWVy
LCBDbGlwUmVjdHNUeXBlIGluQ2xpcFJlY3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxl
dmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3Jv
bGxiYXJTaXplLCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwIGluUmVzcGVjdE92ZXJmbG93Q2xp
cCA9IFJlc3BlY3RPdmVyZmxvd0NsaXApCkBAIC03MTcsOCArNzE3LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXB1dGVSZXBhaW50UmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cygpOwogICAgIHZv
aWQgY2xlYXJSZXBhaW50UmVjdHMoKTsKIAotICAgIHZvaWQgY2xpcFRvUmVjdChjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IENsaXBSZWN0JiwgQm9yZGVy
UmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOwotICAgIHZv
aWQgcmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRE
aXJ0eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CisgICAgdm9pZCBjbGlwVG9SZWN0KGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQ2xpcFJlY3QmLCBCb3Jk
ZXJSYWRpdXNDbGlwcGluZ1J1bGUgPSBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyk7CisgICAg
dm9pZCByZXN0b3JlQ2xpcChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dERpcnR5UmVjdCwgY29uc3QgQ2xpcFJlY3QmKTsKIAogICAgIGJvb2wgc2hvdWxkUmVwYWludEFm
dGVyTGF5b3V0KCkgY29uc3Q7CiAKQEAgLTc2OCw0MiArNzY4LDQyIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKLSAgICBi
b29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdyYXBoaWNzQ29udGV4dCosIGJvb2wm
IGRpZFF1YW50aXplRm9udHMpOworICAgIGJvb2wgc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRp
b24oR3JhcGhpY3NDb250ZXh0JiwgYm9vbCYgZGlkUXVhbnRpemVGb250cyk7CiAKICAgICBQYXRo
IGNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0
UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBXaW5kUnVsZSYpIGNvbnN0OwogCi0gICAgYm9vbCBz
ZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
Y29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2
ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOworICAgIGJvb2wgc2V0
dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNv
bnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVC
b3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKIAotICAgIGJvb2wgaGFz
RmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiwgUGFpbnRMYXllckZsYWdzKSBj
b25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IHNl
dHVwRmlsdGVycyhHcmFwaGljc0NvbnRleHQqLCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5
ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJv
b3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwotICAg
IEdyYXBoaWNzQ29udGV4dCogYXBwbHlGaWx0ZXJzKEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVy
KiwgR3JhcGhpY3NDb250ZXh0KiBvcmlnaW5hbENvbnRleHQsIExheWVyUGFpbnRpbmdJbmZvJiwg
TGF5ZXJGcmFnbWVudHMmKTsKKyAgICBib29sIGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBo
aWNzQ29udGV4dCYsIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0
JiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJv
b3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGFwcGx5Rmls
dGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2lu
YWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVyRnJhZ21lbnRzJik7CiAKLSAgICB2
b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJG
bGFncyk7Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKLSAg
ICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXpl
JiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7Ci0gICAgdm9pZCBwYWludExheWVy
Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWlu
dExheWVyRmxhZ3MpOwotICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+Kiwg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MpOworICAgIHZvaWQgcGFpbnRMYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludEZpeGVkTGF5ZXJz
SW5OYW1lZEZsb3dzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rp
b24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVy
RmxhZ3MpOworICAgIHZvaWQgcGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MsIGNvbnN0
IExheW91dFNpemUmIHRyYW5zbGF0aW9uT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpKTsKKyAgICB2b2lk
IHBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExpc3QoVmVjdG9yPFJlbmRl
ckxheWVyKj4qLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBh
aW50TGF5ZXJGbGFncyk7CiAKICAgICB2b2lkIGNvbGxlY3RGcmFnbWVudHMoTGF5ZXJGcmFnbWVu
dHMmLCBjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0
eVJlY3QsCiAgICAgICAgIFBhZ2luYXRpb25JbmNsdXNpb25Nb2RlLAogICAgICAgICBDbGlwUmVj
dHNUeXBlLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBpbk92ZXJsYXlTY3JvbGxiYXJT
aXplUmVsZXZhbmN5LCBTaG91bGRSZXNwZWN0T3ZlcmZsb3dDbGlwLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdCwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCogbGF5ZXJCb3VuZGlu
Z0JveCA9IG51bGxwdHIsIFNob3VsZEFwcGx5Um9vdE9mZnNldFRvRnJhZ21lbnRzID0gSWdub3Jl
Um9vdE9mZnNldEZvckZyYWdtZW50cyk7CiAgICAgdm9pZCB1cGRhdGVQYWludGluZ0luZm9Gb3JG
cmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
TGF5ZXJGbGFncywgYm9vbCBzaG91bGRQYWludENvbnRlbnQsIGNvbnN0IExheW91dFNpemUmIG9m
ZnNldEZyb21Sb290KTsKLSAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25z
dCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIEdyYXBoaWNzQ29udGV4dCogdHJh
bnNwYXJlbmN5TGF5ZXJDb250ZXh0LAorICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21l
bnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NDb250
ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3Qm
IHRyYW5zcGFyZW5jeVBhaW50RGlydHlSZWN0LCBib29sIGhhdmVUcmFuc3BhcmVuY3ksIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGlu
Z1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMo
Y29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQq
IHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50Rm9yZWdyb3VuZEZvckZy
YWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNz
Q29udGV4dCYgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRS
ZWN0JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFp
bnRpbmdSb290Rm9yUmVuZGVyZXIsCiAgICAgICAgIGJvb2wgc2VsZWN0aW9uT25seSk7Ci0gICAg
dm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSwgY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVy
ZXIpOwotICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21l
bnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJl
aGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKLSAgICB2b2lk
IHBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7Ci0gICAgdm9pZCBw
YWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50
cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAg
dm9pZCBwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKKyAgICB2b2lkIHBh
aW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlLCBjb25zdCBMYXll
ckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Cisg
ICAgdm9pZCBwYWludE91dGxpbmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3Is
IFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZvaWQgcGFpbnRP
dmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mKTsKKyAgICB2b2lkIHBhaW50TWFz
a0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5k
ZXJlcik7CisgICAgdm9pZCBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBh
aW50VHJhbnNmb3JtZWRMYXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOwogCiAgICAgUmVuZGVyTGF5ZXIq
IHRyYW5zcGFyZW50UGFpbnRpbmdBbmNlc3RvcigpOwotICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVu
Y3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiBkaXJ0eVJlY3QpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMYXllcihSZW5k
ZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCiAgICAgICAgIGNv
bnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBib29s
IGFwcGxpZWRUcmFuc2Zvcm0sCkBAIC05MzgsNyArOTM4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVNjcm9sbENvcm5lclN0eWxlKCk7CiAgICAgdm9pZCB1cGRhdGVSZXNpemVyU3R5bGUo
KTsKIAotICAgIHZvaWQgZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KTsKKyAgICB2b2lkIGRyYXdQbGF0
Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiByZXNp
emVyQ29ybmVyUmVjdCk7CiAKICAgICB2b2lkIHVwZGF0ZVBhZ2luYXRpb24oKTsKIApAQCAtOTgy
LDcgKzk4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mLAogICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUq
LCBkb3VibGUqIHpPZmZzZXRGb3JEZXNjZW5kYW50cywKICAgICAgICAgZG91YmxlKiB6T2Zmc2V0
LCBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3Rh
dGUsIGJvb2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwotICAgIHZvaWQgcGFpbnRGbG93VGhyZWFk
SWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9p
ZCBwYWludEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50
cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXll
ckZsYWdzKTsKICAgICBib29sIG1hcExheWVyQ2xpcFJlY3RzVG9GcmFnbWVudGF0aW9uTGF5ZXIo
Q2xpcFJlY3RzJikgY29uc3Q7CiAKICAgICBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogY3VycmVu
dFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDUwNjRjNGY4Y2Y4NmVmM2U3MGEz
ZWU3N2RiMjJjMTI1NjZlYjQ3ZjkuLjM5MDQxYTc5OTVlOGQ2ZjZmMTllYTE3ZjY0MTMzYzlmZWUz
ODExZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0
Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaAogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3Zv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVy
KiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgY29uc3QgSW50
UmVjdCYgcGFpbnREaXJ0eVJlY3QsIC8vIEluIHRoZSBjb29yZHMgb2Ygcm9vdExheWVyLgogICAg
IFBhaW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2Ug
cGFpbnRpbmdQaGFzZSkKIHsKQEAgLTIzNDEsNyArMjM0MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIs
IEdyYXBoCiAgICAgICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGVuY2xvc2luZ0ludFJlY3Qo
Y29tcG9zaXRlZEJvdW5kc0luY2x1ZGluZ01hcmdpbigpKSk7CiAKICAgICAgICAgLy8gV2UgaGF2
ZSB0byB1c2UgdGhlIHNhbWUgcm9vdCBhcyBmb3IgaGl0IHRlc3RpbmcsIGJlY2F1c2UgYm90aCBt
ZXRob2RzIGNhbiBjb21wdXRlIGFuZCBjYWNoZSBjbGlwUmVjdHMuCi0gICAgICAgIHBhaW50SW50
b0xheWVyKGdyYXBoaWNzTGF5ZXIsICZjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3JO
b3JtYWwsIHBhaW50aW5nUGhhc2UpOworICAgICAgICBwYWludEludG9MYXllcihncmFwaGljc0xh
eWVyLCBjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3JOb3JtYWwsIHBhaW50aW5nUGhh
c2UpOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoJnJlbmRl
cmVyKCksIGRpcnR5UmVjdCk7CiAgICAgfSBlbHNlIGlmIChncmFwaGljc0xheWVyID09IGxheWVy
Rm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKSB7CkBAIC0yMzU0LDggKzIzNTQsOCBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBHcmFwaAogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsQ29ybmVy
QW5kUmVzaXplci54KCksIC1zY3JvbGxDb3JuZXJBbmRSZXNpemVyLnkoKSk7CiAgICAgICAgIExh
eW91dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gTGF5b3V0UmVjdChjbGlwKTsKICAgICAgICAgdHJh
bnNmb3JtZWRDbGlwLm1vdmVCeShzY3JvbGxDb3JuZXJBbmRSZXNpemVyLmxvY2F0aW9uKCkpOwot
ICAgICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKCZjb250ZXh0LCBJbnRQb2lu
dCgpLCBzbmFwcGVkSW50UmVjdCh0cmFuc2Zvcm1lZENsaXApKTsKLSAgICAgICAgbV9vd25pbmdM
YXllci5wYWludFJlc2l6ZXIoJmNvbnRleHQsIEludFBvaW50KCksIHRyYW5zZm9ybWVkQ2xpcCk7
CisgICAgICAgIG1fb3duaW5nTGF5ZXIucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgSW50UG9p
bnQoKSwgc25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7CisgICAgICAgIG1fb3duaW5n
TGF5ZXIucGFpbnRSZXNpemVyKGNvbnRleHQsIEludFBvaW50KCksIHRyYW5zZm9ybWVkQ2xpcCk7
CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIH0KICNpZm5kZWYgTkRFQlVHCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKaW5kZXggMjRlYjJi
YmRiYjE0MjE1ZjMyNDBlOTdmNTNlMDVkZTllYjQ4NjQ5MS4uZDY2ZmI4MjE1NDgxYjU5NWVlY2Ex
OTMzYjJiZWJkZjM0NTZiMDJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaApAQCAtMzI2LDcgKzMyNiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBo
YXNUaWxlZEJhY2tpbmdGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV9jaGlsZENv
bnRhaW5tZW50TGF5ZXIgJiYgbV91c2luZ1RpbGVkQ2FjaGVMYXllcik7IH0KICAgICBHcmFwaGlj
c0xheWVyKiB0aWxlQ2FjaGVGbGF0dGVuaW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3VzaW5n
VGlsZWRDYWNoZUxheWVyID8gbV9jaGlsZENvbnRhaW5tZW50TGF5ZXIuZ2V0KCkgOiBudWxscHRy
OyB9CiAKLSAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlv
ciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOworICAgIHZvaWQgcGFpbnRJbnRvTGF5ZXIo
Y29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIHBh
aW50RGlydHlSZWN0LCBQYWludEJlaGF2aW9yLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSk7
CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gZm9yIHVwZGF0ZUdlb21ldHJ5LgogICAgIHZvaWQg
YWRqdXN0QW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kc0ZvckZsb3dUaHJlYWQoTGF5b3V0UmVjdCYg
YW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcywgY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5n
QW5jZXN0b3IpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA4OTU1NmUzMWMzYTEzZmE1NzQzNGQ3OGM2ZTJmMThj
YTIzNGQ1ZjhkLi42ZjQ1ZTk2Nzg1ZWZjM2JmMDE5NjM2NmNmZDBhMmY3NmZmYzBmZmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtMjg2Niw3ICsyODY2LDcgQEAgdm9pZCBwYWludFNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWMKICAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsYmFyUmVjdC54KCksIC1zY3JvbGxiYXJSZWN0LnkoKSk7CiAg
ICAgSW50UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBjbGlwOwogICAgIHRyYW5zZm9ybWVkQ2xpcC5t
b3ZlQnkoc2Nyb2xsYmFyUmVjdC5sb2NhdGlvbigpKTsKLSAgICBzY3JvbGxiYXItPnBhaW50KCZj
b250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgIHNjcm9sbGJhci0+cGFpbnQoY29udGV4dCwg
dHJhbnNmb3JtZWRDbGlwKTsKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIApAQCAtMjg4Myw3
ICsyODgzLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnBhaW50Q29udGVudHMoY29u
c3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3IKICAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoLXNjcm9sbENvcm5lci54KCksIC1zY3JvbGxDb3JuZXIueSgpKTsKICAgICAgICAgSW50
UmVjdCB0cmFuc2Zvcm1lZENsaXAgPSBwaXhlbFNuYXBwZWRSZWN0Rm9ySW50ZWdyYWxQb3NpdGlv
bmVkSXRlbXM7CiAgICAgICAgIHRyYW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyLmxv
Y2F0aW9uKCkpOwotICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucGFpbnRTY3JvbGxD
b3JuZXIoJmNvbnRleHQsIHRyYW5zZm9ybWVkQ2xpcCk7CisgICAgICAgIG1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKS5wYWludFNjcm9sbENvcm5lcihjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOwog
ICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggNDBmNWUzMmNmNTAyY2JiZGUwYmY1M2M0MGMz
M2EyNDFmNDY1YTM3Ny4uZTNjYjc5NmJmZjQ3MzZmNDdkYzZhMTE2NmU4ZTQ0MmViMGY0NjA3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMzQ1LDcg
KzM0NSw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRTY3JvbGxiYXIoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgICAgICAgICBtX3ZCYXItPndp
ZHRoKCksCiAgICAgICAgICAgICBoZWlnaHQoKSAtIChib3JkZXJUb3AoKSArIGJvcmRlckJvdHRv
bSgpKSk7CiAgICAgICAgIG1fdkJhci0+c2V0RnJhbWVSZWN0KHNjcm9sbFJlY3QpOwotICAgICAg
ICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVkSW50UmVjdChwYWludElu
Zm8ucmVjdCkpOworICAgICAgICBtX3ZCYXItPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNu
YXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAgICAgfQogfQogCkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICB9CiAKICAgICBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGNvbG9yU3BhY2UpOwogCiAgICAgVGV4dFJ1
biB0ZXh0UnVuKGl0ZW1UZXh0LCAwLCAwLCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBpdGVtU3R5
bGUuZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoaXRlbVN0eWxlLnVuaWNvZGVCaWRpKCkpLCB0cnVl
LCBUZXh0UnVuOjpOb1JvdW5kaW5nKTsKICAgICBGb250Q2FzY2FkZSBpdGVtRm9udCA9IHN0eWxl
KCkuZm9udENhc2NhZGUoKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6
OnBhaW50SXRlbUZvcmVncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JgogICAgIH0KIAogICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAotICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3QmlkaVRleHQoaXRlbUZvbnQsIHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChy
LmxvY2F0aW9uKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdCaWRpVGV4dChpdGVt
Rm9udCwgdGV4dFJ1biwgcm91bmRlZEludFBvaW50KHIubG9jYXRpb24oKSkpOwogfQogCiB2b2lk
IFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgaW50IGxpc3RJbmRleCkKQEAgLTQzNSw3
ICs0MzUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50SXRlbUJhY2tncm91bmQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JgogICAgICAgICBDb2xvclNwYWNlIGNv
bG9yU3BhY2UgPSBpdGVtU3R5bGUuY29sb3JTcGFjZSgpOwogICAgICAgICBMYXlvdXRSZWN0IGl0
ZW1SZWN0ID0gaXRlbUJvdW5kaW5nQm94UmVjdChwYWludE9mZnNldCwgbGlzdEluZGV4KTsKICAg
ICAgICAgaXRlbVJlY3QuaW50ZXJzZWN0KGNvbnRyb2xDbGlwUmVjdChwYWludE9mZnNldCkpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3QoaXRlbVJl
Y3QpLCBiYWNrQ29sb3IsIGNvbG9yU3BhY2UpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNl
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFy
a2VyLmNwcAppbmRleCBhODU1YTQ4ZTUyODgwOGIyNGNmOTVjODE3MjBlMGM5OTFjNGI1ODYwLi44
YmEwZDZkMzIxNGY0ZGM1NmFjYjAxNDg2NDYxODY0MDRmN2U1YWMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCkBAIC0xMTk0LDE0ICsxMTk0LDE0
IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgRmxvYXRSZWN0IG1hcmtlciA9IGdldFJl
bGF0aXZlTWFya2VyUmVjdCgpOwogICAgIG1hcmtlci5tb3ZlQnkoYm94T3JpZ2luKTsKIAotICAg
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBpZiAoaXNJ
bWFnZSgpKSB7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlz
LCBtYXJrZXIuc2l6ZSgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7Cisg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMsIG1hcmtlci5zaXpl
KCkpLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKICAgICAgICAgaWYgKHNl
bGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAgICAgICAgICAgTGF5b3V0UmVj
dCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgICAgICBzZWxSZWN0Lm1v
dmVCeShib3hPcmlnaW4pOwotICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZElu
dFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBl
ZEludFJlY3Qoc2VsUmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTIwOSwyNiArMTIwOSwyNiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGlm
IChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgTGF5b3V0UmVj
dCBzZWxSZWN0ID0gbG9jYWxTZWxlY3Rpb25SZWN0KCk7CiAgICAgICAgIHNlbFJlY3QubW92ZUJ5
KGJveE9yaWdpbik7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2Vs
UmVjdCksIG1fbGlzdEl0ZW0uc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKICAgICB9CiAKICAgICBjb25zdCBDb2xvciBjb2xvcihzdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICBjb250ZXh0LT5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNz
KDEuMGYpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBj
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBjb250ZXh0LnNldEZpbGxDb2xv
cihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgRUxpc3RTdHlsZVR5cGUgdHlw
ZSA9IHN0eWxlKCkubGlzdFN0eWxlVHlwZSgpOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAg
ICBjYXNlIERpc2M6Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxsaXBzZShtYXJrZXIpOwor
ICAgICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjYXNlIENpcmNsZToKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
ICAgICAgICBjb250ZXh0LmRyYXdFbGxpcHNlKG1hcmtlcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNhc2UgU3F1YXJlOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3QobWFy
a2VyKTsKKyAgICAgICAgICAgIGNvbnRleHQuZHJhd1JlY3QobWFya2VyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgY2FzZSBOb25lTGlzdFN0eWxlOgogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTMxNywyMiArMTMxNywyMiBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIGNv
bnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpOwogICAgIFRleHRS
dW4gdGV4dFJ1biA9IFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHRoaXMsIGZvbnQsIG1f
dGV4dCwgc3R5bGUoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAgIGlmICghc3R5bGUoKS5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKSB7CiAgICAgICAgIG1hcmtlci5tb3ZlQnkoLWJveE9yaWdpbik7CiAgICAgICAg
IG1hcmtlciA9IG1hcmtlci50cmFuc3Bvc2VkUmVjdCgpOwogICAgICAgICBtYXJrZXIubW92ZUJ5
KEZsb2F0UG9pbnQoYm94LngoKSwgYm94LnkoKSAtIGxvZ2ljYWxIZWlnaHQoKSkpOwogICAgICAg
ICBzdGF0ZVNhdmVyLnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKG1hcmtlci54
KCksIG1hcmtlci5tYXhZKCkpOwotICAgICAgICBjb250ZXh0LT5yb3RhdGUoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGRlZzJyYWQoOTAuKSkpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1hcmtl
ci54KCksIC1tYXJrZXIubWF4WSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUobWFya2Vy
LngoKSwgbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQucm90YXRlKHN0YXRpY19jYXN0
PGZsb2F0PihkZWcycmFkKDkwLikpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLW1hcmtl
ci54KCksIC1tYXJrZXIubWF4WSgpKTsKICAgICB9CiAKICAgICBGbG9hdFBvaW50IHRleHRPcmln
aW4gPSBGbG9hdFBvaW50KG1hcmtlci54KCksIG1hcmtlci55KCkgKyBzdHlsZSgpLmZvbnRNZXRy
aWNzKCkuYXNjZW50KCkpOwogICAgIHRleHRPcmlnaW4gPSByb3VuZFBvaW50VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UG9pbnQodGV4dE9yaWdpbiksIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSwgc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpOwogCiAgICAgaWYgKHR5cGUgPT0g
QXN0ZXJpc2tzIHx8IHR5cGUgPT0gRm9vdG5vdGVzKQotICAgICAgICBjb250ZXh0LT5kcmF3VGV4
dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAgY29udGV4dC5kcmF3VGV4dChm
b250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgVUNo
YXIgc3VmZml4ID0gbGlzdE1hcmtlclN1ZmZpeCh0eXBlLCBtX2xpc3RJdGVtLnZhbHVlKCkpOwog
CkBAIC0xMzYzLDcgKzEzNjMsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgICAgICB9
CiAgICAgICAgIHRleHRSdW4uc2V0VGV4dChTdHJpbmdWaWV3KHRvRHJhdykpOwogCi0gICAgICAg
IGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOworICAgICAgICBj
b250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4pOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCmlu
ZGV4IDIxNzEzODhlYWZlOGE4YzIzYmQzMTU5NmFjMGNlZTk0ODI4YjhiMWEuLmI1MmE2YzliNGNk
ZGI2OTAxMzBjZmI5MWJlN2Y4ZGYyYjY0ZGM4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKQEAgLTkxLDkgKzkxLDkgQEAgc3RhdGlj
IEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGMKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAg
dW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsK
ICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6
b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVk
UmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0Lngo
KSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUo
RmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAg
ICAgfQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CiB9CkBAIC0xMjgsNzYgKzEyOCw3NiBAQCB2
b2lkIFJlbmRlck1lZGlhQ29udHJvbHM6OmFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRl
clN0eWxlJiBzdHlsZSkKIAogYm9vbCBSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29u
dHJvbHNQYXJ0KE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIHBhcnQsIGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4
dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogCiAgICAgc3dpdGNoIChwYXJ0KSB7CiAgICAgY2FzZSBNZWRpYUVudGVyRnVs
bHNjcmVlbkJ1dHRvbjoKICAgICBjYXNlIE1lZGlhRXhpdEZ1bGxzY3JlZW5CdXR0b246CiAgICAg
ICAgIGlmIChNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGlj
X2Nhc3Q8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsK
ICAgICAgICAgICAgIGJvb2wgZW50ZXJCdXR0b24gPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVk
aWFFbnRlckZ1bGxzY3JlZW5CdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChl
bnRlckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tNZWRpYVVJUGFy
dEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KGVudGVyQnV0dG9uID8gV0tNZWRpYVVJUGFydEZ1bGxzY3JlZW5CdXR0b24gOiBXS01lZGlhVUlQ
YXJ0RXhpdEZ1bGxzY3JlZW5CdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uOgogICAgIGNhc2UgTWVkaWFI
aWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b246CiAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xUb2dnbGVD
bG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCo+KG8ubm9kZSgpKSkgewogICAgICAg
ICAgICAgYm9vbCBjYXB0aW9uc1Zpc2libGUgPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFI
aWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChj
YXB0aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0SGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIDog
V0tNZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChjYXB0aW9uc1Zpc2libGUgPyBXS01lZGlhVUlQYXJ0SGlkZUNsb3Nl
ZENhcHRpb25zQnV0dG9uIDogV0tNZWRpYVVJUGFydFNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbiwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUo
bykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFNdXRlQnV0dG9u
OgogICAgIGNhc2UgTWVkaWFVbk11dGVCdXR0b246CiAgICAgICAgIGlmIChNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sTXV0ZUJ1dHRv
bkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgYXVkaW9FbmFibGVkID0g
YnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhTXV0ZUJ1dHRvbjsKLSAgICAgICAgICAgIHdrRHJh
d01lZGlhVUlQYXJ0KGF1ZGlvRW5hYmxlZCA/IFdLTWVkaWFVSVBhcnRNdXRlQnV0dG9uIDogV0tN
ZWRpYVVJUGFydFVuTXV0ZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFy
dChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRV
bk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhUGF1c2VCdXR0b246CiAgICAgY2FzZSBNZWRpYVBsYXlCdXR0b246CiAgICAgICAgIGlmIChN
ZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudCogYnRuID0gc3RhdGljX2Nhc3Q8TWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAgIGJvb2wgY2Fu
UGxheSA9IGJ0bi0+ZGlzcGxheVR5cGUoKSA9PSBNZWRpYVBsYXlCdXR0b247Ci0gICAgICAgICAg
ICB3a0RyYXdNZWRpYVVJUGFydChjYW5QbGF5ID8gV0tNZWRpYVVJUGFydFBsYXlCdXR0b24gOiBX
S01lZGlhVUlQYXJ0UGF1c2VCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBh
cnQoY2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDogV0tNZWRpYVVJUGFydFBhdXNl
QnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVJl
d2luZEJ1dHRvbjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFJld2lu
ZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRSZXdp
bmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVy
bWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVJldHVyblRvUmVh
bHRpbWVCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRTZWVr
VG9SZWFsdGltZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRTZWVrVG9SZWFsdGltZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhU2Vla0JhY2tCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRTZWVrQmFja0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRTZWVrQmFja0J1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1l
ZGlhU2Vla0ZvcndhcmRCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRTZWVrRm9yd2FyZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdL
TWVkaWFVSVBhcnRTZWVrRm9yd2FyZEJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lZGlhU2xpZGVyOiB7CiAgICAgICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSBwYXJlbnRNZWRpYUVsZW1lbnQobykpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB1
bnpvb21lZFJlY3QgPSBnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dChvLCBw
YWludEluZm8sIHIpOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayhwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVkaWFFbGVtZW50
LT5wZXJjZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1lZGlhRWxlbWVu
dC0+Y3VycmVudFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVNsaWRlclRyYWNrKHBhaW50SW5mby5jb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHVuem9vbWVkUmVjdCwgbWVkaWFFbGVtZW50LT5wZXJj
ZW50TG9hZGVkKCkgKiBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCksIG1lZGlhRWxlbWVudC0+Y3Vy
cmVudFRpbWUoKSwgbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTWVkaWFTbGlkZXJU
aHVtYjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRpbWVsaW5lU2xp
ZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJt
aW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0VGlt
ZWxpbmVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhVm9s
dW1lU2xpZGVyQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0Vm9sdW1lU2xpZGVyQ29udGFpbmVyLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
V0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIE1lZGlhVm9sdW1lU2xpZGVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChX
S01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
V0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tEcmF3TWVkaWFV
SVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3
a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVsbFNjcmVlblZvbHVtZVNsaWRlciwgcGFp
bnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhRnVsbFNjcmVlblZvbHVtZVNsaWRlclRo
dW1iOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0RnVsbFNjcmVlblZv
bHVtZVNsaWRlclRodW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIs
IGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJ
UGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lZGlhVGltZWxpbmVDb250YWluZXI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
V0tNZWRpYVVJUGFydEJhY2tncm91bmQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYUN1cnJlbnRUaW1lRGlzcGxheToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApp
bmRleCA3ZTFmZDViNGM0ZjY3ZjgzNjE3NmEyNWQxMWQ0OTk5YzdlZjc4YjJiLi41OWM2M2MwYTBi
YzJmNWQxMmJmMWMyNGEyNWM3NjQ4ZjY1OGQyNTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTU3MCw3ICs1NzAsNyBAQCBM
YXlvdXRSZWN0IFJlbmRlck11bHRpQ29sdW1uU2V0OjpmbG93VGhyZWFkUG9ydGlvbk92ZXJmbG93
UmVjdChjb25zdCBMYXlvdXRSZWN0JgogCiB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWlu
dENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqIGZsb3dUaHJl
YWQgPSBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIFJl
bmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChjb2xDb3VudCA8PSAxKQogICAgICAgICByZXR1cm47
CiAKLSAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5j
b250ZXh0KTsKKyAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFudGlhbGlhc0xpbmVzKHBhaW50
SW5mby5jb250ZXh0KCkpOwogCiAgICAgaWYgKGZsb3dUaHJlYWQtPnByb2dyZXNzaW9uSXNJbmxp
bmUoKSkgewogICAgICAgICBib29sIGxlZnRUb1JpZ2h0ID0gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkgXiBmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzUmV2ZXJzZWQoKTsKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVtblJ1bGVz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICAgICAgICAgIExh
eW91dFVuaXQgcnVsZVRvcCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwYWludE9mZnNl
dC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IHBhaW50T2Zmc2V0LnkoKSArIHJ1
bGVMb2dpY2FsTGVmdCAtIHJ1bGVUaGlja25lc3MgLyAyICsgcnVsZUFkZDsKICAgICAgICAgICAg
ICAgICBMYXlvdXRVbml0IHJ1bGVCb3R0b20gPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
cnVsZVRvcCArIGNvbnRlbnRIZWlnaHQoKSA6IHJ1bGVUb3AgKyBydWxlVGhpY2tuZXNzOwogICAg
ICAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3QgPSBzbmFwcGVkSW50UmVj
dChydWxlTGVmdCwgcnVsZVRvcCwgcnVsZVJpZ2h0IC0gcnVsZUxlZnQsIHJ1bGVCb3R0b20gLSBy
dWxlVG9wKTsKLSAgICAgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoKnBhaW50SW5mby5j
b250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5
bGUsIDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRl
KHBhaW50SW5mby5jb250ZXh0KCksIHBpeGVsU25hcHBlZFJ1bGVSZWN0LCBib3hTaWRlLCBydWxl
Q29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgcnVsZUxvZ2ljYWxMZWZ0ID0gY3VyckxvZ2ljYWxMZWZ0T2Zm
c2V0OwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50
Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjb2xDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBy
dWxlUmVjdC5tb3ZlKHN0ZXApOwogICAgICAgICAgICAgSW50UmVjdCBwaXhlbFNuYXBwZWRSdWxl
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJ1bGVSZWN0KTsKLSAgICAgICAgICAgIGRyYXdMaW5lRm9y
Qm94U2lkZSgqcGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZFJ1bGVSZWN0LCBib3hTaWRl
LCBydWxlQ29sb3IsIHJ1bGVTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICAgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVj
dCwgYm94U2lkZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAg
ICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CmluZGV4IDk3OWU5Y2ZmNzNjMmJlZDlkMDk3MzZiOGJiYzZhMTc3MGZkMzI0N2QuLmM4MDUxZDkx
YTNmYTEyYWVhYmFhYWU2YmFjNTY0YTllZmU2NjIwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OmFkZFBERlVSTFJlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE8KICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSBkb3duY2FzdDxFbGVtZW50
Pigqbm9kZSkuZ2V0QXR0cmlidXRlKGhyZWZBdHRyKTsKICAgICBpZiAoaHJlZi5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRVUkxGb3JSZWN0KG5v
ZGUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJlY3Qp
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFVSTEZvclJlY3Qobm9kZS0+ZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTChocmVmKSwgc25hcHBlZEludFJlY3QodXJsUmVjdCkpOwogfQogCiAjaWYg
UExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKaW5kZXggOGM5OGJiYTg1NDYzNjBmYTAyZWQ1Y2I1YWE3N2UyNTRhMGFlZjI5ZC4uZmQyMDUw
NGVjM2Q1Y2NlODFhYjYxNGFhNjJkNTViZDcwNzE0MzQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCB2b2lkIFJl
bmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgY29tcGxldGVseUNsaXBwZWRPdXQgPSB0cnVl
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhhdmUg
YSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5kIGNv
bnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2F2ZSgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAg
ICAgICBGbG9hdFJvdW5kZWRSZWN0IHJvdW5kZWRJbm5lclJlY3QgPSBGbG9hdFJvdW5kZWRSZWN0
KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHBhaW50UmVjdCwKICAgICAgICAgICAg
ICAgICBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVy
Qm90dG9tKCksIHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdSaWdodCgpICsg
Ym9yZGVyUmlnaHQoKSwgdHJ1ZSwgdHJ1ZSkpOwotICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5l
clJlY3QocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCwgcm91bmRlZElubmVyUmVjdCk7Cisg
ICAgICAgICAgICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8uY29udGV4dCgpLCBwYWlu
dFJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODksNyAr
MTg5LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgcGFpbnRSZXBsYWNlZChw
YWludEluZm8sIGFkanVzdGVkUGFpbnRPZmZzZXQpOwogCiAgICAgICAgIGlmIChzdHlsZSgpLmhh
c0JvcmRlclJhZGl1cygpKQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KICAg
ICAgICAgCiAgICAgLy8gVGhlIHNlbGVjdGlvbiB0aW50IG5ldmVyIGdldHMgY2xpcHBlZCBieSBi
b3JkZXItcmFkaXVzIHJvdW5kaW5nLCBzaW5jZSB3ZSB3YW50IGl0IHRvIHJ1biByaWdodCB1cCB0
byB0aGUgZWRnZXMgb2YKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIFJlbmRlclJlcGxhY2VkOjpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogICAgIGlmIChkcmF3U2VsZWN0aW9uVGludCkgewogICAgICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblBhaW50aW5nUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxlY3Rp
b25QYWludGluZ1JlY3QubW92ZUJ5KGFkanVzdGVkUGFpbnRPZmZzZXQpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUGFpbnRpbmdS
ZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxl
Y3Rpb25QYWludGluZ1JlY3QpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlcGxpY2EuY3BwCmluZGV4IDM3NzIwZmUzODljMTkzNmM4ZGUyNjVkYzZlYzRhMWZiY2QyMDcz
M2YuLjYxZDBhMTdiMzhhMTk4ZDJmY2RmMGUwNmRhYjQyN2UyNjIxMmQ5ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9p
ZCBSZW5kZXJSZXBsaWNhOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICBSZW5kZXJMYXllciogcm9vdFBhaW50aW5nTGF5
ZXIgPSBsYXllcigpLT50cmFuc2Zvcm0oKSA/IGxheWVyKCktPnBhcmVudCgpIDogbGF5ZXIoKS0+
ZW5jbG9zaW5nVHJhbnNmb3JtZWRBbmNlc3RvcigpOwogICAgICAgICBSZW5kZXJMYXllcjo6TGF5
ZXJQYWludGluZ0luZm8gcGFpbnRpbmdJbmZvKHJvb3RQYWludGluZ0xheWVyLCBwYWludEluZm8u
cmVjdCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgTGF5b3V0U2l6ZSgpLCAwKTsKICAgICAgICAgUmVu
ZGVyTGF5ZXI6OlBhaW50TGF5ZXJGbGFncyBmbGFncyA9IFJlbmRlckxheWVyOjpQYWludExheWVy
SGF2ZVRyYW5zcGFyZW5jeSB8IFJlbmRlckxheWVyOjpQYWludExheWVyQXBwbGllZFRyYW5zZm9y
bSB8IFJlbmRlckxheWVyOjpQYWludExheWVyVGVtcG9yYXJ5Q2xpcFJlY3RzIHwgUmVuZGVyTGF5
ZXI6OlBhaW50TGF5ZXJQYWludGluZ1JlZmxlY3Rpb247Ci0gICAgICAgIGxheWVyKCktPnBhcmVu
dCgpLT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0LCBwYWludGluZ0luZm8sIGZsYWdzKTsK
KyAgICAgICAgbGF5ZXIoKS0+cGFyZW50KCktPnBhaW50TGF5ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSwgcGFpbnRpbmdJbmZvLCBmbGFncyk7CiAgICAgfSBlbHNlIGlmIChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZU1hc2spCiAgICAgICAgIHBhaW50TWFzayhwYWludEluZm8sIGFkanVzdGVk
UGFpbnRPZmZzZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmNwcAppbmRleCBjMzY0MTBkNTcyMDUyMmUxZGI5ZjI0ZjgwMDg5MzYwODA1NTk5ODQ3Li4y
NzdkYWM4ZGZhNGNjM2EzM2VlYWRkMjdlMWYxZTgzNjJiM2M2MDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcApAQCAtMTAyLDkgKzEwMiw5IEBAIHZv
aWQgUmVuZGVyU2Nyb2xsYmFyOjpzdHlsZUNoYW5nZWQoKQogICAgIHVwZGF0ZVNjcm9sbGJhclBh
cnRzKCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJh
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KQogewotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAg
aWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3Jv
bGxiYXJQYXJ0cygpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjUyLDcgKzI1Miw3IEBA
IHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjp1cGRhdGVTY3JvbGxiYXJQYXJ0KFNjcm9sbGJhclBhcnQg
cGFydFR5cGUpCiAgICAgfQogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBj
b25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBwYXJ0UmVuZGVy
ZXIgPSBtX3BhcnRzLmdldChwYXJ0VHlwZSk7CiAgICAgaWYgKCFwYXJ0UmVuZGVyZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZjZjODVjOTc3YzBi
NGJmZDNlZmI2OThhZGJiYWNkZDAwMDc5N2Q0Ni4uZjI3ZWMwM2JiYjA5MDc4MGQ0MmUzNDdiNmMy
M2FhNGQ2ZDhjMDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJCb3gqIG93bmluZ1Jl
bmRlcmVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIHBhaW50UGFydChHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJQYXJ0LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFBhcnQoR3JhcGhp
Y3NDb250ZXh0JiwgU2Nyb2xsYmFyUGFydCwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgSW50UmVj
dCBidXR0b25SZWN0KFNjcm9sbGJhclBhcnQpOwogICAgIEludFJlY3QgdHJhY2tSZWN0KGludCBz
dGFydExlbmd0aCwgaW50IGVuZExlbmd0aCk7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEhvdmVyZWRQ
YXJ0KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzc2Vk
UGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAppbmRleCAxZDcxYTg5YjFjY2Q5ODVkMjYzZmMy
ZTJhMGU1Mzg3Nzg5MjUzOTAzLi4wY2JlYzBmYzkzNGYxNmVkZWYxNDUwZDg1MDQ3NDA1MmE3ZGYw
OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuY3BwCkBAIC0xNTUsMjMgKzE1NSwyMyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6Omlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlYwogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQs
IGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50
SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICAvLyBNYWtl
IHN1cmUgb3VyIGRpbWVuc2lvbnMgbWF0Y2ggdGhlIHJlY3QuCiAgICAgc2V0TG9jYXRpb24ocmVj
dC5sb2NhdGlvbigpIC0gdG9MYXlvdXRTaXplKHBhaW50T2Zmc2V0KSk7CiAgICAgc2V0V2lkdGgo
cmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAKLSAgICBpZiAo
Z3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIXN0eWxlKCkub3BhY2l0eSgp
KQorICAgIGlmIChncmFwaGljc0NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZSgp
Lm9wYWNpdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgZG9uJ3QgdXNlIFJlbmRl
ckxheWVycyBmb3Igc2Nyb2xsYmFyIHBhcnRzLCBzbyB3ZSBuZWVkIHRvIGhhbmRsZSBvcGFjaXR5
IGhlcmUuCiAgICAgLy8gT3BhY2l0eSBmb3IgU2Nyb2xsYmFyQkdQYXJ0IGlzIGhhbmRsZWQgYnkg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OndpbGxQYWludFNjcm9sbGJhcigpLgogICAgIGJvb2wgbmVl
ZHNUcmFuc3BhcmVuY3lMYXllciA9IG1fcGFydCAhPSBTY3JvbGxiYXJCR1BhcnQgJiYgc3R5bGUo
KS5vcGFjaXR5KCkgPCAxOwogICAgIGlmIChuZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAg
ICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNs
aXAocmVjdCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cihzdHlsZSgpLm9wYWNpdHkoKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zYXZlKCk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihzdHlsZSgpLm9wYWNpdHkoKSk7CiAgICAgfQogICAg
IAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCkBAIC0xODcsOCArMTg3LDggQEAgdm9pZCBSZW5k
ZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdAogICAgIHBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAg
aWYgKG5lZWRzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAppbmRleCA3YTcxZmE3MzlmOGQ4
NTExYzQ5NGEwMDRhNDM5MzM3MmYxMzQzMWNhLi44NjU5OTE0MmE5ZmNiYWUyYzU4ZTg1YjBkMGRi
MTgyN2RhZDlhZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogICAgIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2
b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0Jik7CiAKICAgICAvLyBTY3JvbGxiYXIgcGFydHMgbmVlZHMgdG8gYmUg
cmVuZGVyZWQgYXQgZGV2aWNlIHBpeGVsIGJvdW5kYXJpZXMuCiAgICAgdmlydHVhbCBMYXlvdXRV
bml0IG1hcmdpblRvcCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1f
bWFyZ2luQm94LnRvcCgpKSk7IHJldHVybiBtX21hcmdpbkJveC50b3AoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKaW5kZXggMDlk
OTY1MjE4ZTg3NWVkNjc0YTRiY2EzNzJmOGI5YjVlYTI4Mzc4YS4uZGI1Mjg4ZmRjNWU1NTI2YTQz
ZjBhYmVmYjk3ZDk2Y2ZkNGQwODZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0xMjUsMzUgKzEyNSwzNSBAQCB2b2lkIFJl
bmRlclNjcm9sbGJhclRoZW1lOjpkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFNjcm9sbGJhcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBh
aW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGNvcm5lclJlY3QpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KLSAg
ICBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xs
YmFyJiBzY3JvbGxiYXIpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxi
YXIpLnBhaW50UGFydCgmY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXIuZnJhbWVS
ZWN0KCkpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBh
cnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXIuZnJhbWVSZWN0KCkpOwogfQog
CiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBh
cnQoJmNvbnRleHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3Jv
bGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsK
IH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+
KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZjb250ZXh0LCBwYXJ0LCByZWN0KTsKKyAgICBkb3duY2Fz
dDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJl
Y3QpOwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRvbihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CisgICAgZG93bmNh
c3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCBy
ZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBh
cnQoJmNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xs
YmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQog
CiB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRl
eCA0N2YwZjgwMzNlYjA5NGMwNGQxOTQzYWVmNjc4NDFlZjk2NDE4MjA4Li5mN2U0MTlkMDVhMWI0
MzE0NzdjZDU1NTJmOGM2ZGMzMGRjOWU5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Ny
b2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3Kiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXImIHNjcm9sbGJh
ciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVu
dCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IDQ1NWZjZTg5MjlkMDVmMmVhMTAxM2Y3M2U3ZmUzZWJi
N2Q5NDk5OGUuLmJkMWE5ZDUxZDI1YjNkODljNDFhMDkxMDI5YTg5MzRlMWRkNjQ1MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0lu
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBh
aW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYg
KCFjV2lkdGggfHwgIWNIZWlnaHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRT
aXplKGNXaWR0aCwgY0hlaWdodCk7CiAgICAgTGF5b3V0UG9pbnQgY29udGVudExvY2F0aW9uID0g
bG9jYXRpb24oKSArIHBhaW50T2Zmc2V0OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VP
cmllbnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5
bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQu
ZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2Fs
aW5nKSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0
Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGM3MGE0
ZDEyMDA3YTg0MjdjMjljMjU0NjI1N2QzNWEzMDU3MzIwYTYuLjQ4NTU5NWExYjgwNjRhNjMyZjlm
ODUzNDRkOWNlMWY4ZDYzOTZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcApAQCAtNzQ5LDcgKzc0OSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OnBhaW50Qm94RGVj
b3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwCiAgICAg
TGF5b3V0UmVjdCByZWN0KHBhaW50T2Zmc2V0LCBzaXplKCkpOwogICAgIHN1YnRyYWN0Q2FwdGlv
blJlY3QocmVjdCk7CiAKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFu
Y2UgPSBkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQp
OworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSA9IGRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAo
IWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChyZWN0LmxvY2F0aW9uKCksIGJs
ZWVkQXZvaWRhbmNlKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCByZWN0LCBz
dHlsZSgpLCBOb3JtYWwpOwogICAgIHBhaW50QmFja2dyb3VuZChwYWludEluZm8sIHJlY3QsIGJs
ZWVkQXZvaWRhbmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAKaW5kZXggMTdlNWFjNDU0MGI0NzNiYWU2ZmE2ZjliNTc1MzZlNGM0MzRkODY1Ny4uMTE1
ZmZjNzk3NDg2Yjc5YTlmY2M0OGM4YjdjMDg2OWM2YzdjZDhmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyMDEsOCArMTIwMSw4IEBAIHZv
aWQgUmVuZGVyVGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmRlcnMoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgaWYgKHBhaW50UmVjdC5tYXhZKCkgKyB0YWJsZSgp
LT5vdXRlckJvcmRlckJvdHRvbSgpIDw9IGxvY2FsUmVwYWludFJlY3QueSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0OwotICAgIGlmICghdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkgfHwgZ3Jh
cGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmICghdGFibGUoKS0+
Y3VycmVudEJvcmRlclZhbHVlKCkgfHwgZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlRm9yQ2Vs
bEZsb3cgPSB0aGlzLT5zdHlsZUZvckNlbGxGbG93KCk7CkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCB2
b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIAogICAgIGZvciAoQ29sbGFwc2VkQm9yZGVyKiBi
b3JkZXIgPSBib3JkZXJzLm5leHRCb3JkZXIoKTsgYm9yZGVyOyBib3JkZXIgPSBib3JkZXJzLm5l
eHRCb3JkZXIoKSkgewogICAgICAgICBpZiAoYm9yZGVyLT5ib3JkZXJWYWx1ZS5pc1NhbWVJZ25v
cmluZ0NvbG9yKCp0YWJsZSgpLT5jdXJyZW50Qm9yZGVyVmFsdWUoKSkpCi0gICAgICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
Ym9yZGVyLT54MSwgYm9yZGVyLT55MSksIEZsb2F0UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55
MikpLCBib3JkZXItPnNpZGUsCisgICAgICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhp
Y3NDb250ZXh0LCBGbG9hdFJlY3QoRmxvYXRQb2ludChib3JkZXItPngxLCBib3JkZXItPnkxKSwg
RmxvYXRQb2ludChib3JkZXItPngyLCBib3JkZXItPnkyKSksIGJvcmRlci0+c2lkZSwKICAgICAg
ICAgICAgICAgICBib3JkZXItPmJvcmRlclZhbHVlLmNvbG9yKCksIGJvcmRlci0+c3R5bGUsIDAs
IDAsIGFudGlhbGlhcyk7CiAgICAgfQogfQpAQCAtMTI3NSwxMSArMTI3NSwxMSBAQCB2b2lkIFJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheQogICAgICAgICAvLyBXZSBoYXZlIHRvIGNsaXAgaGVyZSBiZWNhdXNl
IHRoZSBiYWNrZ3JvdW5kIHdvdWxkIHBhaW50CiAgICAgICAgIC8vIG9uIHRvcCBvZiB0aGUgYm9y
ZGVycyBvdGhlcndpc2UuICBUaGlzIG9ubHkgbWF0dGVycyBmb3IgY2VsbHMgYW5kIHJvd3MuCiAg
ICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IGJhY2tncm91bmRPYmplY3QtPmhhc0xheWVyKCkgJiYg
KGJhY2tncm91bmRPYmplY3QgPT0gdGhpcyB8fCBiYWNrZ3JvdW5kT2JqZWN0ID09IHBhcmVudCgp
KSAmJiB0YWJsZUVsdC0+Y29sbGFwc2VCb3JkZXJzKCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIHNob3VsZENsaXApOwor
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSwgc2hvdWxkQ2xpcCk7CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAg
ICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgYm9yZGVy
TGVmdCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAgICAgICAg
ICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpLCBoZWlnaHQoKSAt
IGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5j
bGlwKGNsaXBSZWN0KTsKICAgICAgICAgfQogICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJ
bmZvLCBjLCBiZ0xheWVyLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNuYXBwZWRJ
bnRSZWN0KGZyYW1lUmVjdCgpKS5zaXplKCkpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGM5MTBhYjZmNmFiMDY5
YmE0YjYzMjUyMjRmZWEwMDEyYzQ2ZjdlNTMuLjNlOWQ4YTVmYjFjYWJjOTEwZDI4NGRhMTVmM2Rk
NzBlNGM2YWM4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlv
bjo6cGFpbnRSb3dHcm91cEJvcmRlcihjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgYm9vbCBh
bgogICAgIHJlY3QuaW50ZXJzZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICBpZiAocmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKnBhaW50SW5m
by5jb250ZXh0LCByZWN0LCBzaWRlLCBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihib3Jk
ZXJDb2xvciksIGJvcmRlclN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOworICAgIGRyYXdMaW5lRm9y
Qm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCByZWN0LCBzaWRlLCBzdHlsZSgpLnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihib3JkZXJDb2xvciksIGJvcmRlclN0eWxlLCAwLCAwLCBhbnRpYWxpYXMp
OwogfQogCiBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpvZmZzZXRMZWZ0Rm9yUm93R3JvdXBCb3Jk
ZXIoUmVuZGVyVGFibGVDZWxsKiBjZWxsLCBjb25zdCBMYXlvdXRSZWN0JiByb3dHcm91cFJlY3Qs
IHVuc2lnbmVkIHJvdykKQEAgLTExNjksMTEgKzExNjksMTEgQEAgdm9pZCBSZW5kZXJUYWJsZVNl
Y3Rpb246OnBhaW50Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmYKIHsKICAgICBpZiAodGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCktPnByZWNlZGVu
Y2UoKSA+IEJST1dHUk9VUCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChwYWludEluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKLSAgICBib29sIGFudGlhbGlhcyA9IHNob3VsZEFu
dGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBib29sIGFudGlhbGlhcyA9IHNo
b3VsZEFudGlhbGlhc0xpbmVzKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIExheW91dFJlY3Qg
cm93R3JvdXBSZWN0ID0gTGF5b3V0UmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICByb3dH
cm91cFJlY3QubW92ZUJ5KC1MYXlvdXRQb2ludChvdXRlckJvcmRlckxlZnQoJnN0eWxlKSwgKGJv
cmRlclNpZGUgPT0gQlNSaWdodCkgPyAwIDogb3V0ZXJCb3JkZXJUb3AoJnN0eWxlKSkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCA3YTJiOTc2Y2Q2OTky
YmU1MmI2MDBmNjBiZGI0MDZmNWZlNjRjMTBjLi5kY2FjNGZhNzMxNmVjMzViMGU2MWJjMjAwZDgy
MjFlYTYwMjNlMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAK
QEAgLTI2NywxMiArMjY3LDEyIEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgLy8gSWYg
cGFpbnRpbmcgaXMgZGlzYWJsZWQsIGJ1dCB3ZSBhcmVuJ3QgdXBkYXRpbmcgY29udHJvbCB0aW50
cywgdGhlbiBqdXN0IGJhaWwuCiAgICAgLy8gSWYgd2UgYXJlIHVwZGF0aW5nIGNvbnRyb2wgdGlu
dHMsIGp1c3Qgc2NoZWR1bGUgYSByZXBhaW50IGlmIHRoZSB0aGVtZSBzdXBwb3J0cyB0aW50aW5n
CiAgICAgLy8gZm9yIHRoYXQgY29udHJvbC4KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnVw
ZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS51cGRh
dGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgIGlmIChjb250cm9sU3VwcG9ydHNUaW50cyhi
b3gpKQogICAgICAgICAgICAgYm94LnJlcGFpbnQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAg
ICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBib3guc3R5bGUoKS5hcHBlYXJh
bmNlKCk7CkBAIC0yOTIsNyArMjkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnQoY29uc3Qg
UmVuZGVyQm94JiBib3gsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIGNvbnMKICAgICBj
YXNlIEJ1dHRvblBhcnQ6CiAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgogICAgICAgICB1
cGRhdGVDb250cm9sU3RhdGVzRm9yUmVuZGVyZXIoYm94LCBjb250cm9sU3RhdGVzKTsKLSAgICAg
ICAgbV90aGVtZS0+cGFpbnQocGFydCwgY29udHJvbFN0YXRlcywgY29uc3RfY2FzdDxHcmFwaGlj
c0NvbnRleHQqPihwYWludEluZm8uY29udGV4dCksIGRldmljZVBpeGVsU25hcHBlZFJlY3QsIGJv
eC5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwgJmJveC52aWV3KCkuZnJhbWVWaWV3KCksIGRldmlj
ZVNjYWxlRmFjdG9yLCBwYWdlU2NhbGVGYWN0b3IpOworICAgICAgICBtX3RoZW1lLT5wYWludChw
YXJ0LCBjb250cm9sU3RhdGVzLCBwYWludEluZm8uY29udGV4dCgpLCBkZXZpY2VQaXhlbFNuYXBw
ZWRSZWN0LCBib3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmll
dygpLCBkZXZpY2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDExLDcgKzQxMSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRlckJveCYgYm94LCBDb250cm9sU3Rh
dGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAKIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVy
T25seShjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC00
NjUsNyArNDY1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZTo6cGFpbnRCb3JkZXJPbmx5KGNvbnN0IFJl
bmRlckJveCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW4KIAogYm9vbCBSZW5kZXJUaGVt
ZTo6cGFpbnREZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKHBhaW50SW5m
by5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0
KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBJbnRS
ZWN0IGludGVncmFsU25hcHBlZFJlY3QgPSBzbmFwcGVkSW50UmVjdChyZWN0KTsKQEAgLTEwNTMs
OCArMTA1Myw4IEBAIHZvaWQgUmVuZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgICAgIHRpY2tSZWdpb25X
aWR0aCA9IHRyYWNrQm91bmRzLmhlaWdodCgpIC0gdGh1bWJTaXplLndpZHRoKCk7CiAgICAgfQog
ICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4
dCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihvLnN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogbm9kZSA9IG9wdGlvbnMtPml0ZW0o
aSk7IGkrKykgewogICAgICAgICBBU1NFUlQoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KCpub2RlKSk7
CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb25FbGVtZW50ID0gZG93bmNhc3Q8SFRN
TE9wdGlvbkVsZW1lbnQ+KCpub2RlKTsKQEAgLTEwNjksNyArMTA2OSw3IEBAIHZvaWQgUmVuZGVy
VGhlbWU6OnBhaW50U2xpZGVyVGlja3MoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50CiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRYKHRpY2tQb3NpdGlvbik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHRpY2tSZWN0LnNldFkodGlja1Bvc2l0aW9uKTsKLSAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRpY2tSZWN0KTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdCh0aWNrUmVjdCk7CiAgICAgfQogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCBkMGZjYWQ2
OTYyMzRiM2RkZWU3MjQ1Y2Q5ODRkYjBlNDY4YWM3OWFiLi5iYWMxZDZmMjEwMGE1OTU3ZjMxMDAz
NGY5Mzc1YzljYTY0NjlmMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUVmbC5jcHAKQEAgLTM3Niw3ICszNzYsNyBAQCBib29sIFJlbmRlclRoZW1lRWZsOjpwYWlu
dFRoZW1lUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCwgRm9ybVR5cGUgdHlwZSwgYwog
ICAgIGVkamVfb2JqZWN0X21lc3NhZ2Vfc2lnbmFsX3Byb2Nlc3MoZW50cnktPmVkamUoKSk7CiAg
ICAgZXZhc19yZW5kZXIoZWNvcmVfZXZhc19nZXQoZW50cnktPmNhbnZhcygpKSk7CiAKLSAgICBj
YWlyb190KiBjYWlybyA9IGluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7Cisg
ICAgY2Fpcm9fdCogY2Fpcm8gPSBpbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KTsKICAgICBBU1NFUlQoY2Fpcm8pOwogCiAgICAgY2Fpcm9fc2F2ZShjYWlybyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRleCAxODZiNzYwMTQ5ZTZh
ZWU2MGMwZGFjYjc0MjJlOTA1NzQyODc2MWIxLi5mZWZiYjI0YjU2NDgyNGUzNDYzOWM1MTkwOWVk
M2YwNmM3ZDM5MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHAKQEAgLTUyNiwxNiArNTI2LDE2IEBAIHN0YXRpYyB2b2lkIHBhaW50VG9nZ2xlKGNvbnN0
IFJlbmRlclRoZW1lR3RrKiB0aGVtZSwgR1R5cGUgd2lkZ2V0VHlwZSwgY29uc3QgUmVuCiAgICAg
Z3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRl
RmxhZ3M+KGZsYWdzKSk7CiAKICAgICBpZiAod2lkZ2V0VHlwZSA9PSBHVEtfVFlQRV9DSEVDS19C
VVRUT04pCi0gICAgICAgIGd0a19yZW5kZXJfY2hlY2soY29udGV4dCwgcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfY2hlY2soY29udGV4dCwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJl
Y3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGVsc2UKLSAgICAgICAg
Z3RrX3JlbmRlcl9vcHRpb24oY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmICh0aGVtZS0+aXNGb2N1c2VkKHJlbmRl
ck9iamVjdCkpIHsKICAgICAgICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0KHJlY3QpOwogICAgICAg
ICBnaW50IGluZGljYXRvclNwYWNpbmc7CiAgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9z
dHlsZShjb250ZXh0LCAiaW5kaWNhdG9yLXNwYWNpbmciLCAmaW5kaWNhdG9yU3BhY2luZywgbnVs
bHB0cik7CiAgICAgICAgIGluZGljYXRvclJlY3QuaW5mbGF0ZShpbmRpY2F0b3JTcGFjaW5nKTsK
LSAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmNyKCksIGluZGljYXRvclJlY3QueCgpLCBpbmRpY2F0b3JSZWN0Lnko
KSwKKyAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5kaWNhdG9yUmVj
dC55KCksCiAgICAgICAgICAgICBpbmRpY2F0b3JSZWN0LndpZHRoKCksIGluZGljYXRvclJlY3Qu
aGVpZ2h0KCkpOwogICAgIH0KIApAQCAtNTk0LDggKzU5NCw4IEBAIHN0YXRpYyB2b2lkIHJlbmRl
ckJ1dHRvbihSZW5kZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgY29u
c3QgUmVuCiAgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBHVEtf
U1RZTEVfQ0xBU1NfREVGQVVMVCk7CiAgICAgfQogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5k
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0
dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJl
Y3QuaGVpZ2h0KCkpOwotICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVj
dC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3Rr
X3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVj
dC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNv
bnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRv
blJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0
LmhlaWdodCgpKTsKIAogICAgIGlmICh0aGVtZS0+aXNGb2N1c2VkKHJlbmRlck9iamVjdCkpIHsK
ICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKQEAgLTYyNyw3ICs2MjcsNyBAQCBz
dGF0aWMgdm9pZCByZW5kZXJCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHlsZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFJlbgogICAgICAgICAgICAgYnV0dG9uUmVjdC5tb3ZlKGNoaWxk
RGlzcGxhY2VtZW50WCwgY2hpbGREaXNwbGFjZW1lbnRZKTsKICAgICAgICAgfQogCi0gICAgICAg
IGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qu
d2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGd0a19yZW5kZXJfZm9jdXMo
Y29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0
dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJl
Y3QuaGVpZ2h0KCkpOwogICAgIH0KIH0KIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50QnV0dG9u
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTc0NCw3ICs3NDQsNyBAQCBib29sIFJlbmRl
clRoZW1lR3RrOjpwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0
LCBjb25zdCBQYWludAogICAgIC8vIEZJWE1FOiBhZG9wdCBzdWJwaXhlbCB0aGVtZXMuCiAgICAg
SW50UmVjdCByZWN0ID0gSW50UmVjdChyKTsKIAotICAgIGNhaXJvX3QqIGNhaXJvQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190
KiBjYWlyb0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpOwogICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8R3RrVGV4
dERpcmVjdGlvbj4oZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rp
b24oKSkpOwogCiAgICAgLy8gUGFpbnQgdGhlIGJ1dHRvbi4KQEAgLTg4MCw4ICs4ODAsOCBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlck9iamVjdCwgY29uc3QgUGFpbgogICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19G
T0NVU0VEOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNf
Y2FzdDxHdGtTdGF0ZUZsYWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5k
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIGd0a19y
ZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmIChpc0ZvY3VzZWQocmVuZGVy
T2JqZWN0KSAmJiBpc0VuYWJsZWQocmVuZGVyT2JqZWN0KSkgewogICAgICAgICBnYm9vbGVhbiBp
bnRlcmlvckZvY3VzOwpAQCAtODkwLDcgKzg5MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWlu
CiAgICAgICAgIGlmICghaW50ZXJpb3JGb2N1cykgewogICAgICAgICAgICAgSW50UmVjdCBmb2N1
c1JlY3QocmVjdCk7CiAgICAgICAgICAgICBmb2N1c1JlY3QuaW5mbGF0ZShmb2N1c1dpZHRoICsg
Zm9jdXNQYWQpOwotICAgICAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCksIGZvY3Vz
UmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOworICAgICAg
ICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1Jl
Y3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
OTA0LDcgKzkwNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4dEFyZWEoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvCiAgICAgcmV0dXJuIHBhaW50
VGV4dEZpZWxkKG8sIGksIHIpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29uc3QgSW50UmVj
dCYgaWNvblJlY3QpCitzdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29uc3QgSW50UmVjdCYgaWNvblJlY3Qp
CiB7CiAgICAgSW50U2l6ZSBpY29uU2l6ZShnZGtfcGl4YnVmX2dldF93aWR0aChpY29uKSwgZ2Rr
X3BpeGJ1Zl9nZXRfaGVpZ2h0KGljb24pKTsKICAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gc2NhbGVk
SWNvbjsKQEAgLTkxNCw3ICs5MTQsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdka1BpeGJ1ZihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEdka1BpeGJ1ZiogaWNvbiwgY29ucwogICAgICAg
ICBpY29uID0gc2NhbGVkSWNvbi5nZXQoKTsKICAgICB9CiAKLSAgICBjYWlyb190KiBjciA9IGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNhaXJvX3QqIGNyID0gY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBnZGtf
Y2Fpcm9fc2V0X3NvdXJjZV9waXhidWYoY3IsIGljb24sIGljb25SZWN0LngoKSwgaWNvblJlY3Qu
eSgpKTsKICAgICBjYWlyb19wYWludChjcik7CkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0
IFJlbmRlck9iamVjdCYgcgogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVjdC5z
dHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMsIHJlbmRlck9i
amVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVpZ2h0KCkpKTsK
LSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQoKSwgaWNvblJl
Y3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGljb24uZ2V0KCks
IGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwMjcsNyArMTAyNyw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplCiAgICAgICAgIGd0a1RleHREaXJlY3Rpb24ocmVuZGVy
T2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLAogICAgICAgICBndGtJY29uU3RhdGUodGhpcywg
cmVuZGVyT2JqZWN0KSwKICAgICAgICAgZ2V0SWNvblNpemVGb3JQaXhlbFNpemUocmVjdC5oZWln
aHQoKSkpOwotICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgp
LCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNv
bi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTA0Nyw3ICsx
MDQ3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRDYXBzTG9ja0luZGljYXRvcihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY28KIHsKICAgICAvLyBUaGUgb3RoZXIgcGFp
bnQgbWV0aG9kcyBkb24ndCBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgcGFpbnRpbmcgaXMgZGlzYWJs
ZWQgYmVjYXVzZSBSZW5kZXJUaGVtZSBhbHJlYWR5IGNoZWNrcyBpdAogICAgIC8vIGJlZm9yZSBj
YWxsaW5nIHRoZW0sIGJ1dCBwYWludENhcHNMb2NrSW5kaWNhdG9yKCkgaXMgY2FsbGVkIGJ5IFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZSB3aGljaCBkb2Vzbid0IGNoZWNrIGl0LgotICAgIGlm
IChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludElu
Zm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBpbnQgaWNvblNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OwpAQCAtMTA2Myw3ICsxMDYzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRDYXBzTG9j
a0luZGljYXRvcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY28KICAgICAgICAg
cmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBpY29uU2l6ZSwKICAgICAgICAgcmVjdC55KCkgKyAo
cmVjdC5oZWlnaHQoKSAtIGljb25TaXplKSAvIDIsCiAgICAgICAgIGljb25TaXplLCBpY29uU2l6
ZSk7Ci0gICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGlj
b25SZWN0KTsKKyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdl
dCgpLCBpY29uUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMDIsMTUgKzExMDIs
MTUgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBpZiAoIWlzRW5hYmxlZChyZW5kZXJP
YmplY3QpKQogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgR1RL
X1NUQVRFX0ZMQUdfSU5TRU5TSVRJVkUpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNv
bnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54
KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIGd0a19yZW5k
ZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKIAogICAgIGlmIChpc0ZvY3VzZWQocmVuZGVyT2Jq
ZWN0KSkgewogICAgICAgICBnaW50IGZvY3VzV2lkdGgsIGZvY3VzUGFkOwogICAgICAgICBndGtf
c3R5bGVfY29udGV4dF9nZXRfc3R5bGUoY29udGV4dCwgImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9j
dXNXaWR0aCwgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQsIG51bGxwdHIpOwogICAgICAgICBJ
bnRSZWN0IGZvY3VzUmVjdChyZWN0KTsKICAgICAgICAgZm9jdXNSZWN0LmluZmxhdGUoZm9jdXNX
aWR0aCArIGZvY3VzUGFkKTsKLSAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCksIGZv
Y3VzUmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOworICAg
ICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIGZvY3VzUmVjdC54KCksIGZvY3VzUmVjdC55KCksIGZvY3VzUmVj
dC53aWR0aCgpLCBmb2N1c1JlY3QuaGVpZ2h0KCkpOwogICAgIH0KIAogICAgIGd0a19zdHlsZV9j
b250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBib29sIFJlbmRl
clRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0LCBjb25zdCBQYQogICAgICAgICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19BQ1RJVkU7CiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0
YXRlRmxhZ3M+KGZsYWdzKSk7CiAKLSAgICBndGtfcmVuZGVyX3NsaWRlcihjb250ZXh0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAorICAgIGd0a19yZW5kZXJfc2xpZGVyKGNv
bnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3Qu
eCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAogICAgICAgICBwYXJ0
ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRB
TCA6IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9y
ZXN0b3JlKGNvbnRleHQpOwpAQCAtMTE3NCw4ICsxMTc0LDggQEAgYm9vbCBSZW5kZXJUaGVtZUd0
azo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29u
c3QgUGEKIAogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBHVEtfU1RZ
TEVfQ0xBU1NfVFJPVUdIKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBw
YWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1l
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVj
dC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19y
ZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRl
eHQpOwogCkBAIC0xMTkzLDcgKzExOTMsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAg
IHByb2dyZXNzUmVjdCA9IFJlbmRlclRoZW1lR3RrOjpjYWxjdWxhdGVQcm9ncmVzc1JlY3QocmVu
ZGVyT2JqZWN0LCBwcm9ncmVzc1JlY3QpOwogCiAgICAgaWYgKCFwcm9ncmVzc1JlY3QuaXNFbXB0
eSgpKQotICAgICAgICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcHJvZ3Jlc3NSZWN0LngoKSwgcHJvZ3Jlc3NS
ZWN0LnkoKSwgcHJvZ3Jlc3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWlnaHQoKSk7Cisg
ICAgICAgIGd0a19yZW5kZXJfYWN0aXZpdHkoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcHJvZ3Jlc3NSZWN0LngoKSwgcHJvZ3Jlc3NSZWN0Lnko
KSwgcHJvZ3Jlc3NSZWN0LndpZHRoKCksIHByb2dyZXNzUmVjdC5oZWlnaHQoKSk7CiAKICAgICBn
dGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwogICAgIHJldHVybiBmYWxzZTsKQEAg
LTEyNTYsOCArMTI1Niw4IEBAIHN0YXRpYyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJlbmRl
clRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgYnV0dG9uUmVj
dC5zZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAvIDIpOwogICAgIGd0a19zdHlsZV9jb250ZXh0X3Nl
dF9qdW5jdGlvbl9zaWRlcyhjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtKdW5jdGlvblNpZGVzPihq
dW5jdGlvbikpOwogCi0gICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRv
blJlY3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOwotICAg
IGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qu
d2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5k
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1
dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25S
ZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25S
ZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKIAogICAg
IC8vIFBhaW50IGFycm93IGNlbnRlcmVkIGluc2lkZSBidXR0b24uCiAgICAgLy8gVGhpcyBjb2Rl
IGlzIGJhc2VkIG9uIGd0a3NwaW5idXR0b24uYyBjb2RlLgpAQCAtMTI4Myw3ICsxMjgzLDcgQEAg
c3RhdGljIHZvaWQgcGFpbnRTcGluQXJyb3dCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtT
dHlsZUNvbnRleHQqIGNvbnRleHQsIGMKICAgICBnaW50IGhlaWdodCA9ICh3aWR0aCArIDEpIC8g
MjsKIAogICAgIGFycm93UmVjdC5tb3ZlKChhcnJvd1JlY3Qud2lkdGgoKSAtIHdpZHRoKSAvIDIs
IChhcnJvd1JlY3QuaGVpZ2h0KCkgLSBoZWlnaHQpIC8gMik7Ci0gICAgZ3RrX3JlbmRlcl9hcnJv
dyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGFu
Z2xlLCBhcnJvd1JlY3QueCgpLCBhcnJvd1JlY3QueSgpLCB3aWR0aCk7CisgICAgZ3RrX3JlbmRl
cl9hcnJvdyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5j
cigpLCBhbmdsZSwgYXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgpOwogCiAgICAg
Z3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIH0KQEAgLTE0MTcsNyArMTQxNyw3
IEBAIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZXh0cmFGdWxsU2NyZWVuU3R5bGVTaGVldCgpCiB9
CiAjZW5kaWYKIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRvbihjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBjb25zdCBjaGFy
KiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlh
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IGNoYXIqIHN5bWJvbGljSWNvbk5h
bWUsIGNvbnN0IGNoYXIqIGZhbGxiYWNrU3RvY2tJY29uTmFtZSkKIHsKICAgICBJbnRSZWN0IGlj
b25SZWN0KAogICAgICAgICByZWN0LngoKSArIChyZWN0LndpZHRoKCkgLSBtX21lZGlhSWNvblNp
emUpIC8gMiwKQEAgLTE0MzYsNyArMTQzNiw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6Omhhc093
bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihDb250cm9sUGFydCBwYXJ0KSBjb25zdAogCiBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0
LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgInZpZXctZnVsbHNjcmVlbi1zeW1ib2xpYyIsIEdU
S19TVE9DS19GVUxMU0NSRUVOKTsKKyAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJP
YmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJ2aWV3LWZ1bGxzY3JlZW4tc3ltYm9s
aWMiLCBHVEtfU1RPQ0tfRlVMTFNDUkVFTik7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50TWVkaWFNdXRlQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTE0NDYsNyAr
MTQ0Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFNdXRlQnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGJvb2wgbXV0ZWQgPSBtZWRpYUVsZW1lbnQtPm11dGVkKCk7Ci0gICAgcmV0dXJuIHBh
aW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwKKyAg
ICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0
KCksIHJlY3QsCiAgICAgICAgIG11dGVkID8gImF1ZGlvLXZvbHVtZS1tdXRlZC1zeW1ib2xpYyIg
OiAiYXVkaW8tdm9sdW1lLWhpZ2gtc3ltYm9saWMiLAogICAgICAgICBtdXRlZCA/ICJhdWRpby12
b2x1bWUtbXV0ZWQiIDogImF1ZGlvLXZvbHVtZS1oaWdoIik7CiB9CkBAIC0xNDYxLDE5ICsxNDYx
LDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9uKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBib29sIHNob3dQbGF5QnV0dG9uID0gbm9kZUhhc0NsYXNzKG5vZGUsICJwYXVzZWQiKTsKIAot
ICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRl
eHQsIHJlY3QsCisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWlu
dEluZm8uY29udGV4dCgpLCByZWN0LAogICAgICAgICBzaG93UGxheUJ1dHRvbiA/ICJtZWRpYS1w
bGF5YmFjay1zdGFydC1zeW1ib2xpYyIgOiAibWVkaWEtcGxheWJhY2stcGF1c2Utc3ltYm9saWMi
LAogICAgICAgICBzaG93UGxheUJ1dHRvbiA/IEdUS19TVE9DS19NRURJQV9QTEFZIDogR1RLX1NU
T0NLX01FRElBX1BBVVNFKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNl
ZWtCYWNrQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LCAibWVk
aWEtc2Vlay1iYWNrd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9SRVdJTkQpOworICAg
IHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQo
KSwgcmVjdCwgIm1lZGlhLXNlZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFf
UkVXSU5EKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNlZWtGb3J3YXJk
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gcGFpbnRNZWRp
YUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCByZWN0LCAibWVkaWEtc2Vl
ay1mb3J3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElBX0ZPUldBUkQpOworICAgIHJldHVy
biBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVj
dCwgIm1lZGlhLXNlZWstZm9yd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9GT1JXQVJE
KTsKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIGJv
b2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbihj
b25zdCBSZW5kZXJPYmplY3QmIHJlCiAgICAgICAgIGljb24gPSBnZXRTdG9ja1N5bWJvbGljSWNv
bkZvcldpZGdldFR5cGUoR1RLX1RZUEVfQ09OVEFJTkVSLCAidXNlci1pbnZpc2libGUtc3ltYm9s
aWMiLCBHVEtfU1RPQ0tfSlVTVElGWV9GSUxMLAogICAgICAgICAgICAgZ3RrVGV4dERpcmVjdGlv
bihyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSksIGd0a0ljb25TdGF0ZSh0aGlzLCBy
ZW5kZXJPYmplY3QpLCBpY29uUmVjdC53aWR0aCgpKTsKICAgICB9Ci0gICAgcGFpbnRHZGtQaXhi
dWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsKKyAgICBwYWludEdk
a1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgpLCBpY29uUmVjdCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTE1MDcsOSArMTUwNyw5IEBAIGJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNv
bnN0IFBhaW50SW5mCiAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owot
ICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9r
ZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsK
KyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tl
KTsKIAogICAgIGZsb2F0IG1lZGlhRHVyYXRpb24gPSBtZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCk7
CiAgICAgZmxvYXQgdG90YWxUcmFja1dpZHRoID0gci53aWR0aCgpOwpAQCAtMTUyNywxNyArMTUy
NywxNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZgogICAgICAgICByYW5nZVJlY3Quc2V0V2lk
dGgobGVuZ3RoUmF0aW8gKiB0b3RhbFRyYWNrV2lkdGgpOwogICAgICAgICBpZiAoaW5kZXgpCiAg
ICAgICAgICAgICByYW5nZVJlY3QubW92ZShzdGFydFJhdGlvICogdG90YWxUcmFja1dpZHRoLCAw
KTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmFu
Z2VSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QocmFuZ2VSZWN0LCBib3Jk
ZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCi0gICAgY29udGV4
dC0+cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAogYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRodW1iKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gby5zdHlsZSgpOwotICAgIHBhaW50SW5m
by5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRp
aUZyb21TdHlsZShzdHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5m
aWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChyLCBib3JkZXJSYWRpaUZyb21TdHlsZShz
dHlsZSkpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNTU2LDkgKzE1
NTYsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2so
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplYwogICAgIGlmICghdm9sdW1lKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0OwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VT
dHlsZShOb1N0cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0
eWxlKE5vU3Ryb2tlKTsKIAogICAgIGludCByZWN0SGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKICAg
ICBmbG9hdCB0cmFja0hlaWdodCA9IHJlY3RIZWlnaHQgKiB2b2x1bWU7CkBAIC0xNTY3LDkgKzE1
NjcsOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2so
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplYwogICAgIHZvbHVtZVJlY3QubW92ZSgwLCBy
ZWN0SGVpZ2h0IC0gdHJhY2tIZWlnaHQpOwogICAgIHZvbHVtZVJlY3Quc2V0SGVpZ2h0KGNlaWwo
dHJhY2tIZWlnaHQpKTsKIAotICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KHZvbHVtZVJlY3QsIGJvcmRlclJhZGlpRnJvbVN0eWxlKHN0eWxlKSksCisgICAgY29u
dGV4dC5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh2b2x1bWVSZWN0LCBib3JkZXJS
YWRpaUZyb21TdHlsZShzdHlsZSkpLAogICAgICAgICBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+
cmVzdG9yZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogCiAgICAgcmV0dXJuIGZhbHNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAppbmRleCA0YWNkMGE2
ZTRkNTNkYzM5NDQ0MjlhYjgwNTNlMWIxMmZiNTUxZTU4Li4xYjljMGIzMzhiZDI2YmZlZDFkMDk2
N2E2N2M0OTA4OTE5NjkyZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MuaApAQCAtMTE1LDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+UmVuZGVy
VGhlbWVJT1MoKSB7IH0KIAogICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcigpIGNvbnN0Owot
ICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJv
eCwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIEZsb2F0UmVjdCBhZGRS
b3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihDU1NW
YWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCmluZGV4IGVjNzJhZTMzOWE2MmU3ZGQ5NTAyMDcyOWExZGIyZGZmNDEwNDM3
MGYuLjcwNDdmM2Q0M2JkMWZmNmQ2MjUzYjUzMjE1ZmM4YWJlOGRhYzBmY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBj
b25zdCBDb2xvciYgUmVuZGVyVGhlbWVJT1M6OnNoYWRvd0NvbG9yKCkgY29uc3QKICAgICByZXR1
cm4gY29sb3I7CiB9CiAKLUZsb2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRlZEJvcmRl
ckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK0Zsb2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRl
ZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBUbyBmaXggaW5uZXIgYm9yZGVy
IGJsZWVkaW5nIGlzc3VlcyA8cmRhcjovL3Byb2JsZW0vOTgxMjUwNz4sIHdlIGNsaXAgdG8gdGhl
IG91dGVyIGJvcmRlciBhbmQgYXNzZXJ0IHRoYXQKICAgICAvLyB0aGUgYm9yZGVyIGlzIG9wYXF1
ZSBvciB0cmFuc3BhcmVudCwgdW5sZXNzIHdlJ3JlIGNoZWNrZWQgYmVjYXVzZSBjaGVja2VkIHJh
ZGlvL2NoZWNrYm94ZXMgc2hvdyBubyBibGVlZGluZy4KQEAgLTMzMiw5ICszMzIsOSBAQCBGbG9h
dFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRCb3JkZXJDbGlwKGNvbnN0IFJlbmRlck9i
amVjdCYgYm94LCBHcmFwaGljcwogICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IGlzQ2hlY2tlZChi
b3gpID8gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKHJlY3QpIDogc3R5bGUuZ2V0Um91
bmRlZEJvcmRlckZvcihyZWN0KTsKIAogICAgIGlmIChib3JkZXIuaXNSb3VuZGVkKCkpCi0gICAg
ICAgIGNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikpOwor
ICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikp
OwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+Y2xpcChib3JkZXIucmVjdCgpKTsKKyAgICAg
ICAgY29udGV4dC5jbGlwKGJvcmRlci5yZWN0KCkpOwogCiAgICAgaWYgKGlzQ2hlY2tlZChib3gp
KSB7CiAgICAgICAgIEFTU0VSVChzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCb3JkZXJUb3BDb2xvcikuYWxwaGEoKSAlIDI1NSA9PSAwKTsKQEAgLTM2NywxMyArMzY3LDEz
IEBAIHN0YXRpYyBDR1BvaW50IHNob3J0ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwg
ZmxvYXQgd2lkdGgpCiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0
aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0gICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRS
b3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7Cisg
ICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5j
b250ZXh0KCksIHJlY3QpOwogCiAgICAgZmxvYXQgd2lkdGggPSBjbGlwLndpZHRoKCk7CiAgICAg
ZmxvYXQgaGVpZ2h0ID0gY2xpcC5oZWlnaHQoKTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29u
dGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCks
IEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7
CiAKQEAgLTM5OCwxNSArMzk4LDE1IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2ti
b3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAgICAg
ICAgICBzaG9ydGVuZWQobGluZVsyXSwgbGluZVsxXSwgbGluZVdpZHRoIC8gNC4wZikKICAgICAg
ICAgfTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxp
bmVXaWR0aCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cigwLjBmLCAwLjBmLCAwLjBmLCAwLjdmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3Sm9pbmVkTGluZXMoc2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJl
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMoc2hhZG93LCAz
LCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkg
KiB0aGlja25lc3NSYXRpbyk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
c3RkOjptaW4oY2xpcC53aWR0aCgpLCBjbGlwLmhlaWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAx
LjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+ZHJhd0pvaW5lZExpbmVzKGxpbmUsIDMsIHRydWUpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBGbG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSAr
IGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAubWF4WSgpKTsKICAgICAgICAgZHJhd0F4aWFsR3Jh
ZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxv
Y2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJw
b2xhdGlvbik7CkBAIC00NTAsMTAgKzQ1MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1
c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbgog
CiBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAo
Ym94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlw
ID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsK
IAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAg
ICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25jYXZl
R3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4
WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAKQEAgLTQ2NSwxMCArNDY1LDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVJT1M6OnBhaW50UmFkaW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgY29uc3QgUGFpbnRJCiAgICAgICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAq
IElubmVySW52ZXJzZVJhdGlvKTsKICAgICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQo
KSAqIElubmVySW52ZXJzZVJhdGlvKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBz
aGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAg
IEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIu
MGYpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xp
cCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CiAgICAgfQogICAgIEZsb2F0UG9p
bnQgYm90dG9tQ2VudGVyKGNsaXAueCgpICsgY2xpcC53aWR0aCgpIC8gMi4wLCBjbGlwLm1heFko
KSk7CiAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNo
YWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAu
bWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC00ODEsMTUgKzQ4MSwxNSBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludFRleHRGaWVsZERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9i
amVjdCYgYm94LCBjb25zdCBQYQogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgp
OwogICAgIEZsb2F0UG9pbnQgcG9pbnQocmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgo
KSwgcmVjdC55KCkgKyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0Um91bmRlZEJv
cmRlckZvcihMYXlvdXRSZWN0KHJlY3QpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50
aW5nKGJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKExheW91
dFJlY3QocmVjdCkpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoYm94LmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgLy8gVGhpcyBncmFkaWVudCBnZXRz
IGRyYXduIGJsYWNrIHdoZW4gcHJpbnRpbmcuCiAgICAgLy8gRG8gbm90IGRyYXcgdGhlIGdyYWRp
ZW50IGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdG9wIGJvcmRlci4KICAgICBib29sIHRvcEJvcmRl
cklzSW52aXNpYmxlID0gIXN0eWxlLmhhc0JvcmRlcigpIHx8ICFzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpIHx8IHN0eWxlLmJvcmRlclRvcElzVHJhbnNwYXJlbnQoKTsKICAgICBpZiAoIWJveC52aWV3
KCkucHJpbnRpbmcoKSAmJiAhdG9wQm9yZGVySXNJbnZpc2libGUpCi0gICAgICAgIGRyYXdBeGlh
bEdyYWRpZW50KHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgZ3JhZGllbnRX
aXRoTmFtZShJbnNldEdyYWRpZW50KSwgcG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2ludE1ha2UocG9p
bnQueCgpLCBwb2ludC55KCkgKyAzLjBmKSksIExpbmVhckludGVycG9sYXRpb24pOworICAgICAg
ICBkcmF3QXhpYWxHcmFkaWVudChwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCBncmFkaWVudFdpdGhOYW1lKEluc2V0R3JhZGllbnQpLCBwb2ludCwgRmxvYXRQb2ludChDR1Bv
aW50TWFrZShwb2ludC54KCksIHBvaW50LnkoKSArIDMuMGYpKSwgTGluZWFySW50ZXJwb2xhdGlv
bik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJv
eCYgYm94LCBjb25zdAogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAg
IGZsb2F0IGJvcmRlclRvcFdpZHRoID0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9h
dFJlY3QgY2xpcChyZWN0LngoKSArIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSAr
IHN0eWxlLmJvcmRlclRvcFdpZHRoKCksIHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRX
aWR0aCgpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUu
Ym9yZGVyVG9wV2lkdGgoKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7
CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCk7CiAKICAgICBmbG9hdCBhZGp1c3RMZWZ0ID0gMC41OwogICAgIGZsb2F0IGFk
anVzdFJpZ2h0ID0gMC41OwpAQCAtNjI5LDkgKzYyOSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29u
c3QKICAgICB7CiAgICAgICAgIEZsb2F0UmVjdCB0aXRsZUNsaXAoY2xpcC54KCkgLSBhZGp1c3RM
ZWZ0LCBjbGlwLnkoKSAtIGFkanVzdFRvcCwgY2xpcC53aWR0aCgpIC0gTWVudUxpc3RCdXR0b25Q
YWRkaW5nUmlnaHQgKyBhZGp1c3RMZWZ0LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsgYWRq
dXN0Qm90dG9tKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAsCisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qo
dGl0bGVDbGlwLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlclRvcExlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVy
TGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5o
ZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRT
aXplKDAsIDApLAogICAgICAgICAgICAgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJv
cmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9y
ZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgp
KSwgRmxvYXRTaXplKDAsIDApKSk7CiAKQEAgLTY0MywxOSArNjQzLDE5IEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gm
IGJveCwgY29uc3QKIAogICAgIGZsb2F0IHNlcGFyYXRvciA9IGNsaXAubWF4WCgpIC0gTWVudUxp
c3RCdXR0b25QYWRkaW5nUmlnaHQ7CiAKLSAgICBib3guZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWlu
dEluZm8uY29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0gYm9yZGVyVG9w
V2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQb2ludChzZXBhcmF0b3IsIGNsaXAubWF4WSgpKSksIEJT
UmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5bGUoKSwgMCwgMCk7CisgICAgYm94LmRyYXdMaW5lRm9y
Qm94U2lkZShwYWludEluZm8uY29udGV4dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludChzZXBhcmF0
b3IgLSBib3JkZXJUb3BXaWR0aCwgY2xpcC55KCkpLCBGbG9hdFBvaW50KHNlcGFyYXRvciwgY2xp
cC5tYXhZKCkpKSwgQlNSaWdodCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5ib3JkZXJUb3BTdHlsZSgpLCAwLCAwKTsKIAogICAg
IEZsb2F0UmVjdCBidXR0b25DbGlwKHNlcGFyYXRvciAtIGFkanVzdFRvcCwgY2xpcC55KCkgLSBh
ZGp1c3RUb3AsIE1lbnVMaXN0QnV0dG9uUGFkZGluZ1JpZ2h0ICsgYWRqdXN0VG9wICsgYWRqdXN0
UmlnaHQsIGNsaXAuaGVpZ2h0KCkgKyBhZGp1c3RUb3AgKyBhZGp1c3RCb3R0b20pOwogCiAgICAg
Ly8gTm93IHBhaW50IHRoZSBidXR0b24gcG9ydGlvbi4KICAgICB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGJ1dHRvbkNsaXAsCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0
U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgo
KSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwg
cmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwKICAgICAgICAgICAgIEZs
b2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRv
bVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0
V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5o
ZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSkpOwog
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChidXR0b25DbGlwLCBzdHlsZS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0eWxlLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QoYnV0dG9u
Q2xpcCwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29s
b3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNv
bnRyb2woYm94KSA/IENvbmNhdmVHcmFkaWVudCA6IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xp
cC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGJ1dHRvbkNsaXAueCgpLCBidXR0b25DbGlwLm1heFko
KSksIExpbmVhckludGVycG9sYXRpb24pOwogICAgIH0KQEAgLTY3MCw3ICs2NzAsNyBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAu
eCgpICsgKGJ1dHRvbkNsaXAud2lkdGgoKSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBh
ZGRpbmcpIC8gMi4wLCBidXR0b25DbGlwLm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdSYWlzZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQiwgQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZiksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFp
c2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAg
ICAgICAgIGVsbGlwc2UubW92ZShzaXplICsgcGFkZGluZywgMCk7CiAgICAgICAgIH0KICAgICB9
ICBlbHNlIHsKQEAgLTY4OSwxMyArNjg5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAg
ICAgICAgc2hhZG93WzJdID0gRmxvYXRQb2ludChhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSAr
IDEuMGYpOwogCiAgICAgICAgIGZsb2F0IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gp
ID8gMC4yIDogMC41OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmRyYXdDb252ZXhQb2x5Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
b3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBv
bHlnb24oMywgc2hhZG93LCB0cnVlKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24o
MywgYXJyb3csIHRydWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJy
b3csIHRydWUpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTc1OSwxMyArNzU5LDEz
IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2Jq
ZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYKIAogICAgIC8vIERyYXcgdGhlIHRyYWNrIGdyYWRp
ZW50LgogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgICAgICBJbnRTaXplIGNvcm5l
clNpemUoY29ybmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CiAgICAgICAgIEZsb2F0Um91bmRlZFJl
Y3QgaW5uZXJCb3JkZXIodHJhY2tDbGlwLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJT
aXplLCBjb3JuZXJTaXplKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVk
UmVjdChpbm5lckJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5k
ZWRSZWN0KGlubmVyQm9yZGVyKTsKIAotICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAg
ICAgICAgSU9TR3JhZGllbnRSZWYgZ3JhZGllbnQgPSByZWFkb25seSA/IGdyYWRpZW50V2l0aE5h
bWUoUmVhZG9ubHlTbGlkZXJUcmFja0dyYWRpZW50KSA6IGdyYWRpZW50V2l0aE5hbWUoU2xpZGVy
VHJhY2tHcmFkaWVudCk7CiAgICAgICAgIGlmIChpc0hvcml6b250YWwpCiAgICAgICAgICAgICBk
cmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50LCB0cmFja0NsaXAubG9jYXRpb24o
KSwgRmxvYXRQb2ludCh0cmFja0NsaXAueCgpLCB0cmFja0NsaXAubWF4WSgpKSwgTGluZWFySW50
ZXJwb2xhdGlvbik7CkBAIC03NzUsMTMgKzc3NSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8m
CiAKICAgICAvLyBEcmF3IHRoZSB0cmFjayBib3JkZXIuCiAgICAgewotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0
KCkpOwogCi0gICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBw
YWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgICAgICBpZiAocmVhZG9u
bHkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3Io
MTc4LCAxNzgsIDE3OCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9y
KDc2LCA3NiwgNzYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBSZXRhaW5QdHI8
Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRlZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVN
dXRhYmxlKCkpOwogICAgICAgICBDR1BhdGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGgu
Z2V0KCksIDAsIHRyYWNrQ2xpcCwgY29ybmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC04MTIs
MTAgKzgxMiwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RTbGlkZXJUaHVtYlNpemUo
UmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW50KikgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
LSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZv
LmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRC
b3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwor
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpOwogICAgIEZsb2F0UG9pbnQgYm90dG9tQ2VudGVyKGNsaXAueCgpICsgY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5tYXhZKCkpOwogICAgIGlmIChpc1ByZXNzZWQoYm94KSkKICAg
ICAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNsaWRl
clRodW1iT3BhcXVlUHJlc3NlZEdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50
KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwpAQCAtODQ1LDE4
ICs4NDUsMTggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBjb25zdCBpbnQgcHJvZ3Jl
c3NCYXJIZWlnaHQgPSA5OwogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsT2Zmc2V0ID0gKHJlY3Qu
aGVpZ2h0KCkgLSBwcm9ncmVzc0JhckhlaWdodCkgLyAyLjA7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
aWYgKHJlY3Qud2lkdGgoKSA8IDEwIHx8IHJlY3QuaGVpZ2h0KCkgPCA5KSB7CiAgICAgICAgIC8v
IFRoZSByZWN0IGlzIHNtYWxsZXIgdGhhbiB0aGUgc3RhbmRhcmQgcHJvZ3Jlc3MgYmFyLiBXZSBj
bGlwIHRvIHRoZSBlbGVtZW50J3MgcmVjdCB0byBhdm9pZAogICAgICAgICAvLyBsZWFraW5nIHBp
eGVscyBvdXRzaWRlIHRoZSByZXBhaW50IHJlY3QuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKHJlY3QpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAocmVjdCk7CiAg
ICAgfQogCiAgICAgLy8gMSkgRHJhdyB0aGUgcHJvZ3Jlc3MgYmFyIHRyYWNrLgogICAgIC8vIDEu
MSkgRHJhdyB0aGUgd2hpdGUgYmFja2dyb3VuZCB3aXRoIGdyZXkgZ3JhZGllbnQgYm9yZGVyLgot
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwotICAgIGNv
bnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygwLjY4KTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygwLjY4KTsKKyAg
ICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0IGZsb2F0
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zmc2V0Owog
ICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZs
b2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQg
LSAxKSk7CkBAIC04NjQsMjggKzg2NCwyOCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFBy
b2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAg
IHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhl
ZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwg
MHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xv
cigweDhkLCAweDhkLCAweDhkKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoc3Ry
b2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VHcmFk
aWVudChzdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIENvbG9yU3BhY2Ug
Y29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcigyNTUsIDI1NSwgMjU1KSwgY29sb3JTcGFjZSk7CisgICAgY29u
dGV4dC5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSksIGNvbG9yU3BhY2UpOwogCiAg
ICAgUGF0aCB0cmFja1BhdGg7CiAgICAgRmxvYXRSZWN0IHRyYWNrUmVjdChyZWN0LngoKSArIDAu
MjUsIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjI1LCByZWN0LndpZHRoKCkgLSAwLjUs
IHByb2dyZXNzQmFySGVpZ2h0IC0gMC41KTsKICAgICBGbG9hdFNpemUgcm91bmRlZENvcm5lclJh
ZGl1cyg1LCA0KTsKICAgICB0cmFja1BhdGguYWRkUm91bmRlZFJlY3QodHJhY2tSZWN0LCByb3Vu
ZGVkQ29ybmVyUmFkaXVzKTsKLSAgICBjb250ZXh0LT5kcmF3UGF0aCh0cmFja1BhdGgpOworICAg
IGNvbnRleHQuZHJhd1BhdGgodHJhY2tQYXRoKTsKIAogICAgIC8vIDEuMikgRHJhdyB0b3AgZ3Jh
ZGllbnQgb24gdGhlIHVwcGVyIGhhbGYuIEl0IGlzIHN1cHBvc2VkIHRvIG92ZXJsYXkgdGhlIGZp
bGwgZnJvbSB0aGUgYmFja2dyb3VuZCBhbmQgZGFya2VyIHRoZSBzdHJva2VkIHBhdGguCiAgICAg
RmxvYXRSZWN0IGJvcmRlcihyZWN0LngoKSwgcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldCwgcmVj
dC53aWR0aCgpLCBwcm9ncmVzc0JhckhlaWdodCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1
cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5l
clJhZGl1cykpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoYm9yZGVyLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFk
aXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzKSk7CiAKICAgICBm
bG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0ID0gcHJvZ3Jlc3NCYXJIZWlnaHQgLyAyLjsKICAgICBS
ZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdo
dCAtIDEuNSkpOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDEz
MywgMTMzLCAxMzMsIDE4OCkpOwogICAgIHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAs
IENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7Ci0gICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KHVw
cGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CisgICAgY29udGV4dC5zZXRGaWxsR3JhZGll
bnQodXBwZXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAotICAgIGNvbnRleHQtPmZpbGxS
ZWN0KEZsb2F0UmVjdChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwgcmVjdC53
aWR0aCgpLCB1cHBlckdyYWRpZW50SGVpZ2h0KSk7CisgICAgY29udGV4dC5maWxsUmVjdChGbG9h
dFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwg
dXBwZXJHcmFkaWVudEhlaWdodCkpOwogCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3Mg
PSBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyZXIpOwogICAgIGlmIChyZW5kZXJQcm9n
cmVzcy5pc0RldGVybWluYXRlKCkpIHsKQEAgLTg5OSwxMyArODk5LDEzIEBAIGJvb2wgUmVuZGVy
VGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgUGFpbnRJCiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29s
b3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41
NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0
b3AoMS4wLCBDb2xvcig1NywgMTQyLCAyNDQpKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdy
YWRpZW50KGJhckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNl
dEZpbGxHcmFkaWVudChiYXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBS
ZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3Io
OTUsIDEwNywgMTgzKSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
MC41LCBDb2xvcig2NiwgMTA2LCAxNzQsIDI0MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVu
dC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRl
eHQtPnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBjb250ZXh0LnNldFN0cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJl
bGVhc2VOb25OdWxsKCkpOwogCiAgICAgICAgIFBhdGggYmFyUGF0aDsKICAgICAgICAgaW50IGxl
ZnQgPSByZWN0LngoKTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50
SQogICAgICAgICAgICAgbGVmdCA9IHJlY3QubWF4WCgpIC0gYmFyV2lkdGg7CiAgICAgICAgIEZs
b2F0UmVjdCBiYXJSZWN0KGxlZnQgKyAwLjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
MC4yNSwgc3RkOjptYXgoYmFyV2lkdGggLSAwLjUsIDAuMCksIHByb2dyZXNzQmFySGVpZ2h0IC0g
MC41KTsKICAgICAgICAgYmFyUGF0aC5hZGRSb3VuZGVkUmVjdChiYXJSZWN0LCByb3VuZGVkQ29y
bmVyUmFkaXVzKTsKLSAgICAgICAgY29udGV4dC0+ZHJhd1BhdGgoYmFyUGF0aCk7CisgICAgICAg
IGNvbnRleHQuZHJhd1BhdGgoYmFyUGF0aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTg0LDEwICs5ODQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnQKIAogYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRQdXNoQnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOwotICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBw
YWludEluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRk
Um91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGJveC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuaXNEYXJrKCkpCiAgICAgICAgIGRyYXdB
eGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCks
IGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5l
YXJJbnRlcnBvbGF0aW9uKTsKICAgICBlbHNlIHsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGNvbnN0
IGludCBrTXVsdGlwbGVUaHVtYm5haWxTaHJpbmtTaXplID0gMjsKIAogYm9vbCBSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFJlbmRlck9iamVjdCYgYnV0dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0LCBJY29uKiBpY29uLCBGaWxlVXBsb2FkRGVjb3Jh
dGlvbnMgZmlsZVVwbG9hZERlY29yYXRpb25zKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIEludFNp
emUgY29ybmVyU2l6ZShrVGh1bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzLCBrVGh1bWJuYWlsQm9y
ZGVyQ29ybmVyUmFkaXVzKTsKICAgICBDb2xvciBwaWN0dXJlRnJhbWVDb2xvciA9IGJ1dHRvblJl
bmRlcmVyLnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9w
Q29sb3IpOwpAQCAtMTAzMSwxMiArMTAzMSwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dEZpbGVVcGxvYWRJY29uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgog
CiAgICAgICAgIC8vIEJhY2tncm91bmQgcGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91
bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQgbWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29s
b3IgYmFja2dyb3VuZEltYWdlQ29sb3IgPSBDb2xvcihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QodGh1bWJuYWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29y
bmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHRodW1ibmFpbFJlY3Qs
IGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5h
aWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBj
b3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91
bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgewotICAgICAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJbmZvLmNvbnRl
eHQpOwotICAgICAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwKHRodW1ibmFpbFJlY3QpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyMihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICAgICAgICAgIENHQ29udGV4
dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwor
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKHRodW1ibmFpbFJlY3QpOwogICAg
ICAgICAgICAgaWYgKGJhY2tncm91bmRJbWFnZUNvbG9yLmlzRGFyaygpKQogICAgICAgICAgICAg
ICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb252ZXhH
cmFkaWVudCksIHRodW1ibmFpbFJlY3QubG9jYXRpb24oKSwgRmxvYXRQb2ludCh0aHVtYm5haWxS
ZWN0LngoKSwgdGh1bWJuYWlsUmVjdC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAg
ICAgICAgICAgIGVsc2UgewpAQCAtMTA1Miw4ICsxMDUyLDggQEAgYm9vbCBSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFIKICAgICB9CiAKICAgICAvLyBGb3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24u
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5l
clNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7Ci0gICAgaWNvbi0+cGFpbnQoKnBhaW50SW5mby5jb250ZXh0LCB0aHVtYm5haWxSZWN0KTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5l
clNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgaWNvbi0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgdGh1bWJuYWlsUmVjdCk7
CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KaW5kZXggZGUyMmQwMGM4NjdlNDQwMGRlNDY4MzEwNmY0ZjQ3NjIyM2UwZmZh
Mi4uZmI0ZTRjODBjODYyOTBkY2UxNmFjYWExOWRiZmI3ZDJmYTM2ZTkyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtODUwLDExICs4NTAsMTEgQEAg
TlNDb250cm9sU2l6ZSBSZW5kZXJUaGVtZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250KFJl
bmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0
RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgRmxvYXRSZWN0JiByKQogewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU1RleHRG
aWVsZENlbGwgKnRleHRGaWVsZCA9IHRoaXMtPnRleHRGaWVsZCgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
CiAgICAgW3RleHRGaWVsZCBzZXRFbmFibGVkOihpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlD
b250cm9sKG8pKV07CiAgICAgW3RleHRGaWVsZCBkcmF3V2l0aEZyYW1lOk5TUmVjdChyKSBpblZp
ZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsKQEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlclRo
ZW1lTWFjOjphZGp1c3RUZXh0RmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KgogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFRleHRBcmVhKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVj
dCYgcikKIHsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBh
aW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIHdrRHJhd0JlemVsZWRUZXh0QXJlYShy
LCBpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC05MDksNyArOTA5LDcgQEAgY29uc3QgaW50KiBSZW5kZXJUaGVtZU1hYzo6cG9w
dXBCdXR0b25QYWRkaW5nKE5TQ29udHJvbFNpemUgc2l6ZSkgY29uc3QKIAogYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQp
OworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZv
LmNvbnRleHQoKSk7CiAgICAgc2V0UG9wdXBCdXR0b25DZWxsU3RhdGUocmVuZGVyZXIsIEludFNp
emUocmVjdC5zaXplKCkpKTsKIAogICAgIE5TUG9wVXBCdXR0b25DZWxsKiBwb3B1cEJ1dHRvbiA9
IHRoaXMtPnBvcHVwQnV0dG9uKCk7CkBAIC05MjQsMTkgKzkyNCwxOSBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SW5mbwogICAgIGlmIChyZWN0LndpZHRoKCkgPj0gbWluaW11bU1lbnVMaXN0U2l6ZShy
ZW5kZXJlci5zdHlsZSgpKSkKICAgICAgICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QocmVj
dCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJnaW5zKCksIHpvb21MZXZlbCk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7
CiAKICAgICAvLyBCZWZvcmUgWW9zZW1pdGUgd2UgZGlkIG5vdCB3YW50IHRoZSBjZWxsIHRvIGV2
ZXIgZHJhdyBvdXRzaWRlIHRoZSBnaXZlbiByZWN0YW5nbGUuCiAjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA8IDEwMTAwMAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGlu
ZmxhdGVkUmVjdCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGluZmxhdGVkUmVjdCk7
CiAjZW5kaWYKIAogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICBpbmZsYXRl
ZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAg
ICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZl
bCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0Lngo
KSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZs
YXRlZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNp
emUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50
cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAK
ICAgICBwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5
KHBvcHVwQnV0dG9uLCByZW5kZXJlciwgcGFpbnRJbmZvLCBpbmZsYXRlZFJlY3QpOwpAQCAtOTY0
LDEwICs5NjQsMTAgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZXRlcihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKICAgICBpZiAoIWlzPFJlbmRl
ck1ldGVyPihyZW5kZXJPYmplY3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAKICAgICBOU0xldmVsSW5kaWNhdG9yQ2VsbCogY2VsbCA9IGxldmVsSW5kaWNh
dG9yRm9yKGRvd25jYXN0PFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpKTsKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7
CiAKICAgICBbY2VsbCBkcmF3V2l0aEZyYW1lOnJlY3QgaW5WaWV3OmRvY3VtZW50Vmlld0Zvcihy
ZW5kZXJPYmplY3QpXTsKICAgICBbY2VsbCBzZXRDb250cm9sVmlldzpuaWxdOwpAQCAtMTEzNCw3
ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICB0cmFja0luZm8ucmVzZXJ2
ZWQgPSAwOwogICAgIHRyYWNrSW5mby5maWxsZXIxID0gMDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgcGFpbnRJbmZvLmNvbnRleHQsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFj
ZURldmljZVJHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTExNDIsMTQgKzExNDIsMTQgQEAgYm9v
bCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlck9iamVjdCwgY29uc3QgUGEKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY2dDb250
ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8s
IDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7
CiAKICAgICBpZiAoIXJlbmRlclByb2dyZXNzLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoMiAqIGluZmxhdGVk
UmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qud2lkdGgoKSwgMCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zY2FsZShGbG9hdFNpemUoLTEsIDEpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS50cmFuc2xhdGUoMiAqIGluZmxhdGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qud2lkdGgo
KSwgMCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAx
KSk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9u
KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMjEwLDEwICsxMjEwLDEwIEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQCiAgICAgaWYgKHIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDb250ZXh0Q29udGFpbmVyIGNnQ29udGV4dENvbnRhaW5lcihwYWludEluZm8uY29udGV4dCk7
CisgICAgQ29udGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWluZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29u
dGV4dCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgRmxvYXRSb3VuZGVkUmVjdCBib3JkZXIgPSBG
bG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBp
bnQgcmFkaXVzID0gYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7CkBAIC0xMjM5LDMz
ICsxMjM5LDMzIEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFk
aWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgUmV0YWluUHRyPENHU2hh
ZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3Bh
Y2UsIENHUG9pbnRNYWtlKHIubWF4WCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAt
IHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAg
ICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIHIpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJv
cmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRl
cik7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAg
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAg
ICAgfQogCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIHRvcEdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3Jh
ZGllbnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0
KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFk
aWVudCksIGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQo
KSwgSW50U2l6ZSgpLCBJbnRTaXplKCkpKTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENv
bnRhaW5lci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQs
IHRvcFNoYWRpbmcuZ2V0KCkpOwogICAgIH0KIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1Jl
Y3QoY29udGV4dCwgYm90dG9tR3JhZGllbnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21H
cmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0
KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0
KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRTaXplKCksIGJvcmRlci5yYWRpaSgpLmJv
dHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBjb250
ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJh
d1NoYWRpbmcoY29udGV4dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewot
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5j
b250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBh
aW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQs
IHIpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAg
ICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBD
R0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgICAg
IENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7CkBAIC0x
MjkyLDEwICsxMjkyLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgaWYgKGJvdW5k
cy53aWR0aCgpIDwgYXJyb3dXaWR0aCArIGFycm93UGFkZGluZ0xlZnQgKiByZW5kZXJlci5zdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgcmVuZGVyZXIuc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShO
b1N0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIu
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVy
LnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9r
ZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cxWzNdOwogICAgIGFycm93
MVswXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3Mg
LyAyLjBmKTsKQEAgLTEzMDMsNyArMTMwMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAg
ICAgYXJyb3cxWzJdID0gRmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBj
ZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiAtIGFycm93SGVpZ2h0KTsKIAogICAg
IC8vIERyYXcgdGhlIHRvcCBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4
UG9seWdvbigzLCBhcnJvdzEsIHRydWUpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0Nv
bnZleFBvbHlnb24oMywgYXJyb3cxLCB0cnVlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cyWzNd
OwogICAgIGFycm93MlswXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgKyBzcGFjZUJl
dHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAgLTEzMTEsNyArMTMxMSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJl
bmRlcmVyLCBjCiAgICAgYXJyb3cyWzJdID0gRmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lk
dGggLyAyLjBmLCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiArIGFycm93SGVp
Z2h0KTsKIAogICAgIC8vIERyYXcgdGhlIGJvdHRvbSBhcnJvdwotICAgIHBhaW50SW5mby5jb250
ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdzIsIHRydWUpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0cnVlKTsKIAogICAgIENvbG9y
IGxlZnRTZXBhcmF0b3JDb2xvcigwLCAwLCAwLCA0MCk7CiAgICAgQ29sb3IgcmlnaHRTZXBhcmF0
b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0MCk7CkBAIC0xMzIxLDE0ICsxMzIxLDE0IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgaW50IGxlZnRFZGdlT2ZTZXBhcmF0b3IgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJyb3dQYWRkaW5nTGVmdCAqIHJlbmRlcmVyLnN0eWxlKCku
ZWZmZWN0aXZlWm9vbSgpKTsgLy8gRklYTUU6IFJvdW5kPwogCiAgICAgLy8gRHJhdyB0aGUgc2Vw
YXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+
c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNl
IGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0YXlzIHRoaW4uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICBwYWludEluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRv
ciwgYm91bmRzLnkoKSksCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25l
c3MoMSk7IC8vIERlbGliZXJhdGVseSBpZ25vcmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIg
aWYgaXQgc3RheXMgdGhpbi4KKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxl
KFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGxl
ZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgp
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNl
cGFyYXRvciwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9y
ICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2Vw
YXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3Bh
Y2UsIGJvdW5kcy5tYXhZKCkpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNDU0LDcgKzE0
NTQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVu
dE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KE5TQ2VsbAogICAgIGJvb2wgc2hvdWxkRHJhd0ZvY3Vz
UmluZyA9IGlzRm9jdXNlZChyZW5kZXJlcikgJiYgcmVuZGVyZXIuc3R5bGUoKS5vdXRsaW5lU3R5
bGVJc0F1dG8oKTsKICAgICBib29sIHNob3VsZFVzZUltYWdlQnVmZmVyID0gcmVuZGVyZXIuc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkgIT0gMSB8fCBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAx
OwogICAgIGJvb2wgc2hvdWxkRHJhd0NlbGwgPSB0cnVlOwotICAgIGlmIChUaGVtZU1hYzo6ZHJh
d0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRl
eHQsIHJlY3QsIGRvY3VtZW50Vmlld0ZvcihyZW5kZXJlciksIHNob3VsZERyYXdDZWxsLCBzaG91
bGREcmF3Rm9jdXNSaW5nLCBzaG91bGRVc2VJbWFnZUJ1ZmZlciwgcGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSkpCisgICAgaWYgKFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJ
bnRvQ29udGV4dChjZWxsLCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCBkb2N1bWVudFZpZXdG
b3IocmVuZGVyZXIpLCBzaG91bGREcmF3Q2VsbCwgc2hvdWxkRHJhd0ZvY3VzUmluZywgc2hvdWxk
VXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpKQogICAgICAgICBwYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogfQog
CkBAIC0xNDkxLDcgKzE0OTEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRy
YWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICBi
b3VuZHMuc2V0WChyLngoKSArIHIud2lkdGgoKSAvIDIgLSB6b29tZWRUcmFja1dpZHRoIC8gMik7
CiAgICAgfQogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChw
YWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2Fs
Q29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9
IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQoKTsKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0g
ZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwogCkBAIC0xNDk5LDcgKzE0OTksNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QgUGFpbnRJbmZvJiBwYQogICAgIHBhaW50U2xpZGVyVGlja3MobywgcGFpbnRJbmZvLCByKTsK
ICNlbmRpZgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
Ym91bmRzKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3Mg
PSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwpAQCAtMTUxMSw3ICsxNTEx
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgbWFpblNoYWRpbmcgPSBhZG9w
dENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwg
IGJvdW5kcy55KCkpLCBDR1BvaW50TWFrZShib3VuZHMueCgpLCBib3VuZHMubWF4WSgpKSwgbWFp
bkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIEludFNpemUgcmFkaXVzKHRy
YWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywg
cmFkaXVzKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChib3VuZHMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAg
IGNvbnRleHQgPSBsb2NhbENvbnRleHQuY2dDb250ZXh0KCk7CiAgICAgQ0dDb250ZXh0RHJhd1No
YWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogCkBAIC0xNTMyLDcgKzE1MzIsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwo
KQogICAgICAgICA6IHNsaWRlclRodW1iSG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgp
KTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KICAg
ICB1cGRhdGVFbmFibGVkU3RhdGUoc2xpZGVyVGh1bWJDZWxsLCBvKTsKQEAgLTE1NjgsMTYgKzE1
NjgsMTYgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBpZiAoby5zdHlsZSgpLmFwcGVh
cmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkKICAgICAgICAgYm91bmRzLnNldEhl
aWdodChib3VuZHMuaGVpZ2h0KCkgKyB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgKiBvLnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2
ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IHVuem9vbWVk
UmVjdCA9IGJvdW5kczsKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgdW56
b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAg
ICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29t
TGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVj
dC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2Nh
bGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwg
dW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxv
YXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAgICAg
fQogCiAgICAgW3NsaWRlclRodW1iQ2VsbCBkcmF3S25vYjp1bnpvb21lZFJlY3RdOwpAQCAtMTU4
OCwxMiArMTU4OCwxMiBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogCiBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgp
KTsKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAKICAg
ICBzZXRTZWFyY2hDZWxsU3RhdGUobywgcik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBmbG9hdCB6
b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCkBAIC0xNjAyLDkgKzE2MDIs
OSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikg
ewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6
b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5o
ZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xh
dGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9v
bWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpv
b21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJl
Y3QueSgpKTsKICAgICB9CiAKICAgICAvLyBTZXQgdGhlIHNlYXJjaCBidXR0b24gdG8gbmlsIGJl
Zm9yZSBkcmF3aW5nLiAgVGhlbiByZXNldCBpdCBzbyB3ZSBjYW4gZHJhdyBpdCBsYXRlci4KQEAg
LTE2ODUsNyArMTY4NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRD
YW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKCFpbnB1
dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9j
YWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7
CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8u
Y29udGV4dCgpKTsKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCBy
KTsKIAogICAgIE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKQEAg
LTE2OTUsNyArMTY5NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRD
YW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgZWxzZSBpZiAo
W1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2VsbF0gaXNIaWdobGlnaHRlZF0pCiAgICAgICAgIFtbc2Vh
cmNoIGNhbmNlbEJ1dHRvbkNlbGxdIHNldEhpZ2hsaWdodGVkOk5PXTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
IAogICAgIGZsb2F0IHpvb21MZXZlbCA9IG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CiAKQEAg
LTE3MDYsOSArMTcwNiw5IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRD
YW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHpvb21M
ZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJl
Y3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQo
dW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21M
ZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJl
Y3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
dHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0Lngo
KSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIAogICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRv
bkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3Io
byldOwpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBp
ZiAoIWlucHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5j
b250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBh
aW50SW5mby5jb250ZXh0KCkpOwogICAgIHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRl
cmVyKCksIHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJj
aCgpOwpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlm
ICghaW5wdXQtPnJlbmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVuZGVy
ZXIoKSwgcik7CiAKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNo
KCk7CkBAIC0xODA3LDcgKzE4MDcsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYg
KCFbc2VhcmNoIHNlYXJjaE1lbnVUZW1wbGF0ZV0pCiAgICAgICAgIFtzZWFyY2ggc2V0U2VhcmNo
TWVudVRlbXBsYXRlOnNlYXJjaE1lbnVUZW1wbGF0ZSgpXTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBm
bG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRS
ZWN0IGxvY2FsQm91bmRzID0gW3NlYXJjaCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVj
dChzbmFwcGVkSW50UmVjdChpbnB1dC0+cmVuZGVyQm94KCktPmNvbnRlbnRCb3hSZWN0KCkpKV07
CkBAIC0xODE3LDkgKzE4MTcsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKHpv
b21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21l
ZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWln
aHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpv
b21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21l
ZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZl
bCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0
LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIAogICAgIFtbc2VhcmNoIHNlYXJjaEJ1
dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdG
b3IobyldOwpAQCAtMTg0Myw3ICsxODQzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
bmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAg
ICBpZiAoIWNvbnRlbnRXaWR0aCB8fCAhY29udGVudEhlaWdodCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAg
ICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwog
ICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IHJlbmRlckJsb2NrLmxvY2F0aW9uKCk7
CkBAIC0xODk5LDcgKzE4OTksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90
dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChh
bGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0
KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2Uo
c25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1
Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2Uoc25h
cHNob3QsIHBsdWdJblJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2lu
UmVjdCwgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0y
MDYzLDEwICsyMDYzLDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50SW1hZ2VDb250cm9s
c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zCiAjaWYgSEFWRShBUFBL
SVRfU0VSVklDRV9DT05UUk9MU19TVVBQT1JUKQogICAgIE5TU2VydmljZXNSb2xsb3ZlckJ1dHRv
bkNlbGwgKmNlbGwgPSBzZXJ2aWNlc1JvbGxvdmVyQnV0dG9uQ2VsbCgpOwogCi0gICAgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7Ci0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4
dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludElu
Zm8uY29udGV4dCgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
cGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRl
KHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUo
cmVjdC54KCksIHJlY3QueSgpKTsKIAogICAgIEludFJlY3QgaW5uZXJGcmFtZShJbnRQb2ludCgp
LCByZWN0LnNpemUoKSk7CiAgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTppbm5lckZyYW1lIGluVmll
dzpkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpXTsKQEAgLTI0NjIsOCArMjQ2Miw4IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEluCiAKICAgICBBdHRhY2htZW50TGF5b3V0IGxheW91dChhdHRhY2ht
ZW50KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9ICpwYWludEluZm8uY29udGV4
dDsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwor
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0KTsKIAogICAgIGNvbnRl
eHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKHBhaW50UmVjdC5sb2NhdGlvbigpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCA1NWMwOGQ1
NjUyM2U5NWZkZTcyNTYzZWNlMjQ4ODFhZjEwMDkwM2NhLi40NzcxOTNjMTNlZTVmYTk2M2E5NmQx
NWE4ZmIyMDQ4ODc4ZGQ1MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludENoZWNrYm94KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYQogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQo
by5zdHlsZSgpKTsKIAogICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3Qociwg
Y2hlY2tib3hTaXplcygpW2NvbnRyb2xTaXplXSwgY2hlY2tib3hNYXJnaW5zKGNvbnRyb2xTaXpl
KSk7ICAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNp
emUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6
Q2hlY2tib3hQYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZs
YXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC00MzEsNyArNDMxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFp
bnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAg
ICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5bGUo
KSk7CiAgCiAgICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBpbmZsYXRlUmVjdChyLCByYWRpb1Np
emVzKClbY29udHJvbFNpemVdLCByYWRpb01hcmdpbnMoY29udHJvbFNpemUpKTsgICAgCi0gICAg
cGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8p
KTsKKyAgICBwYWludFRoZW1lUGFydChSYWRpb0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWlu
ZVN0YXRlKG8pKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTU3Nyw3ICs1NzcsNyBAQCBi
b29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbgogICAgIH0gZWxzZQogICAgICAgICBwYXJ0ID0gU2FmYXJp
VGhlbWU6OlNxdWFyZUJ1dHRvblBhcnQ7CiAKLSAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNp
emUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXpl
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01ODUsNyAr
NTg1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHAKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhl
bWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRGaWVs
ZFBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJv
bFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAgICBwYWludFRo
ZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4dEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5w
bGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykg
JiB+Rm9jdXNlZFN0YXRlKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU5OCwxMCArNTk4
LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWluCiAjaWYgZGVmaW5lZChTQUZBUklfVEhFTUVf
VkVSU0lPTikgJiYgU0FGQVJJX1RIRU1FX1ZFUlNJT04gPj0gMQogICAgIEFTU0VSVChTYWZhcmlU
aGVtZUxpYnJhcnkoKSk7CiAKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoQ2Fwc0xvY2tQYXJ0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXpl
KTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkwKTsKKyAgICBwYWludFRoZW1lUGFydChDYXBzTG9ja1Bh
cnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xT
aXplKTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkwKTsKIAogICAgIHJldHVybiBmYWxzZTsKICNlbHNl
CkBAIC02MTMsNyArNjEzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0QXJl
YShjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKIHsKICAgICBBU1NF
UlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhl
bWU6OlRleHRBcmVhUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCAoTlNDb250cm9sU2l6ZSkwLCBkZXRlcm1pbmVTdGF0ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOwor
ICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpUZXh0QXJlYVBhcnQsIHBhaW50SW5mby5j
b250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWlu
ZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02
NjIsNyArNjYyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaW4KICAgICBpZiAoci53aWR0aCgp
ID49IG1pbmltdW1NZW51TGlzdFNpemUoby5zdHlsZSgpKSkKICAgICAgICAgaW5mbGF0ZWRSZWN0
ID0gaW5mbGF0ZVJlY3QoaW5mbGF0ZWRSZWN0LCBzaXplLCBwb3B1cEJ1dHRvbk1hcmdpbnMoY29u
dHJvbFNpemUpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5m
by5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFy
dCwgaW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJv
bFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTcy
Myw5ICs3MjMsOSBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9u
R3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29ucwogICAgIGlmIChyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKIAogICAg
IEZsb2F0Um91bmRlZFJlY3QgYm91bmQgPSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUoKS5nZXRS
b3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm91bmQucmFkaWkoKS50b3BM
ZWZ0KCkud2lkdGgoKTsKQEAgLTc0OSwzNCArNzQ5LDM0IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gbGVmdFNoYWRpbmcgPSBhZG9wdENGKENH
U2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENH
UG9pbnRNYWtlKHIueCgpICsgcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFs
c2UsIGZhbHNlKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcg
PSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5tYXhY
KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIubWF4WCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5G
dW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoYm91bmQpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5k
KTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLnJlc3RvcmUoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0
LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRp
aSgpLnRvcExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNp
emUoKSkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIGJvdW5kLnJhZGlpKCkudG9w
TGVmdCgpLCBib3VuZC5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7
CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnJlc3RvcmUoKTsKIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuc2F2ZSgpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdy
YWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCks
IEludFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90
dG9tUmlnaHQoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRT
aXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0
LCBib3R0b21TaGFkaW5nLmdldCgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3Rv
cmUoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNh
dmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmQpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250
ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCi0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIH0K
IAogYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC03OTgsMTAgKzc5OCwxMCBAQCBib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZQogICAgIGlmIChib3VuZHMud2lkdGgoKSA8IGFycm93V2lkdGggKyBhcnJv
d1BhZGRpbmdMZWZ0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBwYWludEluZm8uY29u
dGV4dC0+c2F2ZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKE5vU3Ryb2tlLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5z
dHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihOb1N0
cm9rZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICBGbG9hdFBvaW50IGFycm93WzNdOwog
ICAgIGFycm93WzBdID0gRmxvYXRQb2ludChsZWZ0RWRnZSwgY2VudGVyWSAtIGFycm93SGVpZ2h0
IC8gMi4wZik7CkBAIC04MDksNyArODA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFp
bnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAg
ICBhcnJvd1syXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2Vu
dGVyWSArIGFycm93SGVpZ2h0IC8gMi4wZik7CiAKICAgICAvLyBEcmF3IHRoZSBhcnJvdwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7
CiAKICAgICBDb2xvciBsZWZ0U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwogICAgIENvbG9y
IHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1LCAyNTUsIDI1NSwgNDApOwpAQCAtODE5LDE3ICs4MTks
MTcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICBpbnQgbGVmdEVkZ2VPZlNlcGFyYXRv
ciA9IHN0YXRpY19jYXN0PGludD4obGVmdEVkZ2UgLSBhcnJvd1BhZGRpbmdMZWZ0KTsgLy8gRklY
TUU6IFJvdW5kPwogCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRo
ZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBv
aW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IobGVmdFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3Is
IGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMubWF4WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdl
T2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxl
ZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBz
ZXBhcmF0b3JTcGFjZSwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTkzNSwxMCArOTM1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludElu
Zm8mCiAgICAgZWxzZSBpZiAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNh
bFBhcnQpCiAgICAgICAgIGJvdW5kcy5zZXRSZWN0KEludFJlY3Qoci54KCkgKyByLndpZHRoKCkg
LyAyIC0gdHJhY2tXaWR0aCAvIDIsIHIueSgpLCB0cmFja1dpZHRoLCByLmhlaWdodCgpKSk7CiAK
LSAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJH
QkNvbG9yU3BhY2VSZWYoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250
ZXh0LCBib3VuZHMucmVjdCgpKTsKIAogICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1h
aW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwpAQCAt
OTQ5LDkgKzk0OSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2so
Y29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgZWxzZQogICAgICAg
ICBtYWluU2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1Bv
aW50TWFrZShib3VuZHMucmVjdCgpLngoKSwgIGJvdW5kcy5yZWN0KCkueSgpKSwgQ0dQb2ludE1h
a2UoYm91bmRzLnJlY3QoKS54KCksIGJvdW5kcy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9u
LmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91
bmRlZFJlY3QoYm91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChib3VuZHMpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5n
LmdldCgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTk2
Nyw3ICs5NjcsNyBAQCBjb25zdCBmbG9hdCB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgPSAw
LjFmOwogYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
KQogewogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7Ci0gICAgcGFpbnRUaGVtZVBh
cnQoU2xpZGVyVGh1bWJQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHIsIE5TU21hbGxDb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhl
bWVQYXJ0KFNsaWRlclRodW1iUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgTlNTbWFsbENvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC05OTAsNyArOTkwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVt
ZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCByLCBjb250cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJjaEZpZWxkU2l6
ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVt
ZTo6U2VhcmNoRmllbGRQYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBjb250cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWlu
ZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwNTEsNyArMTA1MSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zCiAKICAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5k
ZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAotICAg
IHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQs
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJv
bFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2Vh
cmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVz
KCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTA2
LDcgKzExMDYsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlck9iamVjdAogCiAgICAgSW50UmVjdCBzZWFy
Y2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zv
cm1zKCk7CiAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1
bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
c2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNp
emVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhl
bWU6OlNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJj
aFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKQEAgLTExMzAsNyArMTEzMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uCiAKICAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFy
aVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNo
UmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50
VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6
ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRl
KG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IDE2MzVhNzRlNTg4YjU4Y2Q5ZDQ5MTQxNGYxY2ZjODdi
M2VlYmJjYTUuLjcxNDc4ODliNWM4ODY1MDZiMjlmOTA5NmMwZDBkYjljZTIwYzgyNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtNjIyLDcgKzYy
Miw3IEBAIFRoZW1lRGF0YSBSZW5kZXJUaGVtZVdpbjo6Z2V0VGhlbWVEYXRhKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgQ29udHJvbFN1YlBhcnQgc3ViCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0aGVtZSwgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEs
IGNvbnN0IEludFJlY3QmIHIpCitzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgSEFORExFIHRoZW1lLCBjb25zdCBU
aGVtZURhdGEmIHRoZW1lRGF0YSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBib29sIGFscGhh
QmxlbmQgPSBmYWxzZTsKICAgICBpZiAodGhlbWUpCkBAIC02NzcsNyArNjc3LDcgQEAgc3RhdGlj
IHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJP
YmplY3QmIG8sIEhBTkRMRQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFhbHBoYUJsZW5k
ICYmICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAoIWFscGhhQmxl
bmQgJiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAgICAgIERJQlBpeGVs
RGF0YTo6c2V0UkdCQUJpdG1hcEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygpLCByLCAyNTUpOwog
fQogCkBAIC03NDYsNyArNzQ2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlz
dChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8KICAgICAgICAg
cGFydCA9IFRGUF9URVhURklFTEQ7CiAgICAgfQogCi0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZv
LmNvbnRleHQsIHJlbmRlcmVyLCB0aGVtZSwgVGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRl
KHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5j
b250ZXh0KCksIHJlbmRlcmVyLCB0aGVtZSwgVGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRl
KHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkpOwogICAgIAogICAgIHJldHVybiBwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlciksIHBhaW50
SW5mbywgRmxvYXRSZWN0KHJlY3QpKTsKIH0KQEAgLTgwOCw3ICs4MDgsNyBAQCBib29sIFJlbmRl
clRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94
JiByZW5kZXJlciwgYwogICAgICAgICBidXR0b25SZWN0LnNldFdpZHRoKGJ1dHRvblJlY3Qud2lk
dGgoKSArIHZpc3RhTWVudUxpc3RCdXR0b25PdXRzZXQpOwogICAgIH0KIAotICAgIGRyYXdDb250
cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJlciwgbWVudUxpc3RUaGVtZSgpLCBnZXRUaGVt
ZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0KTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8u
Y29udGV4dCgpLCByZW5kZXJlciwgbWVudUxpc3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVy
ZXIpLCBidXR0b25SZWN0KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTg5Miw3ICs4OTIs
NyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogCiAgICAgc3RhdGljIEltYWdlKiBjYW5jZWxJ
bWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsIikubGVha1Jl
ZigpOwogICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsUHJlc3NlZEltYWdlID0gSW1hZ2U6OmxvYWRQ
bGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxQcmVzc2VkIikubGVha1JlZigpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3NlZElt
YWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoaXNQcmVzc2VkKG8pID8gY2FuY2VsUHJlc3Nl
ZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05NDAsNyArOTQwLDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJP
YmplY3QmIG8KICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWln
aHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAgICAgCiAgICAgc3RhdGljIEltYWdl
KiBtYWduaWZpZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoTWFn
bmlmaWVyIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UobWFn
bmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNw
YWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05NzUsNyArOTc1LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGJvdW5kcy5zZXRZKHBhcmVudEJveC55KCkg
KyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdodCgpICsgMSkgLyAyKTsKIAogICAg
IHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3Vy
Y2UoInNlYXJjaE1hZ25pZmllclJlc3VsdHMiKS5sZWFrUmVmKCk7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
Ym91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZShtYWduaWZpZXJJbWFn
ZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKQEAgLTExMzksMTQgKzExMzksMTQgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRl
cihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmYKICAgICBp
bnQgcmVtYWluaW5nID0gc3RhdGljX2Nhc3Q8aW50PigoMS4wIC0gZWxlbWVudC0+dmFsdWVSYXRp
bygpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5zaXplKCkud2lkdGgoKSkpOwogCiAgICAg
Ly8gRHJhdyB0aGUgYmFja2dyb3VuZAotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0
LCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwgdGhlbWUsIHJlY3QpOworICAgIGRy
YXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NCYXJU
aGVtZSgpLCB0aGVtZSwgcmVjdCk7CiAKICAgICAvLyBEcmF3IHRoZSBwcm9ncmVzcyBwb3J0aW9u
CiAgICAgSW50UmVjdCBjb21wbGV0ZWRSZWN0KHJlY3QpOwogICAgIGNvbXBsZXRlZFJlY3QuY29u
dHJhY3QocmVtYWluaW5nLCAwKTsKIAogICAgIHRoZW1lLm1fcGFydCA9IFBQX0ZJTEw7Ci0gICAg
ZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NCYXJU
aGVtZSgpLCB0aGVtZSwgY29tcGxldGVkUmVjdCk7CisgICAgZHJhd0NvbnRyb2wocGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVuZGVyT2JqZWN0LCBwcm9ncmVzc0JhclRoZW1lKCksIHRoZW1lLCBjb21w
bGV0ZWRSZWN0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWRlby5jcHAKaW5kZXggNWY3Y2UxY2U3NjlkYzE3NmU3NGJhNzA2NjQyMzlhNmY4
YWI5NGE4Ny4uZTkzNTVhYTljMTVmOTllMGZjMzE4MWU2ZDFmYjQ1NGI5NmM4NzM4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC0xODAsMTEgKzE4MCwxMSBA
QCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogCiAgICAgTGF5b3V0UmVjdCBjb250ZW50UmVjdCA9
IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29udGVudFJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGJvb2wg
Y2xpcCA9ICFjb250ZW50UmVjdC5jb250YWlucyhyZWN0KTsKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXApOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlwKTsKICAgICBpZiAoY2xpcCkKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50UmVjdCk7CisgICAgICAgIGNvbnRleHQuY2xpcChj
b250ZW50UmVjdCk7CiAKICAgICBpZiAoZGlzcGxheWluZ1Bvc3RlcikKICAgICAgICAgcGFpbnRJ
bnRvUmVjdChjb250ZXh0LCByZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCA4ZjBiNmU2MTk0ZTA3NTJkNjY3M2M5MjFlOWRjMmZiNjA3M2RiM2YzLi4wNGEw
OGQ1ZGVkMDNiZDNlNWQzN2Q5N2FhYzFlNjM2MmQ5MDNlNWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSZW5kZXJWaWV3
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcgZ2FyYmFnZSBiZXR3ZWVuIGNvbHVt
bnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlmIChmcmFtZVZpZXcoKS5wYWdpbmF0
aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRlZCAmJiBwYWludEluZm8uc2hvdWxk
UGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxS
ZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0
KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFja2dyb3VuZENvbG9yKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogCiAgICAgcGFpbnRPYmplY3QocGFpbnRJbmZvLCBwYWludE9mZnNl
dCk7CiB9CkBAIC02MTMsMTIgKzYxMywxMiBAQCB2b2lkIFJlbmRlclZpZXc6OnBhaW50Qm94RGVj
b3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAg
ICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBmcmFtZVZpZXcoKS5kb2N1bWVudEJh
Y2tncm91bmRDb2xvcigpOwogICAgICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSAoYmFja2dy
b3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgJiYgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IuaXNW
YWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDogZnJhbWVWaWV3KCkuYmFzZUJhY2tn
cm91bmRDb2xvcigpOwogICAgICAgICBpZiAoYmFja2dyb3VuZENvbG9yLmFscGhhKCkpIHsKLSAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3VzT3BlcmF0b3IgPSBwYWludEluZm8u
Y29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwotICAgICAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBiYWNrZ3JvdW5kQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CisgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gcGFpbnRJbmZvLmNvbnRleHQoKS5j
b21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOworICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dyb3VuZENvbG9yLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENv
bXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsKKyAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xlYXJSZWN0KHBhaW50SW5mby5yZWN0KTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKaW5k
ZXggYWM3Yzg4ODJjZmM1ODIzNjEzNTBhY2NjOTg3MTNmMTE4YmMxYjI1My4uOTk0Y2IwYzJjZjZm
ZmU3ODI4NjdmNTJkMWYyY2E5MzQ3MDQyZWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKQEAgLTIyOCwxNCArMjI4LDE0IEBAIHZvaWQgUmVuZGVyV2lkZ2V0
OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPCiAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5
ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcg
bGF5ZXIsCiAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0g
YW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8gZml4IHBsdWct
aW4gZHJhd2luZy4KICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKSB7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh3aWRnZXRQYWludE9mZnNldCk7CiAg
ICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9mZnNldCk7CiAgICAgfQogICAgIC8v
IEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jb2xzaW5nL2ludGVncmFsIHNuYXBwaW5nIHdo
ZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVsIHNuYXBwZWQuCi0gICAgbV93aWRn
ZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVkSW50UmVjdChwYWludFJlY3QpKTsK
KyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQoKSwgc25hcHBlZEludFJlY3Qo
cGFpbnRSZWN0KSk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50T2Zmc2V0LmlzWmVybygpKQotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC13aWRnZXRQYWludE9mZnNldCk7
CiAKICAgICBpZiAoaXM8RnJhbWVWaWV3PigqbV93aWRnZXQpKSB7CiAgICAgICAgIEZyYW1lVmll
dyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3PigqbV93aWRnZXQpOwpAQCAtMjc1LDI2
ICsyNzUsMjYgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgLy8gUHVzaCBhIGNsaXAgaWYgd2UgaGF2ZSBhIGJvcmRlciByYWRpdXMsIHNpbmNl
IHdlIHdhbnQgdG8gcm91bmQgdGhlIGZvcmVncm91bmQgY29udGVudCB0aGF0IGdldHMgcGFpbnRl
ZC4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIEZsb2F0Um91bmRlZFJlY3Qgcm91bmRlZElubmVy
UmVjdCA9IEZsb2F0Um91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Io
Ym9yZGVyUmVjdCwKICAgICAgICAgICAgIHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpLCBwYWRk
aW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSwgcGFkZGluZ0xlZnQoKSArIGJvcmRlckxlZnQo
KSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpLCB0cnVlLCB0cnVlKSk7Ci0gICAgICAg
IGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5jb250ZXh0LCBib3JkZXJSZWN0LCByb3Vu
ZGVkSW5uZXJSZWN0KTsKKyAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNv
bnRleHQoKSwgYm9yZGVyUmVjdCwgcm91bmRlZElubmVyUmVjdCk7CiAgICAgfQogCiAgICAgaWYg
KG1fd2lkZ2V0KQogICAgICAgICBwYWludENvbnRlbnRzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQp
OwogCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkpCi0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9y
ZSgpOwogCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJhbnNwYXJlbnQgd2FzaCBvdmVyIHNl
bGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQoKSAmJiAhZG9jdW1lbnQoKS5wcmlu
dGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rpb25SZWN0KCkgaXMgaW4gYWJzb2x1
dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9uUmVjdCgpKSwgc2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICB9CiAKICAg
ICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5SZXNpemUoKSkKLSAgICAgICAgbGF5ZXIo
KS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0
ZWRQYWludE9mZnNldCksIHBhaW50SW5mby5yZWN0KTsKKyAgICAgICAgbGF5ZXIoKS0+cGFpbnRS
ZXNpemVyKHBhaW50SW5mby5jb250ZXh0KCksIHJvdW5kZWRJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0KSwgcGFpbnRJbmZvLnJlY3QpOwogfQogCiB2b2lkIFJlbmRlcldpZGdldDo6c2V0T3Zl
cmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggMzlmOTc5ZDYzMzVmMzk4YzlkNzhiNDEzNGY4M2Fm
ZWJlZWIwN2NhMS4uYzlmMGEwODI1ODUyYTQ1YTQ0OTNhZmU3MzJjYTZhZDM3YzIxZjZlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtNDc1LDcgKzQ3
NSw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVTZWxlY3Rpb25HYXAoUmVuZGVyQmxv
Y2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pCiAgICAgICAgICAgICAgICAgTGF5b3V0UmVj
dCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAgICAgICAgICAgICAgIGlmIChpc1By
ZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2FwUmVjdC53aWR0aCgpID4gMCAmJiBnYXBSZWN0LmhlaWdo
dCgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAocGFpbnRJbmZvICYmIGJveC0+cGFy
ZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4dC0+ZmlsbFJlY3QoZ2FwUmVjdCwg
Ym94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94
LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChnYXBSZWN0LCBib3gt
PnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBib3gtPnBh
cmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbiBtYXkgYmUgbm9uLWNvbnRpZ3VvdXMsIHNlZSBjb21t
ZW50IGFib3ZlLgogICAgICAgICAgICAgICAgICAgICByZXN1bHQudW5pdGVDZW50ZXIoZ2FwUmVj
dCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDU5ZDFhN2RlNTY3NDcxMjdi
MzAzNDU3NThhYzI2YTZmMWNjMTYxYTIuLmYxYzZiMTBlN2JkZGMyMzAxNmFjMDY1MjVhZmEyNGY5
MzkxM2EzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBwYWludEZsb3co
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCwgUGFpbnRJ
bmZvJiBwYWkKIAogICAgIGJvb2wgZGVidWdCb3JkZXJzRW5hYmxlZCA9IGZsb3cuZnJhbWUoKS5z
ZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkKCk7CiAKLSAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CiAgICAgVGV4dFBhaW50U3R5bGUg
dGV4dFBhaW50U3R5bGUgPSBjb21wdXRlVGV4dFBhaW50U3R5bGUoZmxvdy5mcmFtZSgpLCBzdHls
ZSwgcGFpbnRJbmZvKTsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
Y29udGV4dCwgdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGggPiAwKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXgg
N2FhNTRmYjhjMjEzZDAzOGUxOTgzMWJkOTI1MTEwYTE4N2NlNGU0Zi4uYjZkZTc5ZThiMjQ2NTk5
ZmQyYTQ1OTI0Yzc2OTRhMjE3YTg4YjE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTk1LDMzICs5NSwzMyBA
QCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJGbGV4aWJsZUJveDo6cGFpbnQo
aW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQorICAgIGlm
IChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWlu
dFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50UG9pbnQgYWRqdXN0
ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkp
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRl
eHQoKSk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7
Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlU1JH
Qik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOworICAgIGlu
Zm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CiAg
ICAgCi0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRo
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3
TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSksIEludFBvaW50KGFkanVzdGVkUGFp
bnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9m
ZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOwotICAgIGluZm8uY29udGV4
dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9m
ZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVp
Z2h0KCkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0
LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdp
ZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJh
d0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSksIEludFBvaW50KGFkanVzdGVkUGFp
bnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9m
ZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOworICAgIGluZm8uY29udGV4
dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSwgSW50UG9pbnQoYWRq
dXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7CisgICAgaW5m
by5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0
ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVk
T2Zmc2V0SGVpZ2h0KCkpKTsKICAgICAKICAgICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7
CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAyNTUsIDAp
LCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29s
b3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+
ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSAr
IHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9w
U3RhcnQpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCksIEludFBv
aW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwg
YWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCkpOwogICAgIAogICAgIGludCBiYXNl
bGluZSA9IHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRy
dWUsIEhvcml6b250YWxMaW5lKSk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZVNSR0IpOwogICAg
IAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1
c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVk
UGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSkp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cAppbmRleCA1MWYxNjhlYWViZjZhMmQ4YjNkZGZiN2EwNDE1YTc3NDI0ODJkMzA1Li41MTliYjM4
ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3ZjA2NWQyZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcApAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OmxheW91dCgpCiB2b2lk
IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5m
bywgcGFpbnRPZmZzZXQpOwotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJs
ZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBSZW5kZXJC
b3gqIGRlbm9taW5hdG9yV3JhcHBlciA9IGxhc3RDaGlsZEJveCgpOwpAQCAtMTUwLDEyICsxNTAs
MTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKIAogICAgIEludFBvaW50IGFkanVzdGVkUGFp
bnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgZGVu
b21pbmF0b3JXcmFwcGVyLT5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoMCwgbV9saW5lVGhpY2tu
ZXNzIC8gMikpOwogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhp
Y2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihzdHlsZSgp
LnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZVNSR0Ip
OwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRl
ZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgZGVub21pbmF0
b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9saW5lVGhpY2tuZXNzKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3
TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRq
dXN0ZWRQYWludE9mZnNldC54KCkgKyBkZW5vbWluYXRvcldyYXBwZXItPm9mZnNldFdpZHRoKCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBPcHRpb25hbDxpbnQ+IFJlbmRlck1h
dGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCmlu
ZGV4IDE3NDY4YzExOTkzMDRhNzBkNjdiNzUwMGJlMmRiNzQwNzVkNDJlNzUuLmI4NmUzNjI5YTZi
NzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1NDc2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5mbyYgaW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiB7CiAgICAgUmVuZGVyTWF0aE1MQmxv
Y2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAgIGlmIChpbmZvLmNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8
IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgp
LnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
IHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBNYXRoTUxNZW5jbG9zZUVsZW1lbnQqIG1lbmNsb3NlID0gZG93bmNhc3Q8TWF0aE1M
TWVuY2xvc2VFbGVtZW50PihlbGVtZW50KCkpOwpAQCAtMTE0LDIzICsxMTQsMjMgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgaW50IGhhbGZib3hXaWR0aCA9IHJlY3Qud2lkdGgo
KSAvIDI7CiAgICAgICAgIGludCBoYWxmYm94SGVpZ2h0ID0gcmVjdC5oZWlnaHQoKSAvIDI7CiAK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRl
eHQpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICAg
ICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgICAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7CisgICAgICAgIGluZm8uY29udGV4
dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlD
b2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICAvLyBUT0RPIGFkZCBzdXBwb3J0
IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAgICAgICAgaWYgKG5vdGF0aW9uVmFs
dWVzW2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRl
eHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGJveEhlaWdodCksIEludFBvaW50KGxl
ZnQgKyBib3hXaWR0aCwgdG9wKSk7CisgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJh
d0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgYm94SGVpZ2h0KSwgSW50UG9pbnQobGVmdCArIGJv
eFdpZHRoLCB0b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09
ICJkb3duZGlhZ29uYWxzdHJpa2UiKQotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+ZHJh
d0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3Ag
KyBib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJ
bnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGJveEhl
aWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gInZlcnRp
Y2Fsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBv
aW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCksIEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lk
dGgsIHRvcCArIGJveEhlaWdodCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRy
YXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCksIEludFBvaW50KGxlZnQg
KyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAo
bm90YXRpb25WYWx1ZXNbaV0gPT0gImhvcml6b250YWxzdHJpa2UiKQotICAgICAgICAgICAgICAg
IGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgaGFsZmJveEhlaWdo
dCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wICsgaGFsZmJveEhlaWdodCkpOworICAg
ICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCAr
IGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hI
ZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJjaXJj
bGUiKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6
OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQtPmRyYXdFbGxpcHNlKHJlY3QpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4
dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdFbGxpcHNlKHJlY3QpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAibG9uZ2RpdiIpCiAgICAg
ICAgICAgICAgICAgaXNEZWZhdWx0TG9uZ0RpdiA9IHRydWU7CiAgICAgICAgIH0KQEAgLTE0NCw5
ICsxNDQsOSBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIG1pZHhQb2ludCA9IHN0eWxlKCkucGFkZGluZ0xlZnQoKS52YWx1ZSgpOwog
ICAgICAgICAgICAgcm9vdC5hZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQobGVmdCwgdG9wKSwg
RmxvYXRQb2ludChsZWZ0ICsgbWlkeFBvaW50LCB0b3AgKyBoYWxmYm94SGVpZ2h0KSwgRmxvYXRQ
b2ludChsZWZ0LCB0b3AgKyBib3hIZWlnaHQpKTsKLSAgICAgICAgICAgIGluZm8uY29udGV4dC0+
c3Ryb2tlUGF0aChyb290KTsKKyAgICAgICAgICAgIGluZm8uY29udGV4dCgpLnN0cm9rZVBhdGgo
cm9vdCk7CiAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0TG9uZ0RpdikKLSAgICAgICAgICAgICAg
ICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCksIEludFBvaW50KGxl
ZnQgKyBib3hXaWR0aCArIG1pZHhQb2ludCwgdG9wKSk7CisgICAgICAgICAgICAgICAgaW5mby5j
b250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQobGVmdCArIGJv
eFdpZHRoICsgbWlkeFBvaW50LCB0b3ApKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHAKaW5kZXggOTM4ZjZiYzhlMGQwZjU5YzQ3MzJjOTkzMWM4NTgyMzIxY2VjZTdkYS4uM2Nm
ZWIyMWNhOGQyNTdmM2VmZTUwYWExZTljZGMxN2U0OTIyYzFhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAK
QEAgLTE3OTcsMTIgKzE3OTcsMTIgQEAgTGF5b3V0UmVjdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
cGFpbnRHbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0IEdseXBoRGF0YSYgZGEKICAgICB9CiAK
ICAgICAvLyBDbGlwcGluZyB0aGUgZW5jbG9zaW5nIEludFJlY3QgYXZvaWRzIGFueSBwb3RlbnRp
YWwgaXNzdWVzIGF0IGpvaW5lZCBlZGdlcy4KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5mby5jb250ZXh0LT5jbGlwKGNsaXBC
b3VuZHMpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNv
bnRleHQoKSk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAgIEds
eXBoQnVmZmVyIGJ1ZmZlcjsKICAgICBidWZmZXIuYWRkKGRhdGEuZ2x5cGgsIGRhdGEuZm9udCwg
YWR2YW5jZUZvckdseXBoKGRhdGEpKTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdHbHlwaHMoc3R5
bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdpbik7Cisg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICpkYXRh
LmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luKTsKIAogICAgIHJldHVybiBnbHlwaFBhaW50UmVj
dDsKIH0KQEAgLTE4MTgsNyArMTgxOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZp
bGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0CiAgICAg
aWYgKGZyb20ueSgpID09IHRvLnkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKICAgICBGbG9h
dFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS5leHRlbnNp
b24oKSk7CiAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6
OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0CiAg
ICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0OwogICAgIGNsaXBCb3VuZHMuc2hp
ZnRZRWRnZVRvKGZyb20ueSgpKTsKICAgICBjbGlwQm91bmRzLnNoaWZ0TWF4WUVkZ2VUbyh0by55
KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJpbW1pbmcgbWF5IHJlbW92ZSB1cCB0
byB0d28gcGl4ZWxzIGZyb20gdGhlIHRvcCBvZiB0aGUgZXh0ZW5kZXIgZ2x5cGgsIHNvIHdlIG1v
dmUgaXQgdXAgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBvZmZzZXRUb0dseXBoVG9wID0gZ2x5
cGhCb3VuZHMueSgpICsgMjsKQEAgLTE4NTYsMTQgKzE4NTYsMTQgQEAgdm9pZCBSZW5kZXJNYXRo
TUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgoUGFpbnRJbmZvJiBp
bmZvLCBjb24KICAgICBpZiAoZnJvbS54KCkgPT0gdG8ueCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgp
KTsKIAogICAgIC8vIENsaXBwaW5nIHRoZSBleHRlbmRlciByZWdpb24gaGVyZSBhbGxvd3MgdXMg
dG8gZHJhdyB0aGUgYm90dG9tIGV4dGVuZGVyIGdseXBoIGludG8gdGhlCiAgICAgLy8gcmVnaW9u
cyBvZiB0aGUgYm90dG9tIGdseXBoIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgb3ZlcmRyYXcgKGhh
aXJ5IHBpeGVscykgYW5kIHNpbXBsaWZpZXMgbGF0ZXIgY2xpcHBpbmcuCiAgICAgTGF5b3V0UmVj
dCBjbGlwQm91bmRzID0gaW5mby5yZWN0OwogICAgIGNsaXBCb3VuZHMuc2hpZnRYRWRnZVRvKGZy
b20ueCgpKTsKICAgICBjbGlwQm91bmRzLnNoaWZ0TWF4WEVkZ2VUbyh0by54KCkpOwotICAgIGlu
Zm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKGNs
aXBCb3VuZHMpOwogCiAgICAgLy8gVHJpbW1pbmcgbWF5IHJlbW92ZSB1cCB0byB0d28gcGl4ZWxz
IGZyb20gdGhlIGxlZnQgb2YgdGhlIGV4dGVuZGVyIGdseXBoLCBzbyB3ZSBtb3ZlIGl0IGxlZnQg
YnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBvZmZzZXRUb0dseXBoTGVmdCA9IC0yOwpAQCAtMTg4
NSwxMSArMTg4NSwxMSBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludChQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogewogICAgIFJlbmRlck1h
dGhNTFRva2VuOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAKLSAgICBpZiAoaW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IG1fc3RyZXRjaHlEYXRh
Lm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rp
c2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgp
LnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3
Tm9ybWFsKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRGaWxsQ29s
b3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoaW5mby5jb250ZXh0KCkpOworICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3U2l6ZVZh
cmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKS5nbHlwaCk7
CkBAIC0xODk4LDcgKzE4OTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludChQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogICAgICAgICBM
YXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBjZWlsZWRJbnRQb2ludChwYWludE9mZnNldCAr
IGxvY2F0aW9uKCkpOwogICAgICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JH
bHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogICAgICAgICBMYXlvdXRQb2ludCBvcGVy
YXRvck9yaWdpbihvcGVyYXRvclRvcExlZnQueCgpLCBvcGVyYXRvclRvcExlZnQueSgpIC0gZ2x5
cGhCb3VuZHMueSgpKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3R2x5cGhzKHN0eWxlKCku
Zm9udENhc2NhZGUoKSwgKm1fc3RyZXRjaHlEYXRhLnZhcmlhbnQoKS5mb250LCBidWZmZXIsIDAs
IDEsIG9wZXJhdG9yT3JpZ2luKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhz
dHlsZSgpLmZvbnRDYXNjYWRlKCksICptX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZm9udCwgYnVm
ZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFk
aWNhbE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAppbmRleCBkZjE0YTg5OGQ2NWNjODlkY2NjMmQ2MWZh
NWEwYmQ5MDdmZWQyMTJhLi5iNjkyZjc0NjllZjY2MzkzOWFhMzYyODk0Yzg2NTYzZWEwMGI0OWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJhZGljYWxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwKIAogdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6
OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lC
TEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChzdHlsZSgpLmZvbnRDYXNjYWRlKCku
cHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpKSB7CkBAIC0xMjksMTMgKzEyOSwxMyBAQCB2b2lkIFJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbgogICAgIEZsb2F0UG9pbnQgZGlwTGVmdFBvaW50KHN0YXJ0WCAtIGdS
YWRpY2FsRGlwTGVmdFBvaW50WEZyb250ICogZnJvbnRXaWR0aCwgYWRqdXN0ZWRQYWludE9mZnNl
dC55KCkgKyByYWRpY2FsRGlwTGVmdFBvaW50WVBvcyk7CiAgICAgRmxvYXRQb2ludCBsZWZ0RW5k
KHN0YXJ0WCAtIGZyb250V2lkdGgsIGRpcExlZnRQb2ludC55KCkgKyBnUmFkaWNhbExlZnRFbmRZ
U2hpZnRFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKLSAgICBpbmZvLmNvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbExpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZv
bnRTaXplKCkpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2Up
OwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGlu
Zm8uY29udGV4dC0+c2V0TGluZUpvaW4oTWl0ZXJKb2luKTsKLSAgICBpbmZvLmNvbnRleHQtPnNl
dE1pdGVyTGltaXQoc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6
ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8u
Y29udGV4dCgpLnNldExpbmVKb2luKE1pdGVySm9pbik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0
TWl0ZXJMaW1pdChzdHlsZSgpLmZvbnRTaXplKCkpOwogCiAgICAgUGF0aCByb290OwogCkBAIC0x
NDcsOSArMTQ3LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBh
aW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAvLyBkcmF3IHRvIGVu
ZAogICAgIHJvb3QuYWRkTGluZVRvKGxlZnRFbmQpOwogCi0gICAgaW5mby5jb250ZXh0LT5zdHJv
a2VQYXRoKHJvb3QpOworICAgIGluZm8uY29udGV4dCgpLnN0cm9rZVBhdGgocm9vdCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIG1hc2tTdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgbWFza1N0YXRlU2F2ZXIoaW5mby5jb250
ZXh0KCkpOwogCiAgICAgLy8gQnVpbGQgYSBtYXNrIHRvIGRyYXcgdGhlIHRoaWNrIHBhcnQgb2Yg
dGhlIHJvb3QuCiAgICAgUGF0aCBtYXNrOwpAQCAtMTU5LDE3ICsxNTksMTcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW4KICAgICBtYXNrLmFkZExpbmVUbyhkaXBMZWZ0UG9pbnQpOwogICAgIG1h
c2suYWRkTGluZVRvKEZsb2F0UG9pbnQoMiAqIGRpcExlZnRQb2ludC54KCkgLSBsZWZ0RW5kLngo
KSwgMiAqIGRpcExlZnRQb2ludC55KCkgLSBsZWZ0RW5kLnkoKSkpOwogCi0gICAgaW5mby5jb250
ZXh0LT5jbGlwKG1hc2spOworICAgIGluZm8uY29udGV4dCgpLmNsaXAobWFzayk7CiAKICAgICAv
LyBEcmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSByb290LgotICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5m
b250U2l6ZSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldExpbmVDYXAoU3F1YXJlQ2FwKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxUaGlja0xpbmVUaGlj
a25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOworICAgIGluZm8uY29udGV4dCgpLnNldExp
bmVDYXAoU3F1YXJlQ2FwKTsKIAogICAgIFBhdGggbGluZTsKICAgICBsaW5lLm1vdmVUbyhib3R0
b21Qb2ludCk7CiAgICAgbGluZS5hZGRMaW5lVG8oZGlwTGVmdFBvaW50KTsKIAotICAgIGluZm8u
Y29udGV4dC0+c3Ryb2tlUGF0aChsaW5lKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zdHJva2VQYXRo
KGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCBlYmUyZDM3MzU3Y2QxZTg2OWIxYzllYzNiZWMx
MDFkYzExYjliMmFlLi5hYzRhMTVkZDg0YTQ5MzQ0MmYzNDU5YzVhNDUwMjEzMTRhMDE3NWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
b3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um9vdC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBhaW50
KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAg
IFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAgICAgCi0gICAg
aWYgKGlzRW1wdHkoKSB8fCBpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHls
ZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpc0VtcHR5KCkgfHwgaW5mby5j
b250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJ
U0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYmFzZSA9IGJhc2VXcmFwcGVyKCk7
CkBAIC0zMjgsMTYgKzMyOCwxNiBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBXZSBkcmF3IHRoZSByYWRpY2FsIGxpbmUuCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKLSAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOwotICAgIGluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0
U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRo
aWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0
eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAKICAgICAvLyBUaGUgcHJlZmVycmVkIHdpZHRoIG9mIHRoZSByYWRpY2FsIGlz
IHNvbWV0aW1lcyBpbmNvcnJlY3QsIHNvIHdlIGRyYXcgYSBzbGlnaHRseSBsb25nZXIgbGluZSB0
byBlbnN1cmUgaXQgdG91Y2hlcyB0aGUgcmFkaWNhbCBzeW1ib2wgKGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjYpLgogICAgIExheW91dFVuaXQgc2l6ZUVycm9y
ID0gcmFkaWNhbC0+dHJhaWxpbmdTcGFjZUVycm9yKCk7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQ
YWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBi
YXNlLT5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoLXNpemVFcnJvciwgLShtX3ZlcnRpY2FsR2Fw
ICsgbV9ydWxlVGhpY2tuZXNzIC8gMikpKTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGFk
anVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkgKyBzaXplRXJyb3IsIGFkanVzdGVk
UGFpbnRPZmZzZXQueSgpKSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVk
UGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zm
c2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkgKyBzaXplRXJyb3IsIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpKSkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IFJl
bmRlck1hdGhNTFJvb3RXcmFwcGVyOjpjcmVhdGVBbm9ueW1vdXNXcmFwcGVyKFJlbmRlck1hdGhN
TFJvb3QqIHJlbmRlck9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKaW5kZXggNThlYjllMjQwNjc2YTExNGRjMWI5NzY4Nzc1NjM0MmIzOTJmYjk2OS4uNjky
MjI4MTkxOGM0ODMxZTcyOTk1M2I2MjAyOTEyODgyOGQ1MThmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4Miw4ICsxODIsOCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0
IHRocmVzaG9sZCwgYwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCkpOwogCiAgICAgaWYgKGlt
YWdlQnVmZmVyKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1h
Z2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSkpOworICAgICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1h
Z2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxB
cnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQ
b2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlM
ZW5ndGggPSBwaXhlbEFycmF5LT5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4IGExZjEwMzAwNGFiNzhiYzMyNzE1
NzdjMGYxMGVkNDYzYjg4NTNkYTUuLmIxMzc0ZTA4YjEwODQzNGRhZGU1MzJkNGRmMTIwZGY3NzM0
MWQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVj
ZUltYWdlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFZlY3RvcjxGbG9hdFNpemU+IE5pbmVQaWVj
ZUltYWdlOjpjb21wdXRlTm9uSW50cmluc2ljVGlsZVNjYWxlcygpCiAgICAgcmV0dXJuIFZlY3Rv
cjxGbG9hdFNpemU+KE1heFBpZWNlLCBGbG9hdFNpemUoMSwgMSkpOwogfQogCi12b2lkIE5pbmVQ
aWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgIGJvb2wgaW50cmlu
c2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
IGNvbnN0Cit2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNv
dXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0CiB7CiAgICAgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9
IGltYWdlKCk7CiAgICAgQVNTRVJUKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNMb2FkZWQo
KSk7CkBAIC0yMzgsMTMgKzIzOCwxMyBAQCB2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZAogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29ybmVyUGllY2UocGllY2UpKSB7Ci0g
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JT
cGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JT
cGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgb3ApOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkgPyBzdGF0aWNfY2FzdDxJbWFnZTo6
VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwogICAgICAg
ICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2FsUGllY2UocGllY2UpID8gc3RhdGlj
X2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUoKSkgOiBJbWFnZTo6U3RyZXRjaFRp
bGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCks
IGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0s
IHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9wKTsKKyAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlv
blJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1
bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IDRiZWYxYWY4N2NlNGQ1MzMyOTNkMDBlMzE4
NTQ1MzQ5ZGFkMWQwN2YuLjljMzJlNWNhYTQyMWVjN2ZiMmE0OTljMzZhNzk4NTI0NmRjZWI1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5o
CkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBWZWN0b3I8RmxvYXRTaXpl
PiBjb21wdXRlSW50cmluc2ljVGlsZVNjYWxlcyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYgZGVz
dGluYXRpb25SZWN0cywgY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIHNvdXJjZVJlY3RzLCBFTmlu
ZVBpZWNlSW1hZ2VSdWxlIGhSdWxlLCBFTmluZVBpZWNlSW1hZ2VSdWxlIHZSdWxlKTsKICAgICBz
dGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4gY29tcHV0ZU5vbkludHJpbnNpY1RpbGVTY2FsZXMoKTsK
IAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyRWxlbWVudCosIGNvbnN0
IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91
dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRyaW5zaWNTb3VyY2UsIGZsb2F0IGRldmljZVNjYWxlRmFj
dG9yLCBDb21wb3NpdGVPcGVyYXRvcikgY29uc3Q7CisgICAgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBMYXlvdXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc291cmNlLCBib29sIGludHJpbnNp
Y1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJhdG9yKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBEYXRhUmVmPE5pbmVQaWVjZUltYWdlRGF0YT4gbV9kYXRhOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIu
Y3BwCmluZGV4IDgyMDdkZjQxOWJmMmFjMWIxODBmZDk4ZmNiMWI4MGM1MmU5Zjc1MTQuLjM4ZWZi
MmM5OTRjNmNlMzlkMmJiMGUyOTkwODY2N2Q1NGY5ZTBjOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTEwOCw3ICsx
MDgsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6c2VsZldpbGxQYWludCgpCiAKIHZvaWQg
UmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlYzogZ3JvdXBzIHcvbyBjaGlsZHJlbiBzdGlsbCBt
YXkgcmVuZGVyIGZpbHRlciBjb250ZW50LgpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgUmVuZGVy
U1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmKQogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CiAgICAgewot
ICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY2hpbGRQYWludEluZm8uY29udGV4dCgpKTsKIAogICAgICAgICAvLyBMZXQgdGhlIFJlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyIHN1YmNsYXNzIGNsaXAgaWYgbmVjZXNzYXJ5CiAgICAgICAg
IGFwcGx5Vmlld3BvcnRDbGlwKGNoaWxkUGFpbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCmluZGV4IGNiNmQ5YzM3Yzg2M2I3
M2VkZjNmOTUwZmUwOGJlYjgxM2MwNjFjMzUuLmZhZTM3MWFlY2ZkZTgxZWFiNzdiZTQ5NGYxMzk5
ODY1NGViYTcwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdFbGxpcHNlLmNwcApAQCAtOTMsMTYgKzkzLDE2IEBAIHZvaWQgUmVuZGVyU1ZHRWxsaXBz
ZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKQogICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CiB9
CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV91c2VQYXRoRmFsbGJhY2spIHsKICAg
ICAgICAgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb250ZXh0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBjb250ZXh0LT5maWxsRWxsaXBzZShtX2ZpbGxCb3VuZGluZ0JveCk7Cisg
ICAgY29udGV4dC5maWxsRWxsaXBzZShtX2ZpbGxCb3VuZGluZ0JveCk7CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25z
dAordm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJsZVN0
cm9rZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBSZW5kZXJT
VkdFbGxpcHNlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAg
ICAgICAgIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShjb250ZXh0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5zdHJva2VFbGxpcHNlKG1fZmlsbEJvdW5kaW5nQm94
KTsKKyAgICBjb250ZXh0LnN0cm9rZUVsbGlwc2UobV9maWxsQm91bmRpbmdCb3gpOwogfQogCiBi
b29sIFJlbmRlclNWR0VsbGlwc2U6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5oCmluZGV4IGI1ODdkMWFiMzMxNDcwMzIzMmY1ZDBlMDljMTc4Y2I1NWE5
Y2I1MjYuLjlhNmZjMTJjZGVkYWJhMTU1MjVjNDRkYmE4OTNlOGNmNTllNmI0NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCkBAIC00Miw4
ICs0Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1l
bnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6
IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
cmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxTaGFw
ZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ry
b2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudEZpbGxDb250
YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZvaWQgY2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCmluZGV4IDQ2
OTg5MDdkZjk4ZTY5MjMxNTY0MjZkMTYyNTI0ZDAwYTdiNDBmZjUuLmI4NzkxYWU0MDIzNDA0ZTJj
YmMxMzJmNWRkYTE0MjY5ZTBkMmE3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcApAQCAtNTMsMTggKzUzLDE4
IEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpmb3Jl
aWduT2JqZWN0RWxlbWVudCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
aW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7
CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obG9jYWxUcmFuc2Zvcm0oKSk7CiAK
ICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykpCi0gICAg
ICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIGNo
aWxkUGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKG1fdmlld3BvcnQpOwogCiAgICAgU1ZHUmVuZGVy
aW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTAyMTY3OTgxMTMzZGNmY2E2ZTFlNmUyNTQ4N2Ez
OTVlM2FhZDVjZi4uYjhhMTk2ZTk1MTM3MDFkNTZhYmVhNmI5MmNmYWQ0ZWQzMDNhYzM4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQoKQogCiB2b2lkIFJl
bmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZAorICAgIGlmIChwYWludElu
Zm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZUZvcmVncm91bmQKICAgICAgICAgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gSElE
REVOIHx8ICFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCkBA
IC0xNDAsMTQgKzE0MCwxNCBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICByZXR1cm47CiAKICAgICBQ
YWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGlsZFBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKG1fbG9jYWxUcmFuc2Zvcm0pOwog
CiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7
CiAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dCgqdGhpcywgY2hp
bGRQYWludEluZm8pOwogCiAgICAgICAgIGlmIChyZW5kZXJpbmdDb250ZXh0LmlzUmVuZGVyaW5n
UHJlcGFyZWQoKSkgewotICAgICAgICAgICAgaWYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5idWZmZXJl
ZFJlbmRlcmluZygpID09IEJSX1NUQVRJQyAgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3Jl
Z3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKKyAgICAgICAgICAgIGlmIChzdHlsZSgpLnN2
Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJpbmcoKSA9PSBCUl9TVEFUSUMgJiYgcmVuZGVyaW5nQ29u
dGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHBhaW50Rm9yZWdyb3VuZChjaGlsZFBhaW50SW5m
byk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnRGb3JlZ3Jv
dW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiAgICAgaW1hZ2VFbGVtZW50KCkucHJlc2VydmVB
c3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdl
KGltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CiB9
CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKaW5kZXgg
OGU0MGQ4YmU5NTI3OGYyOWU2NmU3NmI2MTY3ZTY0YzBkYzQ5MjVkNi4uMWQwMTNhZDdjMWUwZThj
NDAxNDAwODY4YTI3MjU5M2FiYWNhMmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02NCwxNyArNjQsMTcgQEAgRmxvYXRSZWN0IFJl
bmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0cm9rZUJvdW5kaW5nQm94OwogfQogCi1zdGF0aWMgdm9pZCB1c2VTdHJva2VT
dHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgdm9pZCB1c2VTdHJv
a2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKEdyYWRp
ZW50KiBncmFkaWVudCA9IGNvbnRleHQtPnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAgIGNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOwotICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBh
dHRlcm4gPSBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZp
bGxQYXR0ZXJuKCpwYXR0ZXJuKTsKKyAgICBpZiAoR3JhZGllbnQqIGdyYWRpZW50ID0gY29udGV4
dC5zdHJva2VHcmFkaWVudCgpKQorICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCgqZ3Jh
ZGllbnQpOworICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LnN0cm9rZVBh
dHRlcm4oKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0dGVybigqcGF0dGVybik7CiAgICAg
ZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29udGV4dC0+c3Ryb2tlQ29sb3Io
KSwgY29udGV4dC0+c3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
Q29sb3IoY29udGV4dC5zdHJva2VDb2xvcigpLCBjb250ZXh0LnN0cm9rZUNvbG9yU3BhY2UoKSk7
CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFz
VmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MCwxMyArOTAsMTMgQEAgdm9p
ZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNv
bnN0CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkKICAgICAgICAgbm9uU2NhbGluZ1Ry
YW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgdHJ1ZSk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIHRydWUpOwogICAgIHVzZVN0cm9r
ZVN0eWxlVG9GaWxsKGNvbnRleHQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV96ZXJv
TGVuZ3RoTGluZWNhcExvY2F0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICB1c2VQYXRoID0g
emVyb0xlbmd0aExpbmVjYXBQYXRoKG1femVyb0xlbmd0aExpbmVjYXBMb2NhdGlvbnNbaV0pOwog
ICAgICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgpKQogICAgICAgICAgICAgdXNlUGF0aCA9
IG5vblNjYWxpbmdTdHJva2VQYXRoKHVzZVBhdGgsIG5vblNjYWxpbmdUcmFuc2Zvcm0pOwotICAg
ICAgICBjb250ZXh0LT5maWxsUGF0aCgqdXNlUGF0aCk7CisgICAgICAgIGNvbnRleHQuZmlsbFBh
dGgoKnVzZVBhdGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1BhdGguaAppbmRleCAwOGQ4OTExOWViYmFjMTliMTVlMDZhZmVjYzdjNWVlMzQy
YzA0OTI5Li5iYmQyMmRjNWIwY2I5Yjg1YzEyZTgxMGJlYjA0NDQxYzI5ZDg3NjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaApAQCAtNDIsNyArNDIs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkg
b3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0Jv
eCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4
dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRl
bnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBib29s
IHNob3VsZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAppbmRleCAwM2ZiYmI5ZDUwODkzYzI1
Njc4NTVjYmUxYTIzYjI2YTYyMWEyODg3Li5jYmM4OGY3ZjY2OTBhOTVjZWU5YjM2MzE3MWQyOTU2
ZTc4ZjA2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1JlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVjdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFw
ZUZyb21FbGVtZW50KCkKICNlbmRpZgogfQogCi12b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFw
ZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1JlY3Q6OmZp
bGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKG1fdXNl
UGF0aEZhbGxiYWNrKSB7CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29udGV4
dCk7CkBAIC0xMDksMTggKzEwOSwxOCBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFwZShH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgLy8gc2hhZG93IGRyYXdpbmcgbWV0
aG9kLCB3aGljaCBkcmF3cyBhbiBleHRyYSBzaGFkb3cuCiAgICAgLy8gVGhpcyBpcyBhIHdvcmth
cm91bmQgZm9yIHN3aXRjaGluZyBvZmYgdGhlIGV4dHJhIHNoYWRvdy4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4OTkKLSAgICBpZiAoY29udGV4dC0+
aGFzU2hhZG93KCkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAg
Y29udGV4dC0+ZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gpOworICAgIGlmIChjb250ZXh0Lmhh
c1NoYWRvdygpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGVhclNoYWRvdygpOworICAgICAgICBjb250
ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgogCi0gICAgY29udGV4dC0+ZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gpOworICAg
IGNvbnRleHQuZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gpOwogfQogCi12b2lkIFJlbmRlclNW
R1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQg
UmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1Zpc2libGVTdHJva2UoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ry
b2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgY29udGV4dC0+c3Ryb2tlUmVjdChtX2ZpbGxCb3VuZGluZ0JveCwgc3Ry
b2tlV2lkdGgoKSk7CisgICAgY29udGV4dC5zdHJva2VSZWN0KG1fZmlsbEJvdW5kaW5nQm94LCBz
dHJva2VXaWR0aCgpKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdSZWN0OjpzaGFwZURlcGVuZGVudFN0
cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCA5NzAzMDFhYTc5ZjVjM2RlMmViMzI4
NmQzMGQxM2Y1ZGViNDE0ODlmLi4wMjZlZTYzMDliNTkxZWMxZjBjMzVjZDYzMjE1Nzk1Mjc5MmU0
ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaApA
QCAtNDgsOCArNDgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZy
b21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0Vt
cHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBm
aWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0
IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRG
aWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDhiOWE2Mjg5ZTI4MjA1YzkwYjFlMDRlM2M3
ZDQ4YmQ1YTE4NWZhNTguLjVlNDc3NWJlMGI2YTAwNGM2ZjVjNjI2YWMzNDFhMzJiOTFlNTdlNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTY5LDEwICs2OSwxMCBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29u
c3QgUmVuZAogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
TW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0TW9kZSk7CiAKLSAgICByZXR1cm4g
YXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlciwgcmVuZGVyZXIub2JqZWN0Qm91bmRpbmdC
b3goKSwgcmVuZGVyZXIucmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSwgY29udGV4dCk7
CisgICAgcmV0dXJuIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQocmVuZGVyZXIsIHJlbmRlcmVyLm9i
amVjdEJvdW5kaW5nQm94KCksIHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KCksICpjb250ZXh0KTsKIH0KIAotYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhP
bmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRp
bmdCb3gpCitib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDbGlwcGluZyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYW5pbWF0ZWRM
b2NhbFRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCkKIHsKICAg
ICAvLyBJZiB0aGUgY3VycmVudCBjbGlwLXBhdGggZ2V0cyBjbGlwcGVkIGl0c2VsZiwgd2UgaGF2
ZSB0byBmYWxsYmFjayB0byBtYXNraW5nLgogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmNs
aXBwZXJSZXNvdXJjZSgpLmlzRW1wdHkoKSkKQEAgLTEyMywxMiArMTIzLDExIEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QKICAgICAvLyBUaGUgU1ZHIHNwZWNpZmljYXRpb24gd2FudHMgdXMgdG8g
Y2xpcCBldmVyeXRoaW5nLCBpZiBjbGlwLXBhdGggZG9lc24ndCBoYXZlIGEgY2hpbGQuCiAgICAg
aWYgKGNsaXBQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgY2xpcFBhdGguYWRkUmVjdChGbG9hdFJl
Y3QoKSk7Ci0gICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgsIGNsaXBSdWxlKTsKKyAgICBj
b250ZXh0LmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwUnVsZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5n
Qm94LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdC
b3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBjbGlwcGVyTWFza0ltYWdlID0gYWRkUmVuZGVy
ZXJUb0NsaXBwZXIocmVuZGVyZXIpOwogICAgIGJvb2wgc2hvdWxkQ3JlYXRlQ2xpcHBlck1hc2tJ
bWFnZSA9ICFjbGlwcGVyTWFza0ltYWdlOwpAQCAtMTQ1LDE3ICsxNDQsMTUgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGMKICAgICAgICAgaWYgKCFjbGlwcGVyTWFza0ltYWdlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0NvbnRleHQg
PSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIEFTU0VSVChtYXNrQ29udGV4
dCk7Ci0KLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENUTShhbmltYXRlZExvY2FsVHJhbnNm
b3JtKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNr
SW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgbWFza0NvbnRleHQuY29uY2F0Q1RNKGFuaW1hdGVk
TG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIGNsaXBQYXRoIGNhbiBhbHNvIGJlIGNsaXBw
ZWQgYnkgYW5vdGhlciBjbGlwUGF0aC4KICAgICAgICAgYXV0byogcmVzb3VyY2VzID0gU1ZHUmVz
b3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKCp0aGlzKTsKICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyOwogICAgICAgICBib29sIHN1Y2NlZWRl
ZDsKICAgICAgICAgaWYgKHJlc291cmNlcyAmJiAoY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBl
cigpKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCptYXNrQ29udGV4dCk7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIobWFza0NvbnRleHQpOwogCiAgICAgICAgICAgICBpZiAoIWNsaXBwZXItPmFwcGx5
Q2xpcHBpbmdUb0NvbnRleHQoKnRoaXMsIG9iamVjdEJvdW5kaW5nQm94LCByZXBhaW50UmVjdCwg
bWFza0NvbnRleHQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MCwxNCAr
MTc3LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9N
YXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKIHsKICAgICBBU1NFUlQoY2xpcHBlck1h
c2tJbWFnZSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlck1h
c2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrQ29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKIAog
ICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uOwogICAgIGlmIChj
bGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3Jt
YXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gu
eSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi5zY2FsZU5vblVuaWZvcm0o
b2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwot
ICAgICAgICBtYXNrQ29udGV4dC0+Y29uY2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24p
OworICAgICAgICBtYXNrQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlv
bik7CiAgICAgfQogCiAgICAgLy8gU3dpdGNoIHRvIGEgcGFpbnQgYmVoYXZpb3Igd2hlcmUgYWxs
IGNoaWxkcmVuIG9mIHRoaXMgPGNsaXBQYXRoPiB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nIHNwZWNp
YWwgY29uc3RyYWludHM6CkBAIC0yMjYsNyArMjIyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShjb25zdCBDbGlwcGVyTWFza0ltYWdl
JgogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1NoYXBlKCkgJiYgIXJlbmRlcmVyLT5pc1NW
R1RleHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1hc2tDb250ZXh0LT5z
ZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7CisgICAgICAgIG1hc2tDb250ZXh0LnNldEZpbGxSdWxl
KG5ld0NsaXBSdWxlKTsKIAogICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhIDx1c2U+IGVsZW1l
bnQsIHdlIG9idGFpbmVkIGl0cyByZW5kZXJlcmUgYWJvdmUsIHRvIHJldHJpZXZlIGl0cyBjbGlw
UnVsZS4KICAgICAgICAgLy8gV2UgaGF2ZSB0byBwYXNzIHRoZSA8dXNlPiByZW5kZXJlciBpdHNl
bGYgdG8gcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoKSB0byBhcHBseSBpdCdzIHgveS90cmFu
c2Zvcm0vZXRjLiB2YWx1ZXMgd2hlbiByZW5kZXJpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAppbmRleCA0NDE1
Yjk0YjEzYTYyZGI2ZmJhNjNjZDA2MmZkZDRjODY2OTZiNDVjLi5iNzcwNDk2NTNkYWNmNDVmYzAx
ZTUzNmQ5NjBkNTRhMTk2ZjRlZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIC8vIGNsaXBQYXRoIGNhbiBiZSBjbGlwcGVkIHRvbywgYnV0IGRvbid0IGhh
dmUgYSBib3VuZGluZ0JveCBvciByZXBhaW50UmVjdC4gU28gd2UgY2FuJ3QgY2FsbAogICAgIC8v
IGFwcGx5UmVzb3VyY2UgZGlyZWN0bHkgYW5kIHVzZSB0aGUgcmVjdHMgZnJvbSB0aGUgb2JqZWN0
LCBzaW5jZSB0aGV5IGFyZSBlbXB0eSBmb3IgUmVuZGVyU1ZHUmVzb3VyY2VzCiAgICAgLy8gRklY
TUU6IFdlIG1hZGUgYXBwbHlDbGlwcGluZ1RvQ29udGV4dCBwdWJsaWMgYmVjYXVzZSB3ZSBjYW5u
b3QgY2FsbCBhcHBseVJlc291cmNlIG9uIEhUTUwgZWxlbWVudHMgKGl0IGFzc2VydHMgb24gUmVu
ZGVyT2JqZWN0OjpvYmplY3RCb3VuZGluZ0JveCkKLSAgICBib29sIGFwcGx5Q2xpcHBpbmdUb0Nv
bnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IEdyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgYXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5k
ZXJFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3ND
b250ZXh0Jik7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25z
dCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3Vy
Y2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsaXBwZXJSZXNv
dXJjZVR5cGU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIiOyB9CiAKLSAgICBib29sIHBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
Ym9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0lt
YWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5k
aW5nQm94KTsKICAgICB2b2lkIGNhbGN1bGF0ZUNsaXBDb250ZW50UmVwYWludFJlY3QoKTsKICAg
ICBDbGlwcGVyTWFza0ltYWdlJiBhZGRSZW5kZXJlclRvQ2xpcHBlcihjb25zdCBSZW5kZXJPYmpl
Y3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZTMxODY1ZDgwM2MxM2QxNTBiNTcxYjYxZGUwNzg2
MWIwMjE3MTFmYy4uMDRlYWQxYThiZWE2NGE0YWYzNjMwNmFmZTc1OTE2YjlkMDdjODhlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAKQEAgLTE5OCwxMyArMTk4LDEyIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlCiAgICAgLy8gU2V0IHRoZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGlu
Z3MuCiAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01v
ZGUpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJj
ZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoc291cmNlR3JhcGhpY0NvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCYgc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGlj
LT5jb250ZXh0KCk7CiAgIAogICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBX
VEY6Om1vdmUoc291cmNlR3JhcGhpYyk7CiAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0g
Y29udGV4dDsKIAotICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsKKyAgICBjb250
ZXh0ID0gJnNvdXJjZUdyYXBoaWNDb250ZXh0OwogCiAgICAgQVNTRVJUKCFtX2ZpbHRlci5jb250
YWlucygmcmVuZGVyZXIpKTsKICAgICBtX2ZpbHRlci5zZXQoJnJlbmRlcmVyLCBXVEY6Om1vdmUo
ZmlsdGVyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5kZXggY2JjYTEwM2VmMzA1Njk3OWVm
NDY1YzJiNTdiNTMzN2E5OGI1ZDc0ZS4uYWNlYTIzMGM5ZDkyNWMzNDZlODBkNDI4ZDk5ODJjNTg3
OTVjZDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC02NSwxNiArNjUsMTUgQEAgc3RhdGlj
IGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFw
aGljc0NvbnRleHQqJiBjb24KICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdl
LT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKG1hc2tJbWFnZUNvbnRleHQpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogICAgIEFT
U0VSVChtYXNrSW1hZ2UpOwogICAgIHNhdmVkQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgY29udGV4
dCA9IG1hc2tJbWFnZUNvbnRleHQ7CisgICAgY29udGV4dCA9ICZtYXNrSW1hZ2VDb250ZXh0Owog
ICAgIGltYWdlQnVmZmVyID0gV1RGOjptb3ZlKG1hc2tJbWFnZSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VC
dWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJvb2wg
Ym91bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNmb3Jt
KQorc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2soR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZl
ciwgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZW5kZXJPYmplY3QqIG9iamVjdCwgYm9vbCBib3Vu
ZGluZ0JveE1vZGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgZ3JhZGllbnRUcmFuc2Zvcm0pCiB7
CiAgICAgYXV0byogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNW
R1RleHRBbmNlc3Rvcigqb2JqZWN0KTsKICAgICBBU1NFUlQodGV4dFJvb3RCbG9jayk7CkBAIC0y
MDcsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlS
ZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgIGNhbGN1
bGF0ZUdyYWRpZW50VHJhbnNmb3JtKGdyYWRpZW50VHJhbnNmb3JtKTsKIAogICAgICAgICAgICAg
RmxvYXRSZWN0IHRhcmdldFJlY3Q7Ci0gICAgICAgICAgICBncmFkaWVudERhdGEtPmdyYWRpZW50
LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1RleHRNYXNrKGNvbnRleHQsIG1faW1h
Z2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zv
cm0pKTsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3JhZGllbnQtPnNldEdyYWRpZW50U3Bh
Y2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1hc2soKmNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdl
dFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0pKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnREYXRhLT5ncmFkaWVudCk7CiAK
ICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdldFJlY3QpOwpAQCAtMjIxLDEzICsy
MjAsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAgICAgICAgICAgIGlmIChwYXRoKQog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCpwYXRoKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoY29udGV4dCk7
CisgICAgICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgqY29udGV4dCk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9TdHJva2VNb2RlKSB7CiAgICAgICAg
ICAgICBpZiAocGF0aCkKICAgICAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKCpwYXRo
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgICAgIHNoYXBlLT5z
dHJva2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUo
KmNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCmluZGV4IDhjM2Jk
YjM0NzUxMDQwNjk2N2JlNjgzNTYxNzMwYzAyZjllMGZhYTYuLjY5ZTVkYjE2ZmYxMWQ2MWMwMDRj
NWNiNWIwMTBlNTAyOTE2YjYwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5k
ZXJFbGVtZW50JiBjbGllbnQsIGJvb2wKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmFw
cGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAgIGlmIChTVkdSZW5k
ZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cChtX3ZpZXdwb3J0KTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpt
YXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWFya2VyVHJhbnNmb3JtYXRp
b24pIGNvbnN0CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtl
cjo6ZHJhdyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJgogICAg
ICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gaW5mbyhwYWludEluZm8pOwotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIGlu
Zm8uYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KGluZm8sIEludFBvaW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCA1MzBkYTNkNmZh
ZWQ0Yzc1YzdhZWZhYWZiMGM0MGVkMTU4N2M4YzU1Li5hZDM3ZDQ3Yzk4NDZhYzAwNTNkYTUyYzU0
ZGQ5YWY0YzMxZDVjZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtODAsMTQgKzgwLDEzIEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2Vy
RGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CisgICAgU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCByZXBh
aW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250
ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCogbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFT
U0VSVChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNv
bnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIC8vIEV2ZW50
dWFsbHkgYWRqdXN0IHRoZSBtYXNrIGltYWdlIGNvbnRleHQgYWNjb3JkaW5nIHRvIHRoZSB0YXJn
ZXQgb2JqZWN0Qm91bmRpbmdCb3guCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hc2tDb250ZW50VHJh
bnNmb3JtYXRpb247CkBAIC05NSw3ICs5NCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBDCiAg
ICAgICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCA9IG9iamVjdC0+b2JqZWN0Qm91bmRp
bmdCb3goKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi50cmFuc2xhdGUob2Jq
ZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0JveC55KCkpOwogICAgICAgICBtYXNr
Q29udGVudFRyYW5zZm9ybWF0aW9uLnNjYWxlTm9uVW5pZm9ybShvYmplY3RCb3VuZGluZ0JveC53
aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7Ci0gICAgICAgIG1hc2tJbWFnZUNv
bnRleHQtPmNvbmNhdENUTShtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgbWFz
a0ltYWdlQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAg
fQogCiAgICAgLy8gRHJhdyB0aGUgY29udGVudCBpbnRvIHRoZSBJbWFnZUJ1ZmZlci4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuLmNwcAppbmRleCA0YmMwZDk1MTJiMjkwYzcyN2Q3YTc3YzhiMjQ1ODQ5OTljMWY2OWJl
Li45Zjk1ZGQyNmIzMWIwZGU5NDg4NWUzOTU0MzY3YWJmYTQyNGQ4MGJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwCkBAIC0xODksMTMgKzE4OSwxMyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4dAogICAg
ICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCpwYXRoKTsKICAg
ICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBzaGFwZS0+ZmlsbFNoYXBlKGNvbnRl
eHQpOworICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgqY29udGV4dCk7CiAgICAgfQogICAg
IGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9kZSkgewogICAgICAgICBpZiAocGF0
aCkKICAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoKnBhdGgpOwogICAgICAgICBlbHNl
IGlmIChzaGFwZSkKLSAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZShjb250ZXh0KTsKKyAg
ICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZSgqY29udGV4dCk7CiAgICAgfQogCiAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOwpAQCAtMjM3LDE2ICsyMzcsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25z
dCBQYXQKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQo
KTsKLSAgICBBU1NFUlQodGlsZUltYWdlQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiB0
aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAKICAgICAvLyBUaGUgaW1h
Z2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRlcmVkIHNpemUsIHNvIHRoZSBjb250
ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVsYXRpb24pLgotICAgIHRpbGVJbWFn
ZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy53
aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKKyAgICB0aWxlSW1hZ2VDb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy53aWR0aCgpIC8gdGls
ZUJvdW5kYXJpZXMud2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkgLyB0aWxlQm91bmRhcmll
cy5oZWlnaHQoKSkpOwogCiAgICAgLy8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMu
CiAgICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQotICAgICAgICB0aWxl
SW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsKKyAgICAgICAgdGls
ZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsKIAogICAgIEFmZmlu
ZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgaWYgKGF0dHJpYnV0ZXMucGF0
dGVybkNvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RC
T1VORElOR0JPWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcAppbmRleCBmNTAxYWJmNDRiMjE0MTY3
OWE2YjdhNjk4ZWZiMTcxODViZTU3MDI5Li5mYjg4ZmM4YjRiMjhiNzg1OWRkOGYyMTViOTAyNTFk
N2UwZDI4M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCkBAIC04MSwxMyArODEsMTMgQEAg
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmLCBHcmFwaGljc0NvbnQKICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBj
b250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAg
ICAgICAgc2hhcGUtPmZpbGxTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5maWxs
U2hhcGUoKmNvbnRleHQpOwogICAgIH0KICAgICBpZiAocmVzb3VyY2VNb2RlICYgQXBwbHlUb1N0
cm9rZU1vZGUpIHsKICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5zdHJv
a2VQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBzaGFw
ZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUo
KmNvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzRjN2Y2ODg2ZjUxYjIxMzI1OWU4ZGRjY2JmZWJkMGFk
MjBkM2RlMC4uYzJmYWFhMjVlMTQzMmY2MGY3ODkxOGIwZjg1NzVlNDUyN2E4YTQ3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0yMjgs
NyArMjI4LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gRG9uJ3QgcGFpbnQsIGlmIHRoZSBjb250ZXh0IGV4cGxpY2l0bHkgZGlzYWJsZWQgaXQu
Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBTVkcgb3V0bGluZXMgYXJlIHBhaW50ZWQgZHVyaW5nIFBhaW50UGhhc2VGb3Jl
Z3JvdW5kLgpAQCAtMjU3LDE4ICsyNTcsMTggQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQKIAog
ICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8gYmVjYXVzZSBhcHBseVRyYW5zZm9y
bSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdlIHJlY3QuCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJ
bmZvKHBhaW50SW5mbyk7Ci0gICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAg
IGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAKICAgICAvLyBBcHBseSBpbml0aWFs
IHZpZXdwb3J0IGNsaXAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkKLSAgICAg
ICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChzbmFwcGVkSW50UmVjdChvdmVyZmxvd0Ns
aXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkpKTsK
KyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLmNsaXAoc25hcHBlZEludFJlY3Qob3Zl
cmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCkpKSk7CiAKICAgICAvLyBDb252ZXJ0IGZyb20gY29udGFpbmVyIG9mZnNldHMgKGh0bWwgcmVu
ZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRyYW5zZm9ybSAoc3ZnIHJlbmRlcmVycykuCiAgICAgLy8g
VHJhbnNmb3JtIGZyb20gb3VyIHBhaW50IGNvbnRhaW5lcidzIGNvb3JkaW5hdGUgc3lzdGVtIHRv
IG91ciBsb2NhbCBjb29yZHMuCiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJv
dW5kZWRJbnRQb2ludChwYWludE9mZnNldCk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFu
c2Zvcm0oQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlvbihhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpICogbG9jYWxUb0JvcmRlckJveFRyYW5zZm9ybSgp
KTsKIAotICAgIC8vIFNWR1JlbmRlcmluZ0NvbnRleHQgbXVzdCBiZSBkZXN0cm95ZWQgYmVmb3Jl
IHdlIHJlc3RvcmUgdGhlIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQsIGJlY2F1c2UgYSBmaWx0ZXIg
bWF5IGhhdmUKKyAgICAvLyBTVkdSZW5kZXJpbmdDb250ZXh0IG11c3QgYmUgZGVzdHJveWVkIGJl
Zm9yZSB3ZSByZXN0b3JlIHRoZSBjaGlsZFBhaW50SW5mby5jb250ZXh0KCksIGJlY2F1c2UgYSBm
aWx0ZXIgbWF5IGhhdmUKICAgICAvLyBjaGFuZ2VkIHRoZSBjb250ZXh0IGFuZCBpdCBpcyBvbmx5
IHJldmVydGVkIHdoZW4gdGhlIFNWR1JlbmRlcmluZ0NvbnRleHQgZGVzdHJ1Y3RvciBmaW5pc2hl
cyBhcHBseWluZyB0aGUgZmlsdGVyLgogICAgIHsKICAgICAgICAgU1ZHUmVuZGVyaW5nQ29udGV4
dCByZW5kZXJpbmdDb250ZXh0OwpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9v
dDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5y
ZXN0b3JlKCk7CisgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIH0KIAog
dm9pZCBSZW5kZXJTVkdSb290Ojp3aWxsQmVEZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBhMTljZGJiNmM1YjE3YzNi
N2VlYzg2NmNkNDU1NWFmNjY2NTYwZWIwLi45Nzc1OThlOGM2ZTY5ZWMzY2MzMWM0NDNiZTg2Yzcz
MjM0MTgyZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcApAQCAtOTIsMTIgKzkyLDEyIEBAIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OmlzRW1w
dHkoKSBjb25zdAogICAgIHJldHVybiBwYXRoKCkuaXNFbXB0eSgpOwogfQogCi12b2lkIFJlbmRl
clNWR1NoYXBlOjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9p
ZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKLSAgICBjb250ZXh0LT5maWxsUGF0aChwYXRoKCkpOworICAgIGNvbnRleHQuZmlsbFBh
dGgocGF0aCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIEFTU0VSVChtX3BhdGgp
OwogICAgIFBhdGgqIHVzZVBhdGggPSBtX3BhdGguZ2V0KCk7CkBAIC0xMDUsNyArMTA1LDcgQEAg
dm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KSBjb25zdAogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpCiAgICAgICAgIHVzZVBhdGgg
PSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1c2VQYXRoLCBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3Jt
KCkpOwogCi0gICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqdXNlUGF0aCk7CisgICAgY29udGV4dC5z
dHJva2VQYXRoKCp1c2VQYXRoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2hhcGVEZXBl
bmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIyNSw4ICsy
MjUsOSBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpzaG91bGRHZW5lcmF0ZU1hcmtlclBvc2l0aW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc291cmNlcy0+bWFya2VyU3RhcnQoKSB8fCByZXNvdXJj
ZXMtPm1hcmtlck1pZCgpIHx8IHJlc291cmNlcy0+bWFya2VyRW5kKCk7CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0KQogewor
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CiAgICAgQ29s
b3IgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIGZpbGxQYWludGlu
Z1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQYWludGluZ1Jlc291cmNlKCp0aGlz
LCBzdHlsZSwgZmFsbGJhY2tDb2xvcikpIHsKICAgICAgICAgaWYgKGZpbGxQYWludGluZ1Jlc291
cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29udGV4dCwgQXBwbHlUb0ZpbGxNb2Rl
KSkKQEAgLTI0MCw4ICsyNDEsOSBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleAogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJv
a2VTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2lu
YWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENv
bnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZHUmVzb3Vy
Y2UqIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c3Ryb2tlUGFp
bnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGZhbGxiYWNrQ29sb3IpKSB7CiAgICAgICAgIGlm
IChzdHJva2VQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29u
dGV4dCwgQXBwbHlUb1N0cm9rZU1vZGUpKQpAQCAtMjU1LDEyICsyNTcsMTIgQEAgdm9pZCBSZW5k
ZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnQKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNo
YXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9r
ZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoIXN0eWxlKCkuc3Zn
U3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBmYWxzZSk7CiAgICAg
aWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbm9u
U2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0oKTsKICAgICAgICAg
aWYgKCFzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KG5vblNjYWxpbmdUcmFuc2Zvcm0sIHN0
YXRlU2F2ZXIpKQpAQCAtMjc1LDEwICsyNzcsMTAgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6Zmls
bFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50SW5mbykKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsraSkgewogICAgICAgICBzd2l0Y2gg
KHBhaW50T3JkZXIuYXQoaSkpIHsKICAgICAgICAgY2FzZSBQYWludFR5cGVGaWxsOgotICAgICAg
ICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgICAg
ICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5cGVTdHJva2U6Ci0gICAgICAgICAg
ICBzdHJva2VTaGFwZShjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgICAgIHN0cm9r
ZVNoYXBlKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgaWYgKCFtX21hcmtlclBv
c2l0aW9ucy5pc0VtcHR5KCkpCkBAIC0yOTAsNyArMjkyLDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50SW5mbykKIAogdm9pZCBS
ZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8
fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VGb3JlZ3JvdW5kCiAgICAgICAgIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJ
RERFTiB8fCBpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBGbG9hdFJlY3QgYm91bmRp
bmdCb3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwpAQCAtMjk4LDcgKzMwMCw3
IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBh
aW50SW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY2hpbGRQYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgY2hpbGRQYWlu
dEluZm8uYXBwbHlUcmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9ybSk7CiAKICAgICBpZiAoY2hpbGRQ
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKQEAgLTMwNyw3ICszMDks
NyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmlu
Z1ByZXBhcmVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHls
ZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgICAgIGlmIChzdmdTdHlsZS5zaGFwZVJl
bmRlcmluZygpID09IFNSX0NSSVNQRURHRVMpCi0gICAgICAgICAgICAgICAgY2hpbGRQYWludElu
Zm8uY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBj
aGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKIAogICAg
ICAgICAgICAgZmlsbFN0cm9rZU1hcmtlcnMoY2hpbGRQYWludEluZm8pOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggNjEx
YmZkMTRiOWRkNjQ4YzJmMWQ3MzQyYjhhYmYyOWEyYmVhZWVhMi4uMTRjMzFjY2ZjNjA0MzY5ZTg2
MGVkYTE3ZjE1NjQ5Yjg3YjZlNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNTQsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgbV9uZWVk
c0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG5lZWRzQm91bmRh
cmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbmVlZHNCb3VuZGFyaWVzVXBk
YXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJp
ZGUgZmluYWwgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBm
aWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0cm9r
ZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
cmluZ0Rpc2FibGVkKCkgY29uc3QgPSAwOwogCiAgICAgYm9vbCBoYXNQYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXRoLmdldCgpOyB9CkBAIC0xMTQsOSArMTE0LDkgQEAgcHJpdmF0ZToKICAgICBG
bG9hdFJlY3QgbWFya2VyUmVjdChmbG9hdCBzdHJva2VXaWR0aCkgY29uc3Q7CiAgICAgdm9pZCBw
cm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKLSAgICB2b2lkIGZpbGxTaGFwZShjb25zdCBSZW5k
ZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCopOwotICAgIHZvaWQgc3Ryb2tlU2hhcGUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqKTsKLSAgICB2b2lkIHN0cm9rZVNoYXBlKEdy
YXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgZmlsbFNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiwg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHls
ZSYsIEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250
ZXh0Jik7CiAgICAgdm9pZCBmaWxsU3Ryb2tlTWFya2VycyhQYWludEluZm8mKTsKICAgICB2b2lk
IGRyYXdNYXJrZXJzKFBhaW50SW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA0ZTA4ZjNmOWFhMjRmZDE4YmQyMmM4YzU5OGJi
OWFkOWVlZmQ0OTY5Li45MmI3MWU5YzY0ODUxMDhjZTJjN2JmMzQ3NTQwYzg3YTYyZDY1ZjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAg
LTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29ucwogCiB2b2lkIFJlbmRlclNW
R1RleHQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7
Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCkBAIC00
ODgsNyArNDg4LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFpbnRJ
bmZvIGJsb2NrSW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqYmxvY2tJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihibG9ja0luZm8uY29udGV4dCgpKTsKICAgICBibG9ja0luZm8uYXBw
bHlUcmFuc2Zvcm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpKTsKICAgICBSZW5kZXJCbG9jazo6
cGFpbnQoYmxvY2tJbmZvLCBMYXlvdXRQb2ludCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcApp
bmRleCAwMjcwM2QzZGY5NjA2YzhjYmJhZmI5YTVlZDUwMDU4NmMyMmZkOGQ1Li43ODM3ZWI1MjRl
ZTI1YzI0YmE4ZmFmMDNkYjBkZjdlY2NmYWI1YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcApA
QCAtNTEsNyArNTEsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpkZXRlcm1p
bmVJZkxheW91dFNpemVDaGFuZ2VkKCkKIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6
OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogewogICAgIGlmIChTVkdS
ZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSkKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogdm9pZCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6
Y2FsY1ZpZXdwb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZUZsb3dCb3guY3BwCmluZGV4IGQxZjRjNWMzZWFmOWYzYjkxMjhmM2MzYjk5NzMyMzcyMGYz
ZTZmYjMuLmQ4OWJjZmU2ZTNmNmMwNWQzYjBkYzlmNGZkYjQ3MmZiOGU0MTUyODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2b2lkIFNWR0lubGluZUZsb3dCb3g6
OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBB
U1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5j
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRl
eHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZv
KHBhaW50SW5mbyk7CiAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CkBAIC00OCw3ICs0OCw3IEBAIHZv
aWQgU1ZHSW5saW5lRmxvd0JveDo6cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvKQogdm9pZCBTVkdJbmxpbmVGbG93Qm94OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0LCBMYXlvdXRV
bml0KQogewogICAgIEFTU0VSVChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91
bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxlY3Rpb24pOwotICAgIEFTU0VS
VCghcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSk7CisgICAgQVNTRVJUKCFw
YWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSk7CiAKICAgICBTVkdSZW5kZXJp
bmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQocmVuZGVyZXIoKSwgcGFpbnRJbmZvLCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBpZiAocmVuZGVyaW5nQ29u
dGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4IDgzYjE3NWRmYzU0ODRlYTVlYjE1
ZGMyOTYxYjgyYzA2Y2FjYzRlYzguLmVmOGYxOGVlY2VjYWJhOTE2MjU0YmI3M2YyMTY0MDM3MzJm
YTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVU
ZXh0Qm94LmNwcApAQCAtMjIwLDEzICsyMjAsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94Ojpw
YWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgICAgIGlm
ICghbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhmcmFnbWVudCwg
ZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIGZyYWdtZW50LmJ1aWxk
RnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogICAgICAgICBpZiAoIWZyYWdt
ZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOwogCi0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNl
KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3Qoc2VsZWN0aW9uUmVjdEZv
clRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVu
ZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxs
UmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGZyYWdtZW50LCBmcmFnbWVudFN0YXJ0
UG9zaXRpb24sIGZyYWdtZW50RW5kUG9zaXRpb24sICZzdHlsZSksIGJhY2tncm91bmRDb2xvciwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0g
QXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTI4OCwxNyArMjg4LDE3IEBAIHZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNlCiAgICAgICAgIFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQgPSBtX3Rl
eHRGcmFnbWVudHMuYXQoaSk7CiAgICAgICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsK
IAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5m
by5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBmcmFnbWVudC5idWlsZEZyYWdtZW50VHJh
bnNmb3JtKGZyYWdtZW50VHJhbnNmb3JtKTsKICAgICAgICAgaWYgKCFmcmFnbWVudFRyYW5zZm9y
bS5pc0lkZW50aXR5KCkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RN
KGZyYWdtZW50VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY29u
Y2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBTcGVjOiBBbGwgdGV4dCBk
ZWNvcmF0aW9ucyBleGNlcHQgbGluZS10aHJvdWdoIHNob3VsZCBiZSBkcmF3biBiZWZvcmUgdGhl
IHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0aGUgdGV4dCBpcyByZW5kZXJlZCBv
biB0b3Agb2YgdGhlc2UgZGVjb3JhdGlvbnMuCiAgICAgICAgIGludCBkZWNvcmF0aW9ucyA9IHN0
eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAm
IFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBh
aW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvblVuZGVybGluZSwgZnJhZ21lbnQpOworICAg
ICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0
aW9uVW5kZXJsaW5lLCBmcmFnbWVudCk7CiAgICAgICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHRE
ZWNvcmF0aW9uT3ZlcmxpbmUpCi0gICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZv
LmNvbnRleHQsIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgICAg
IHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvbk92ZXJs
aW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgYXV0byBwYWludE9yZGVyID0gc3R5bGUuc3ZnU3R5
bGUoKS5wYWludFR5cGVzRm9yUGFpbnRPcmRlcigpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsraSkgewpAQCAtMzA3LDEzICszMDcsMTMgQEAg
dm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgICAgICAgICBpZiAoIWhhc0ZpbGwpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIG1fcGFpbnRpbmdS
ZXNvdXJjZU1vZGUgPSBBcHBseVRvRmlsbE1vZGUgfCBBcHBseVRvVGV4dE1vZGU7Ci0gICAgICAg
ICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0LCAmc3R5bGUsIHNlbGVjdGlvblN0
eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAg
ICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAmc3R5bGUsIHNlbGVj
dGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWludFR5cGVTdHJv
a2U6CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxlU3Ryb2tlKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2Rl
ID0gQXBwbHlUb1N0cm9rZU1vZGUgfCBBcHBseVRvVGV4dE1vZGU7Ci0gICAgICAgICAgICAgICAg
cGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0LCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFn
bWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAgICAgICAgICAg
ICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAmc3R5bGUsIHNlbGVjdGlvblN0eWxl
LCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzogTGluZS10aHJvdWdoIHNob3VsZCBiZSBkcmF3
biBhZnRlciB0aGUgdGV4dCBpcyBmaWxsZWQgYW5kIHN0cm9rZWQ7IHRodXMsIHRoZSBsaW5lLXRo
cm91Z2ggaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZSB0ZXh0LgogICAgICAgICBpZiAoZGVjb3Jh
dGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQotICAgICAgICAgICAgcGFpbnREZWNv
cmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoLCBmcmFn
bWVudCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwg
VGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQpOwogCiAgICAgICAgIG1fcGFpbnRp
bmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRGVmYXVsdE1vZGU7CiAgICAgfQpAQCAtMzc5LDE0ICsz
NzksMTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShH
cmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdAogCiBib29sIFNWR0lubGluZVRleHRCb3g6
OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYg
Y29udGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgVGV4dFJ1biYgdGV4dFJ1biwgUmVuZGVyU3R5
bGUqIHN0eWxlKQogewotICAgIGJvb2wgYWNxdWlyZWRSZXNvdXJjZSA9IGFjcXVpcmVQYWludGlu
Z1Jlc291cmNlKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHBhcmVudCgpLT5yZW5kZXJlcigpLCBz
dHlsZSk7Ci0gICAgaWYgKCFhY3F1aXJlZFJlc291cmNlKQorICAgIGlmICghYWNxdWlyZVBhaW50
aW5nUmVzb3VyY2UoY29udGV4dCwgc2NhbGluZ0ZhY3RvciwgcGFyZW50KCktPnJlbmRlcmVyKCks
IHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFNWR19GT05UUykK
ICAgICAvLyBTVkcgRm9udHMgbmVlZCBhY2Nlc3MgdG8gdGhlIHBhaW50aW5nIHJlc291cmNlIHVz
ZWQgdG8gZHJhdyB0aGUgY3VycmVudCB0ZXh0IGNodW5rLgotICAgIFRleHRSdW46OlJlbmRlcmlu
Z0NvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQgPSB0ZXh0UnVuLnJlbmRlcmluZ0NvbnRleHQoKTsK
LSAgICBpZiAocmVuZGVyaW5nQ29udGV4dCkKKyAgICBpZiAoYXV0byogcmVuZGVyaW5nQ29udGV4
dCA9IHRleHRSdW4ucmVuZGVyaW5nQ29udGV4dCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxTVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQpLT5zZXRBY3RpdmVQYWlu
dGluZ1Jlc291cmNlKG1fcGFpbnRpbmdSZXNvdXJjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TSh0ZXh0UnVuKTsKQEAgLTQ5OSw3ICs0OTcsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlckJveE1v
ZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4dERlY29yYXRpb24oSW5saW5lRgog
ICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRE
ZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3Jh
dGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkKK3ZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgVGV4dERlY29y
YXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAg
ICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgPT0gVGV4
dERlY29yYXRpb25Ob25lKQogICAgICAgICByZXR1cm47CkBAIC01MjcsNyArNTI1LDcgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBUZXh0RGVjb3JhdGlvbgogICAgIH0KIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94Ojpw
YWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGVj
b3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKQordm9pZCBTVkdJbmxpbmVUZXh0
Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBU
ZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50
LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKQogewogICAgIEFTU0VS
VCghbV9wYWludGluZ1Jlc291cmNlKTsKICAgICBBU1NFUlQobV9wYWludGluZ1Jlc291cmNlTW9k
ZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUpOwpAQCAtNTQ5LDExICs1NDcsMTEgQEAgdm9pZCBTVkdJ
bmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBUZXh0RGUKICAgICBmbG9hdCB3aWR0aCA9IGZyYWdtZW50LndpZHRoOwogICAgIGNv
bnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9IHNjYWxlZEZvbnQuZm9udE1ldHJp
Y3MoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4
dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
ICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKICAgICAgICAgd2lkdGggKj0gc2NhbGluZ0Zh
Y3RvcjsKICAgICAgICAgZGVjb3JhdGlvbk9yaWdpbi5zY2FsZShzY2FsaW5nRmFjdG9yLCBzY2Fs
aW5nRmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBzY2FsaW5n
RmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0
U2l6ZSgxIC8gc2NhbGluZ0ZhY3RvciwgMSAvIHNjYWxpbmdGYWN0b3IpKTsKICAgICB9CiAKICAg
ICBkZWNvcmF0aW9uT3JpZ2luLm1vdmUoMCwgLXNjYWxlZEZvbnRNZXRyaWNzLmZsb2F0QXNjZW50
KCkgKyBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oZGVjb3JhdGlvbiwgc2NhbGVkRm9udE1l
dHJpY3MsIHRoaWNrbmVzcykpOwpAQCAtNTYxLDExICs1NTksMTIgQEAgdm9pZCBTVkdJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBUZXh0RGUKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5hZGRSZWN0KEZsb2F0UmVjdChkZWNv
cmF0aW9uT3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHRoaWNrbmVzcykpKTsKIAotICAgIGlmIChh
Y3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBzY2FsaW5nRmFjdG9yLCBkZWNvcmF0aW9u
UmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5bGUpKQotICAgICAgICByZWxlYXNlUGFpbnRpbmdSZXNv
dXJjZShjb250ZXh0LCAmcGF0aCk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0g
JmNvbnRleHQ7CisgICAgaWYgKGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHRQdHIsIHNj
YWxpbmdGYWN0b3IsIGRlY29yYXRpb25SZW5kZXJlciwgJmRlY29yYXRpb25TdHlsZSkpCisgICAg
ICAgIHJlbGVhc2VQYWludGluZ1Jlc291cmNlKGNvbnRleHRQdHIsICZwYXRoKTsKIH0KIAotdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiBmcmFnbWVudCwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlv
bikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNv
bnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5k
UG9zaXRpb24pCiB7CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3RvciA9IHJlbmRlcmVyKCkuc2NhbGlu
Z0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9yKTsKQEAgLTU4MywyNCArNTgyLDI1
IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsCiAKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChG
bG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2luLnkoKSAtIHNjYWxlZEZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUpOwogCisgICAgR3JhcGhpY3NDb250
ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OwogICAgIGRvIHsKLSAgICAgICAgaWYgKCFwcmVw
YXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKGNvbnRleHQsIHNjYWxpbmdGYWN0b3Is
IHRleHRSdW4sIHN0eWxlKSkKKyAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9y
VGV4dFBhaW50aW5nKHVzZWRDb250ZXh0LCBzY2FsaW5nRmFjdG9yLCB0ZXh0UnVuLCBzdHlsZSkp
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBTaGFkb3dBcHBs
aWVyIHNoYWRvd0FwcGxpZXIoKmNvbnRleHQsIHNoYWRvdywgc2hhZG93UmVjdCk7CisgICAgICAg
ICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKnVzZWRDb250ZXh0LCBzaGFkb3csIHNo
YWRvd1JlY3QpOwogCiAgICAgICAgICAgICBpZiAoIXNoYWRvd0FwcGxpZXIuZGlkU2F2ZUNvbnRl
eHQoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgICAgICAgICBjb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9y
KSk7CisgICAgICAgICAgICAgICAgdXNlZENvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgIHVz
ZWRDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5n
RmFjdG9yKSk7CiAKLSAgICAgICAgICAgIHNjYWxlZEZvbnQuZHJhd1RleHQoY29udGV4dCwgdGV4
dFJ1biwgdGV4dE9yaWdpbiArIHNoYWRvd0FwcGxpZXIuZXh0cmFPZmZzZXQoKSwgc3RhcnRQb3Np
dGlvbiwgZW5kUG9zaXRpb24pOworICAgICAgICAgICAgc2NhbGVkRm9udC5kcmF3VGV4dCgqdXNl
ZENvbnRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0
KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKIAogICAgICAgICAgICAgaWYgKCFzaGFk
b3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOworICAgICAgICAgICAgICAgIHVzZWRDb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgICAg
IH0KIAotICAgICAgICByZXN0b3JlR3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmcoY29u
dGV4dCwgdGV4dFJ1bik7CisgICAgICAgIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQ
YWludGluZyh1c2VkQ29udGV4dCwgdGV4dFJ1bik7CiAKICAgICAgICAgaWYgKCFzaGFkb3cpCiAg
ICAgICAgICAgICBicmVhazsKQEAgLTYwOSw3ICs2MDksNyBAQCB2b2lkIFNWR0lubGluZVRleHRC
b3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVy
U3R5bAogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBS
ZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21l
bnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKK3ZvaWQg
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0
ZWRUZXh0T25seSkKIHsKICAgICBBU1NFUlQoc3R5bGUpOwogICAgIEFTU0VSVChzZWxlY3Rpb25T
dHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5oCmluZGV4IDIzYzA3NjlmZTlmYTc3NjI4YmVkMDFlYTNjYjBjNzllNWFhY2ZiNjguLjE3ZWNl
ZjNhY2E5NDVmNzFiMmU1ZmM4NDZhOTMxNWQyZmZjYTExM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCkBAIC03NywxMCArNzcsMTAgQEAg
cHJpdmF0ZToKICAgICBib29sIHByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRpbmco
R3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIFRleHRSdW4mLCBSZW5kZXJT
dHlsZSopOwogICAgIHZvaWQgcmVzdG9yZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBhaW50aW5n
KEdyYXBoaWNzQ29udGV4dComLCBUZXh0UnVuJik7CiAKLSAgICB2b2lkIHBhaW50RGVjb3JhdGlv
bihHcmFwaGljc0NvbnRleHQqLCBUZXh0RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50
Jik7Ci0gICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250ZXh0Kiwg
VGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIFJlbmRlckJveE1vZGVsT2Jq
ZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
R3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0UnVuJiwgY29uc3QgU1ZHVGV4dEZy
YWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbik7Ci0gICAgdm9pZCBw
YWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogc2Vs
ZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGJvb2wgaGFzU2VsZWN0aW9uLCBi
b29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CisgICAgdm9pZCBwYWludERlY29yYXRpb24oR3Jh
cGhpY3NDb250ZXh0JiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYpOwor
ICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCYsIFRleHRE
ZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYg
ZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBo
aWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pOworICAgIHZvaWQgcGFpbnRU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHNlbGVjdGlv
blN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBw
YWludFNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFj
dGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDIxMmExNjZlYzBjZjIwNzZmYmM3M2IxMTM0
YWU4YmJiZDY2MzczZjAuLmZiOWEwM2M1OTVlNjM2MDY5NmFlMWIzZmQ1ZmIyMTRjZjM2NGYwNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtNTYsMTkgKzU2LDIwIEBAIFNWR1JlbmRlcmluZ0NvbnRleHQ6On5TVkdS
ZW5kZXJpbmdDb250ZXh0KCkKIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kRmlsdGVy
TGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKG1fZmlsdGVyKTsKLSAgICAgICAgbV9maWx0ZXItPnBv
c3RBcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBtX3BhaW50SW5mby0+Y29udGV4dCwgQXBwbHlU
b0RlZmF1bHRNb2RlLCAwLCAwKTsKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQgPSBtX3Nh
dmVkQ29udGV4dDsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gJm1fcGFp
bnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgIG1fZmlsdGVyLT5wb3N0QXBwbHlSZXNvdXJjZSgq
bV9yZW5kZXJlciwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAwKTsKKyAgICAg
ICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKm1fc2F2ZWRDb250ZXh0KTsKICAgICAgICAgbV9w
YWludEluZm8tPnJlY3QgPSBtX3NhdmVkUGFpbnRSZWN0OwogICAgIH0KIAogICAgIGlmIChtX3Jl
bmRlcmluZ0ZsYWdzICYgRW5kT3BhY2l0eUxheWVyKQotICAgICAgICBtX3BhaW50SW5mby0+Y29u
dGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRl
eHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAgaWYgKG1fcmVuZGVyaW5nRmxhZ3Mg
JiBFbmRTaGFkb3dMYXllcikKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZW5kVHJhbnNw
YXJlbmN5TGF5ZXIoKTsKIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgUmVzdG9yZUdyYXBo
aWNzQ29udGV4dCkKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgUGFpbnRJbmZvJiBwYWludEluZm8sIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSBu
ZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUpCkBAIC04NSw3ICs4Niw3IEBAIHZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5k
ZXJlciwgUGFpCiAKICAgICAvLyBXZSBuZWVkIHRvIHNhdmUgLyByZXN0b3JlIHRoZSBjb250ZXh0
IGV2ZW4gaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KICAgICBpZiAobmVlZHNHcmFwaGlj
c0NvbnRleHRTYXZlID09IFNhdmVHcmFwaGljc0NvbnRleHQpIHsKLSAgICAgICAgbV9wYWludElu
Zm8tPmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zYXZl
KCk7CiAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gUmVzdG9yZUdyYXBoaWNzQ29udGV4dDsK
ICAgICB9CiAKQEAgLTExMSwyNCArMTEyLDI0IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6
cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAK
ICAgICBpZiAob3BhY2l0eSA8IDEgfHwgc2hhZG93IHx8IGhhc0JsZW5kTW9kZSB8fCBpc29sYXRl
TWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewogICAgICAgICBGbG9hdFJlY3QgcmVw
YWludFJlY3QgPSBtX3JlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwot
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcChyZXBhaW50UmVjdCk7CisgICAgICAg
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcChyZXBhaW50UmVjdCk7CiAKICAgICAgICAgaWYg
KG9wYWNpdHkgPCAxIHx8IGhhc0JsZW5kTW9kZSB8fCBpc29sYXRlTWFza0ZvckJsZW5kaW5nIHx8
IGhhc0lzb2xhdGlvbikgewogCiAgICAgICAgICAgICBpZiAoaGFzQmxlbmRNb2RlKQotICAgICAg
ICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9w
YWludEluZm8tPmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBzdHlsZS5ibGVuZE1vZGUo
KSk7CisgICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRDb21wb3NpdGVP
cGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKSwgc3R5
bGUuYmxlbmRNb2RlKCkpOwogCi0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5j
b250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKIAogICAgICAgICAgICAg
aWYgKGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jb21wb3NpdGVPcGVy
YXRpb24oKSwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgICAgICAgICBtX3BhaW50SW5mby0+
Y29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BhaW50SW5mby0+Y29udGV4dCgpLmNv
bXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgICAgICAgICBtX3Jl
bmRlcmluZ0ZsYWdzIHw9IEVuZE9wYWNpdHlMYXllcjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChzaGFkb3cpIHsKLSAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zZXRTaGFkb3co
SW50U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwgcm91bmRUb0ludChzaGFkb3ctPnkoKSkp
LCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7
Ci0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0U2hhZG93KEludFNp
emUocm91bmRUb0ludChzaGFkb3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hh
ZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEp
OwogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBFbmRTaGFkb3dMYXllcjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6
OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQog
ICAgICAgICAgICAgcmVmZXJlbmNlQm94LnNldEhlaWdodCh2aWV3cG9ydFNpemUuaGVpZ2h0KCkp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHJlbmRlcmVyLm9i
amVjdEJvdW5kaW5nQm94KCk7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5jbGlwUGF0
aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VCb3gpLCBjbGlwUGF0aC53
aW5kUnVsZSgpKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5jbGlwUGF0aChjbGlw
UGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VCb3gpLCBjbGlwUGF0aC53aW5kUnVs
ZSgpKTsKICAgICB9CiAKICAgICBhdXRvKiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6
Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIoKm1fcmVuZGVyZXIpOwpAQCAtMTYxLDI2ICsxNjIs
MzUgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkKIAogICAgIGlmICghaXNSZW5kZXJpbmdNYXNr
KSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gcmVzb3Vy
Y2VzLT5tYXNrZXIoKSkgewotICAgICAgICAgICAgaWYgKCFtYXNrZXItPmFwcGx5UmVzb3VyY2Uo
Km1fcmVuZGVyZXIsIHN0eWxlLCBtX3BhaW50SW5mby0+Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRN
b2RlKSkKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9ICZtX3BhaW50
SW5mby0+Y29udGV4dCgpOworICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBtYXNrZXItPmFwcGx5
UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0UHRyLCBBcHBseVRvRGVmYXVsdE1v
ZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOwor
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gcmVz
b3VyY2VzLT5jbGlwcGVyKCk7CiAgICAgaWYgKCFjbGlwUGF0aE9wZXJhdGlvbiAmJiBjbGlwcGVy
KSB7Ci0gICAgICAgIGlmICghY2xpcHBlci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgc3R5
bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVmYXVsdE1vZGUpKQorICAgICAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWludEluZm8tPmNvbnRleHQoKTsKKyAg
ICAgICAgYm9vbCByZXN1bHQgPSBjbGlwcGVyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBz
dHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICAgICAgbV9wYWludElu
Zm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWlzUmVuZGVyaW5nTWFzaykgewogICAg
ICAgICBtX2ZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCk7CiAgICAgICAgIGlmIChtX2ZpbHRl
cikgewotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSBtX3BhaW50SW5mby0+Y29udGV4dDsK
KyAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CiAg
ICAgICAgICAgICBtX3NhdmVkUGFpbnRSZWN0ID0gbV9wYWludEluZm8tPnJlY3Q7CiAgICAgICAg
ICAgICAvLyBSZXR1cm4gd2l0aCBmYWxzZSBoZXJlIG1heSBtZWFuIHRoYXQgd2UgZG9uJ3QgbmVl
ZCB0byBkcmF3IHRoZSBjb250ZW50CiAgICAgICAgICAgICAvLyAoYmVjYXVzZSBpdCB3YXMgZWl0
aGVyIGRyYXduIGJlZm9yZSBvciBlbXB0eSkgYnV0IHdlIHN0aWxsIG5lZWQgdG8gYXBwbHkgdGhl
IGZpbHRlci4KICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gRW5kRmlsdGVyTGF5ZXI7
Ci0gICAgICAgICAgICBpZiAoIW1fZmlsdGVyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBz
dHlsZSwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9EZWZhdWx0TW9kZSkpCisgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWludEluZm8tPmNvbnRleHQo
KTsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9maWx0ZXItPmFwcGx5UmVzb3VyY2UoKm1f
cmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0UHRyLCBBcHBseVRvRGVmYXVsdE1vZGUpOworICAgICAg
ICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBT
aW5jZSB3ZSdyZSBjYWNoaW5nIHRoZSByZXN1bHRpbmcgYml0bWFwIGFuZCBkbyBub3QgaW52YWxp
ZGF0ZSBpdCBvbiByZXBhaW50IHJlY3QKQEAgLTI1NCw5ICsyNjQsOCBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UgogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgdHJhbnNmb3Jt
LnNjYWxlKHNjYWxlKS50cmFuc2xhdGUoLXBhaW50UmVjdC5sb2NhdGlvbigpKS5tdWx0aXBseShh
YnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGltYWdlQ29udGV4dCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4dCk7Ci0gICAg
aW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odHJhbnNmb3JtKTsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgaW1hZ2VDb250ZXh0
LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQpAQCAt
Mjc0LDExICsyODMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKICAgICBpZiAoIWltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCog
aW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoaW1hZ2VD
b250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVy
LT5jb250ZXh0KCk7CiAKICAgICAvLyBDb21wZW5zYXRlIHJvdW5kaW5nIGVmZmVjdHMsIGFzIHRo
ZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFu
ZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4KLSAgICBpbWFnZUNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkgLyB0YXJnZXRSZWN0LndpZHRoKCks
IHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7CisgICAgaW1h
Z2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkgLyB0YXJnZXRS
ZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0LmhlaWdodCgp
KSk7CiAKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CkBAIC0yODYsNyArMjk0LDYgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFIKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3Vi
dHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBSZW5kZXJFbGVtZW50JiBpdGVt
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1YnRyZWVDb250ZW50VHJhbnNmb3JtYXRpb24pCiB7
CiAgICAgQVNTRVJUKGltYWdlKTsKLSAgICBBU1NFUlQoaW1hZ2UtPmNvbnRleHQoKSk7CiAKICAg
ICBQYWludEluZm8gaW5mbyhpbWFnZS0+Y29udGV4dCgpLCBMYXlvdXRSZWN0OjppbmZpbml0ZVJl
Y3QoKSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIFBhaW50QmVoYXZpb3JOb3JtYWwpOwogCkBAIC0z
MDAsMTggKzMwNywxNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVU
b0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVyRQogICAgIGNvbnRlbnRUcmFu
c2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0aW9uOwogfQogCi12b2lkIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZl
ciwgYm9vbCBzYWZlVG9DbGVhcikKK3ZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1h
Z2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQogewot
ICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxv
YXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJn
ZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMg
YmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1h
Z2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHBy
b2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMg
d2VsbC4KLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgp
KTsKLSAgICBjb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgYWJz
b2x1dGVUYXJnZXRSZWN0KTsKLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zv
cm0pOworICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7
CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgYWJzb2x1
dGVUYXJnZXRSZWN0KTsKKyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7
CiAKICAgICAvLyBXaGVuIG5lc3RpbmcgcmVzb3VyY2VzLCB3aXRoIG9iamVjdEJvdW5kaW5nQm94
IGFzIGNvbnRlbnQgdW5pdCB0eXBlcywgdGhlcmUncyBubyB1c2UgaW4gY2FjaGluZyB0aGUKICAg
ICAvLyByZXN1bHRpbmcgaW1hZ2UgYnVmZmVyIGFzIHRoZSBwYXJlbnQgcmVzb3VyY2UgYWxyZWFk
eSBjYWNoZXMgdGhlIHJlc3VsdC4KQEAgLTMzNSw3ICszNDEsNyBAQCBib29sIFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdQogCiAgICAgLy8gSW52YWxpZGF0ZSBhbiBleGlzdGluZyBidWZmZXIgaWYgdGhlIHNj
YWxlIGlzIG5vdCBjb3JyZWN0LgogICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8tPmNvbnRleHQtPmdldENUTShHcmFw
aGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8tPmNvbnRleHQoKS5nZXRDVE0oR3Jh
cGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgSW50
U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNp
emUoKSk7CiAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwo
ZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJhbnNmb3JtLnhTY2FsZSgpKSksIHN0YXRp
Y19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94LmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogICAgICAgICBpZiAoYnVmZmVyU2l6ZSAhPSBpbWFnZUJ1ZmZlci0+aW50
ZXJuYWxTaXplKCkpCkBAIC0zNDQsMTcgKzM1MCwxNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VC
dQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQg
aW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGlmICgoaW1hZ2VCdWZm
ZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkpKSB7Ci0gICAgICAgICAgICBHcmFw
aGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250
ZXh0KCk7Ci0gICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQtPnRyYW5zbGF0ZSgt
Ym91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsKKyAgICAgICAgaWYgKChpbWFnZUJ1
ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBh
bmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkpKSB7CisgICAgICAgICAgICBH
cmFwaGljc0NvbnRleHQmIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dCA9IGltYWdlQnVmZmVyLT5j
b250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQudHJhbnNsYXRl
KC1ib3VuZGluZ0JveC54KCksIC1ib3VuZGluZ0JveC55KCkpOwogICAgICAgICAgICAgUGFpbnRJ
bmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWludEluZm8pOwotICAgICAgICAgICAgYnVmZmVyZWRJbmZv
LmNvbnRleHQgPSBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7CisgICAgICAgICAgICBidWZmZXJl
ZEluZm8uc2V0Q29udGV4dChidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQpOwogICAgICAgICAgICAg
ZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRlcmVyKS5wYWludEZvcmVncm91bmQoYnVm
ZmVyZWRJbmZvKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgbV9wYWludEluZm8tPmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1
ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOworICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgK
aW5kZXggOWEyM2MyNTEyM2I4N2VjMjljZmRhMGNlYzdlYzI0NTY1OTg0M2Q4YS4uNDYzODRjNDhl
YTBmOGFlNGE4OGI2NWMxMjdlMThkY2YxZmMzY2ZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBj
bGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSk7CiAKICAgICBzdGF0aWMgdm9p
ZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIFJlbmRlckVsZW1lbnQm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKKyAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAogICAgIHN0YXRpYyBmbG9hdCBjYWxj
dWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29uc3QgUmVuZGVyT2JqZWN0Jik7CiAg
ICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJt
b3N0Q29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IGQxYTc4Mzg5
YTE1NjRjNDRhZTEyNmQ0ZDFlYWExZTA2NDk3ZWNiYjMuLjhiODAxNGI2MDEzZmZjYmMwYmQwMDQ2
MzFhODNkNTA2ZWYwOGM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAtNDksNyArNDksNyBAQCBSZW5kZXJTVkdUZXh0JiBT
VkdSb290SW5saW5lQm94OjpyZW5kZXJTVkdUZXh0KCkKIHZvaWQgU1ZHUm9vdElubGluZUJveDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
U2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVk
KCkpOwogCiAgICAgYm9vbCBpc1ByaW50aW5nID0gcmVuZGVyU1ZHVGV4dCgpLmRvY3VtZW50KCku
cHJpbnRpbmcoKTsKICAgICBib29sIGhhc1NlbGVjdGlvbiA9ICFpc1ByaW50aW5nICYmIHNlbGVj
dGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCBkZDNmMjg1NTdlMDYyNzM4NmQwNWNiZjNlYzBmNmY5N2Y1NTY3ZTVhLi5m
ZDY5ZmE0ODkyOTViMDJkYjAwY2JmNWRiZTM3MDI1YzYxYzgwNGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250
ZXh0LmNwcApAQCAtMjYyLDEzICsyNjIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9QYXRo
VHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUdseXBoVG8KICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdHbHlwaFRvUGF0aFRyYW5zbGF0b3I+KHRleHRS
dW4sIGdseXBoQnVmZmVyLCBwb2ludCwgKnN2Z0ZvbnREYXRhLCAqZm9udEVsZW1lbnQsIGZyb20s
IG51bUdseXBocywgc2NhbGUsIGlzVmVydGljYWxUZXh0KTsKIH0KIAotdm9pZCBTVkdUZXh0UnVu
UmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZy
b20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25z
dAogewogICAgIGF1dG8gYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IHRoaXMtPmFjdGl2ZVBhaW50
aW5nUmVzb3VyY2UoKTsKICAgICBpZiAoIWFjdGl2ZVBhaW50aW5nUmVzb3VyY2UpIHsKICAgICAg
ICAgLy8gVE9ETzogV2UncmUgb25seSBzdXBwb3J0aW5nIHNpbXBsZSBmaWxsZWQgSFRNTCB0ZXh0
IHNvIGZhci4KICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yKiBzb2xpZFBhaW50
aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hhcmVkU29saWRQYWludGluZ1Jlc291
cmNlKCk7Ci0gICAgICAgIHNvbGlkUGFpbnRpbmdSZXNvdXJjZS0+c2V0Q29sb3IoY29udGV4dC0+
ZmlsbENvbG9yKCkpOworICAgICAgICBzb2xpZFBhaW50aW5nUmVzb3VyY2UtPnNldENvbG9yKGNv
bnRleHQuZmlsbENvbG9yKCkpOwogICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlID0gc29s
aWRQYWludGluZ1Jlc291cmNlOwogICAgIH0KIApAQCAtMjc3LDE1ICsyNzcsMTYgQEAgdm9pZCBT
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEYKIAogICAgIEFTU0VSVChhY3RpdmVQYWludGluZ1Jlc291cmNlKTsK
IAotICAgIFJlbmRlclNWR1Jlc291cmNlTW9kZSByZXNvdXJjZU1vZGUgPSBjb250ZXh0LT50ZXh0
RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5VG9TdHJva2VNb2RlIDogQXBw
bHlUb0ZpbGxNb2RlOwotICAgIGZvciAoYXV0byB0cmFuc2xhdG9yID0gY3JlYXRlR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yKCpmb250LCBudWxscHRyLCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhz
LCBwb2ludCk7IHRyYW5zbGF0b3ItPmNvbnRhaW5zTW9yZVBhdGhzKCk7IHRyYW5zbGF0b3ItPmFk
dmFuY2UoKSkgeworICAgIEdyYXBoaWNzQ29udGV4dCogdXNlZENvbnRleHQgPSAmY29udGV4dDsK
KyAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3VyY2VNb2RlID0gY29udGV4dC50ZXh0RHJh
d2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5VG9TdHJva2VNb2RlIDogQXBwbHlU
b0ZpbGxNb2RlOworICAgIGZvciAoYXV0byB0cmFuc2xhdG9yID0gY3JlYXRlR2x5cGhUb1BhdGhU
cmFuc2xhdG9yKGZvbnQsIG51bGxwdHIsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBv
aW50KTsgdHJhbnNsYXRvci0+Y29udGFpbnNNb3JlUGF0aHMoKTsgdHJhbnNsYXRvci0+YWR2YW5j
ZSgpKSB7CiAgICAgICAgIFBhdGggZ2x5cGhQYXRoID0gdHJhbnNsYXRvci0+cGF0aCgpOwotICAg
ICAgICBpZiAoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZShlbGVtZW50UmVu
ZGVyZXIsIHN0eWxlLCBjb250ZXh0LCByZXNvdXJjZU1vZGUpKSB7Ci0gICAgICAgICAgICBmbG9h
dCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKTsKKyAgICAgICAg
aWYgKGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVy
LCBzdHlsZSwgdXNlZENvbnRleHQsIHJlc291cmNlTW9kZSkpIHsKKyAgICAgICAgICAgIGZsb2F0
IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhpY2tuZXNzKCk7CiAgICAgICAgICAg
ICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVyZXIoKSkpCi0gICAgICAgICAgICAg
ICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIGRvd25jYXN0
PFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpLnNjYWxpbmdGYWN0b3IoKSk7Ci0gICAg
ICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZShlbGVtZW50
UmVuZGVyZXIsIGNvbnRleHQsIHJlc291cmNlTW9kZSwgJmdseXBoUGF0aCwgbnVsbHB0cik7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKTsK
KyAgICAgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRo
aWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpLnNjYWxp
bmdGYWN0b3IoKSk7CisgICAgICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlLT5wb3N0QXBw
bHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHVzZWRDb250ZXh0LCByZXNvdXJjZU1vZGUsICZn
bHlwaFBhdGgsIG51bGxwdHIpOworICAgICAgICAgICAgdXNlZENvbnRleHQtPnNldFN0cm9rZVRo
aWNrbmVzcyhzdHJva2VUaGlja25lc3MpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dC5oCmluZGV4IDUwMWI5YzhmZjEwNTI0YTQ5OGE2ZmU3NzdjYjY5OTk3NzQxZWRjMDQuLjlk
ODVmYmU3YmFhOWVkNDk3NTE4MjY4NmJlM2IxZTkxN2EwNjQ5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QWN0aXZlUGFpbnRpbmdS
ZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJjZSogb2JqZWN0KSB7IG1fYWN0aXZlUGFpbnRpbmdSZXNv
dXJjZSA9IG9iamVjdDsgfQogCiAgICAgdmlydHVhbCBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFj
dGVyLCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNl
TGVuZ3RoLCBTdHJpbmcmIG5vcm1hbGl6ZWRTcGFjZXNTdHJpbmdDYWNoZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRm9u
dCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCB0bywgY29uc3QgRmxvYXRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBp
bnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGZs
b2F0IGZsb2F0V2lkdGhVc2luZ1NWR0ZvbnQoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBUZXh0
UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVkLCBTdHJpbmcmIGdseXBoTmFtZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHS2VybmluZyhjb25zdCBGb250KiwgV2lkdGhJ
dGVyYXRvciYsIEdseXBoQnVmZmVyKiwgaW50IGZyb20pIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA5NjFlMTk4OWU1
NzJiYmI3MmE2ZTNlZTliYWEyNDA4YTFlNjU4NGI4Li4wODE1M2MxYTkzZmEzNmYyNWUzMDY5Njk2
MTg3NTMxZmJhMGM1OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkg
Y29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgzMDAsIDE1MCk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6
OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAor
dm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCB6b29tLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsCiAgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtMTg0LDE0ICsxODQsMTQgQEAgUGFzc05hdGl2
ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpCiB9CiAjZW5k
aWYKIAotdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAordm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFp
bmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAogICAgIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBG
bG9hdFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNv
bnRhaW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoem9vbSk7CiAKICAg
ICAvLyBUaGUgSW1hZ2VCdWZmZXIgc2l6ZSBuZWVkcyB0byBiZSBzY2FsZWQgdG8gbWF0Y2ggdGhl
IGZpbmFsIHJlc29sdXRpb24uCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRl
eHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0Lmdl
dENUTSgpOwogICAgIEZsb2F0U2l6ZSBpbWFnZUJ1ZmZlclNjYWxlID0gRmxvYXRTaXplKHRyYW5z
Zm9ybS54U2NhbGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZm
ZXJTY2FsZS53aWR0aCgpKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7
CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWlu
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBpZiAoIWJ1
ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAg
IGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIHpvb20s
IGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29sb3JTcGFjZURldmljZVJH
QiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKLSAgICBpZiAoY29udGV4
dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkKKyAgICBpZiAoY29udGV4dC5kcmF3THVtaW5hbmNlTWFz
aygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIAogICAgIFJl
ZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9y
ZSwgVW5zY2FsZWQpOwpAQCAtMjE3LDExICsyMTcsMTEgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUKICAgICBBZmZpbmVUcmFuc2Zvcm0gdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5U
cmFuc2Zvcm0pOwogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VC
dWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAg
ICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CisgICAgY29udGV4dC5zZXRE
cmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQs
IHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbG9yU3Bh
Y2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOwogfQogCi12b2lkIFNWR0ltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKQEAgLTIyOSwxNSArMjI5LDE1IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAgICAgQVNTRVJUKHZpZXcpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBj
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0g
ICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5j
bGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwogCi0gICAgZmxvYXQgYWxwaGEgPSBjb250
ZXh0LT5hbHBoYSgpOworICAgIGZsb2F0IGFscGhhID0gY29udGV4dC5hbHBoYSgpOwogICAgIGJv
b2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gY29tcG9zaXRlT3AgIT0g
Q29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9ybWFsIHx8IGFs
cGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKSB7
Ci0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwotICAgICAg
ICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxl
bmRNb2RlTm9ybWFsKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFs
cGhhKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICB9CiAKICAgICBGbG9hdFNpemUgc2NhbGUo
ZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3Jj
UmVjdC5oZWlnaHQoKSk7CkBAIC0yNDcsOCArMjQ3LDggQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmwKICAgICBGbG9hdFNpemUgdG9wTGVmdE9mZnNldChzcmNSZWN0LmxvY2F0aW9uKCkueCgpICog
c2NhbGUud2lkdGgoKSwgc3JjUmVjdC5sb2NhdGlvbigpLnkoKSAqIHNjYWxlLmhlaWdodCgpKTsK
ICAgICBGbG9hdFBvaW50IGRlc3RPZmZzZXQgPSBkc3RSZWN0LmxvY2F0aW9uKCkgLSB0b3BMZWZ0
T2Zmc2V0OwogCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0T2Zm
c2V0LnkoKSk7Ci0gICAgY29udGV4dC0+c2NhbGUoc2NhbGUpOworICAgIGNvbnRleHQudHJhbnNs
YXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7CisgICAgY29udGV4dC5zY2FsZShz
Y2FsZSk7CiAKICAgICB2aWV3LT5yZXNpemUoY29udGFpbmVyU2l6ZSgpKTsKIApAQCAtMjU4LDEw
ICsyNTgsMTAgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICBpZiAodmlldy0+bmVlZHNM
YXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAKLSAgICB2aWV3LT5wYWludChjb250
ZXh0LCBpbnRlcnNlY3Rpb24oY29udGV4dC0+Y2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0
KHNyY1JlY3QpKSk7CisgICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0aW9uKGNvbnRl
eHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CiAKICAgICBpZiAo
Y29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CiAKICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA2ZGY1YTFhNGU4ZTJiNTQ0NDIxNWI3NzVlMTQ1MDBmNWNi
ZmE0NzA0Li5mYWU4ZDBjODNlOTI0YTY3NGYwMTEyMTZiODJlNWViM2JmMjA0MTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtOTEsOSArOTEsOSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYsIGNvbnN0
IFVSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdGb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworICAgIHZvaWQgZHJhd1BhdHRlcm5G
b3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IENvbG9yU3BhY2UsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3Qm
LCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCogcm9vdEVsZW1lbnQoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCmluZGV4IDEwNTM1NDgxODcyOWY3ODU4NGZmYTM3ZWViYTViMTMwMTEwZTY1OTguLjE5
YzQ3MWIyYzg5MjQwYzM1ZGNmNmVkOWJmNjE2ZTM4ZjYxNTY3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtMzQs
MTMgKzM0LDEzIEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXpl
KSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCit2b2lkIFNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAgIG1faW1hZ2UtPmRyYXdGb3JDb250
YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pvb20sIGRzdFJlY3QsIHNyY1JlY3Qs
IGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogfQogCi12b2lkIFNWR0ltYWdl
Rm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLAordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIG1faW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IGE0ZWVhYTlmNzYzYjZmM2U2MGMw
ZjNjMWE5NzA2M2UzYmFiMDJiMjAuLjk3Njk1ZmRhOGY2YjllYzBkYzdiODk5ZjIwOTVkOWZhMDM1
MTYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbWFnZS0+
Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdo
dCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9k
ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jiwg
QmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKaW5kZXggMTU2NzQ0MzIy
Yjg0ODhiZjM4ZWE0YzNlZGNlYjA2MjhiYmU1MzgwMy4uZjA3MjUxOGY0NDE3NTExYzc5MTM5MGU5
OTYyN2Y1YjVkMTdlNDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEZFSW1hZ2U6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAocmVuZGVyZXIpIHsKICAgICAgICAg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSA9IGZpbHRlcigpLmFic29s
dXRlVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmNvbmNhdENU
TShhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuY29u
Y2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0
Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAg
ICBpZiAoY29udGV4dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAg
Ly8gSWYgd2UncmUgcmVmZXJlbmNpbmcgYW4gZWxlbWVudCB3aXRoIHBlcmNlbnRhZ2UgdW5pdHMs
IGVnLiA8cmVjdCB3aXRoPSIzMCUiPiB0aG9zZSB2YWx1ZXMgd2VyZSByZXNvbHZlZCBhZ2FpbnN0
IHRoZSB2aWV3cG9ydC4KICAgICAgICAgICAgIC8vIEJ1aWxkIHVwIGEgdHJhbnNmb3JtYXRpb24g
dGhhdCBtYXBzIGZyb20gdGhlIHZpZXdwb3J0IHNwYWNlIHRvIHRoZSBmaWx0ZXIgcHJpbWl0aXZl
IHN1YnJlZ2lvbi4KICAgICAgICAgICAgIGlmIChsZW5ndGhDb250ZXh0LmRldGVybWluZVZpZXdw
b3J0KHZpZXdwb3J0U2l6ZSkpCi0gICAgICAgICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KS0+Y29uY2F0Q1RNKG1ha2VNYXBCZXR3ZWVuUmVjdHMoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
dmlld3BvcnRTaXplKSwgZGVzdFJlY3QpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLmNvbmNhdENUTShtYWtlTWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIHZpZXdwb3J0U2l6ZSksIGRlc3RSZWN0KSk7CiAgICAgICAgIH0KIAogICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gY29udGVudFRyYW5zZm9ybWF0aW9uOwpAQCAtMTM1LDcgKzEzNSw3IEBA
IHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZShtX2ltYWdlLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgcmVzdWx0
SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIEZFSW1hZ2U6OmR1bXAoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggNTEy
YWY0MTk0Y2IyNTEzODE4ZDkxMTIzNDkxZjZkMjBlNDhhZjhiNC4uMDAyNWFlMjkzMDIxN2EyYWU2
NjJmZjA0ZDZhMGI2NGM5YjRiZGRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlz
Yy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgLSAodm9pZClfd2ViX2Ry
YXdBdFBvaW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENvbG9yOihO
U0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5T
RGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUg
YWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtl
UkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwogCi0gICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KCZncmFw
aGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxpcHBlZCA/IHBvaW50Lnkg
OiAoLTEgKiBwb2ludC55KSkpKTsKKyAgICAgICAgd2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhp
Y3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDog
KC0xICogcG9pbnQueSkpKSk7CiAKICAgICAgICAgaWYgKCFmbGlwcGVkKQogICAgICAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCmluZGV4
IDEyNzgwMjBiODVjNThiMmViM2E4NzhjM2IwM2IzMWQzZmU5ZmQzZGEuLmNmY2NkM2NkNjQ5MjY1
MjE5NzZjNmJmMTg1NmI2ZThmYjQ1M2RkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCkBAIC00ODIsNyAr
NDgyLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZv
ckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAgICBQYWludEJlaGF2aW9yIG9sZFBh
aW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXct
PnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwogCi0gICAgYnVm
ZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtdG9GbG9hdFNpemUocmVjdC5sb2NhdGlvbigpKSk7
CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10b0Zsb2F0U2l6ZShyZWN0LmxvY2F0
aW9uKCkpKTsKICAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHMoYnVmZmVyLT5jb250ZXh0KCks
IHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKIAogICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCmluZGV4IDQxZDAwODE2MzM3MDI3NGQxZjU1YzU5YTY1NzA4NmNmOTU0YmZiYzQu
LjBiMzIxMjA3YzMyM2U0ZGEwMDkzMGU5YzgwNGUwZDIzOGE5NGNkZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjQ0LDkgKzY0NCw5IEBAIC0gKHZvaWQpX2RyYXdS
ZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wpY29udGVudHNPbmx5CiAgICAgfQog
ICAgIAogICAgIGlmIChjb250ZW50c09ubHkpCi0gICAgICAgIHZpZXctPnBhaW50Q29udGVudHMo
JmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgICAgICB2aWV3LT5wYWludENv
bnRlbnRzKGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOwogICAgIGVsc2UKLSAgICAg
ICAgdmlldy0+cGFpbnQoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgICAg
ICB2aWV3LT5wYWludChjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKIAogICAgIGlm
IChzaG91bGRGbGF0dGVuKQogICAgICAgICB2aWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcAppbmRleCBjNGMzNjE5OWVkOWU5ZmRjNzY2ZWZlMDg0NTczNzljNzI4
NWViMzJlLi4xNmMzYTQ3OWE1MjNlMWJiYzRmYTc3NWVhOTA5ZGIwOGQxMGMyYzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBh
aW50KCkKICAgICBpZiAobV9wbHVnaW4tPmlzVHJhbnNwYXJlbnQoKSkKICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIG1fcGx1Z2luLT5wYWludChn
cmFwaGljc0NvbnRleHQuZ2V0KCksIGRpcnR5UmVjdCk7CisgICAgbV9wbHVnaW4tPnBhaW50KCpn
cmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7CiAKICAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJveHk6OlVwZGF0ZShkaXJ0eVJlY3QpLCBtX3Bs
dWdpbkluc3RhbmNlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHAKaW5kZXggZjc0MjU1OWUzZWQwYjVmMjZmYjMwMTk2YTI1MWRkZTVlY2YyNDY3
MC4uMzkxZWFjMWI0MjdhMGI1ZGMzZjk1NDRjOWMwOWMzYmJlYzg2MmVjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCkBAIC0xNjEsNyArMTYxLDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZy
YW1lVmlldywgY29uc3QgSW50UmVjdCYgcmUKIAogICAgIFBhaW50QmVoYXZpb3Igb2xkUGFpbnRC
ZWhhdmlvciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0
UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVu
dHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QsIHNob3VsZFBhaW50U2Vs
ZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmlldy0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QsIHNo
b3VsZFBhaW50U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOwogICAg
IGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2aW9yKTsKIAogICAgIHJl
dHVybiBzbmFwc2hvdC5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlUmFuZ2VIYW5kbGUuY3BwCmluZGV4IDUwMTk3NzBhOWU0NmQwZWJmNjVjODZlYjRiNzZlNGY2
YzMyZGRkMmUuLjY1ZmJlNzNiNWZmN2JmYmE3ZTIwMjQ0ZjhiMjNjMmE4MWJlMmM3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xNDMs
NyArMTQzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZTo6cmVuZGVyZWRJbWFnZShTbmFwc2hvdE9wdGlvbnMgb3AKICAgICBmcmFtZVZpZXctPnNldFBh
aW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7CiAgICAgb3duZXJEb2N1bWVudC51cGRhdGVMYXlv
dXQoKTsKIAotICAgIGZyYW1lVmlldy0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBwYWlu
dFJlY3QpOworICAgIGZyYW1lVmlldy0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgcGFpbnRSZWN0
KTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAK
ICAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCA5OWY5MTI3MjdkMzU3NjgzMTY3NTJjYTU0Nzc2ZWRi
OGY0NTNlM2E1Li4zM2I5MTNhOWZiZDk2NzM4ZmE1OGNmNzVkNTBhMTUxMjc0ZDBhNTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTc0NCw3ICs3NDQsNyBAQCB2b2lkIE5ldHNjYXBl
UGx1Z2luOjpkZXN0cm95KCkKICAgICBtX3RpbWVycy5jbGVhcigpOwogfQogICAgIAotdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBBU1NFUlQobV9p
c1N0YXJ0ZWQpOwogICAgIApAQCAtNzY4LDcgKzc2OCw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+IE5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCgpCiAgICAgLy8gd2hpY2ggd2UgY3VycmVudGx5
IGRvbid0IGhhdmUgaW5pdGlhdGVkIGluIHRoZSBwbHVnLWluIHByb2Nlc3MuCiAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgY29udGVudHNTY2FsZUZh
Y3RvcigpKSk7CiAKLSAgICBwbGF0Zm9ybVBhaW50KGNvbnRleHQuZ2V0KCksIEludFJlY3QoSW50
UG9pbnQoKSwgbV9wbHVnaW5TaXplKSwgdHJ1ZSk7CisgICAgcGxhdGZvcm1QYWludCgqY29udGV4
dCwgSW50UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVlKTsKIAogICAgIHJldHVy
biBiaXRtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IGU0NjgxNGE0YTg1ZTFjYTU0
NDRlOTFjMTI2NjYyNDE4MWE2NTcyYjkuLjI5ZTIyYzljZWQ2NmUwN2VmZTk1NWE1ZjFmZjM4NjBi
OTc3YjU5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0xNzcsNyArMTc3LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHBsYXRmb3JtSW52YWxpZGF0ZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUdlb21ldHJ5RGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBwbGF0
Zm9ybVZpc2liaWxpdHlEaWRDaGFuZ2UoKTsKLSAgICB2b2lkIHBsYXRmb3JtUGFpbnQoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0LCBi
b29sIGlzU25hcHNob3QgPSBmYWxzZSk7CisgICAgdm9pZCBwbGF0Zm9ybVBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgYm9v
bCBpc1NuYXBzaG90ID0gZmFsc2UpOwogCiAgICAgYm9vbCBwbGF0Zm9ybUhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYpOwogICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRl
cnMmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0
eVJlY3QpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25h
cHNob3QoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2Fw
ZVBsdWdpbk1hYy5tbQppbmRleCA4NDhiMzM4MmUwMjBlMmMyMmE0MGFiNWNjOTI2YTcwYjJhMzA5
YmRiLi42Zjc1MzE5MWFmOThlZGFlMmJmMWI1MjYyZmViODI3NGE4MjRlMTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBl
UGx1Z2luTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KQEAgLTQ0NCw5ICs0NDQsOSBAQCBzdGF0aWMg
RXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzRm9yRXZlbnQoY29uc3QgV2ViRXZlbnQmIGV2ZW50KQog
CiAjZW5kaWYKIAotdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90
KQordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90KQogewotICAg
IENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KTsKKyAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKTsKIAogICAgIHN3aXRjaCAobV9ldmVudE1vZGVsKSB7CiAgICAgICAgIGNhc2UgTlBF
dmVudE1vZGVsQ29jb2E6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oCmluZGV4IGFkZWY2Y2IzNjk2NWY4MDQyZDBjYzAyYWMxZmNkYTQ3
ZmM5MWYwNjguLjRjNTI1NmQ1YTFjYWNlZjIyOTg1ZTU0NmI4MTkxYTA0MWZhNjk4YTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApA
QCAtMTE1LDggKzExNSw4IEBAIHByaXZhdGU6CiAgICAgLy8gUGx1Z2luIGZ1bmN0aW9ucy4KICAg
ICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGUg
eyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRp
bmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggNjFjZjRmZWE4MWExYzg2
MTVjZmJmZDgyM2YwZmIwMDA4NjQ4NmE1ZS4uMTExYTIyNWM3MTk3MmNlYzA1ZTZiYmNiZmRmNTEy
OGUxYzA0YzI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KQEAgLTExMTEsOSArMTExMSw5IEBAIHZvaWQgUERGUGx1Z2luOjpk
ZXN0cm95KCkKICAgICBbbV9jb250ZW50TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogfQog
Ci12b2lkIFBERlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0KQordm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHsKLSAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0
LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKTsKKyAgICBBU1NFUlQoZ3JhcGhpY3NDb250ZXh0LnVw
ZGF0aW5nQ29udHJvbFRpbnRzKCkpOwogCiAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikK
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBAIC0xMTMyLDcg
KzExMzIsNyBAQCB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQo
Q0FMYXllciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZQogICAgIGlmIChsYXllciA9PSBtX3Nj
cm9sbENvcm5lckxheWVyKSB7CiAgICAgICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCA9IHRo
aXMtPnNjcm9sbENvcm5lclJlY3QoKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0
ZSgtc2Nyb2xsQ29ybmVyUmVjdC54KCksIC1zY3JvbGxDb3JuZXJSZWN0LnkoKSk7Ci0gICAgICAg
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcigwLCAmZ3JhcGhpY3ND
b250ZXh0LCBzY3JvbGxDb3JuZXJSZWN0KTsKKyAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnBhaW50U2Nyb2xsQ29ybmVyKG51bGxwdHIsIGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsQ29y
bmVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0xMTQ3LDcgKzExNDcs
NyBAQCB2b2lkIFBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9yTGF5ZXJJbkNvbnRleHQoQ0FMYXll
ciAqbGF5ZXIsIENHQ29udGV4dFJlZiBjb250ZQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
Z3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsYmFyLT54KCksIC1zY3JvbGxiYXItPnko
KSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWludCgmZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxiYXItPmZy
YW1lUmVjdCgpKTsKKyAgICBzY3JvbGxiYXItPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xs
YmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAKIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBsdWdp
bjo6c25hcHNob3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
LmNwcAppbmRleCBmNmQxYzA1NDc0NDJmOTNjYmE3N2QwYzExNTA4MjRhZmU1YjYxMmU0Li4xNTQ5
M2Y4NmExNzMwYjA3MTM4ZDZhZjQyNDdjNjRiNGQyMDljMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
UGx1Z2luOjpkZXN0cm95UGx1Z2luKCkKICAgICBtX3BsdWdpbkNvbnRyb2xsZXIgPSAwOwogfQog
Ci12b2lkIFBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCopCit2b2lk
IFBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCYpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCAxMWNmMTQ5MTM4
ZjgwYWY0ODNmYzAwYzE2ZTMyOWJlYmMwM2UwYWU4Li5mMjc5ZWJiY2Y0NTc5YTk5ZDY4ZjBhMzc3
ZTIxOGNhNjNiN2I2OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBUZWxscyB0aGUg
cGx1Zy1pbiB0byBwYWludCBpdHNlbGYgaW50byB0aGUgZ2l2ZW4gZ3JhcGhpY3MgY29udGV4dC4g
VGhlIHBhc3NlZC1pbiBjb250ZXh0IGFuZAogICAgIC8vIGRpcnR5IHJlY3QgYXJlIGluIHdpbmRv
dyBjb29yZGluYXRlcy4gVGhlIGNvbnRleHQgaXMgc2F2ZWQvcmVzdG9yZWQgYnkgdGhlIGNhbGxl
ci4KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRp
cnR5UmVjdCkgPSAwOwogCiAgICAgLy8gSW52YWxpZGF0ZSBuYXRpdmUgdGludGFibGUgY29udHJv
bHMuIFRoZSBwYXNzZWQtaW4gY29udGV4dCBpcyBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYpOwogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnLWluIHN1cHBvcnRz
IHNuYXBzaG90dGluZyBvciBub3QuCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0
aW5nKCkgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZTdjNTNkNzhhNjljNjBkYjgwYTg2NjY0ZTc3Zjc2NzQz
MGQ5NzMyOS4uNmQ3YjQ2ZDJjNjhmYmJjYzRiNTliYTY0MmNjNzFkMDNjODBlY2M3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBA
IC0yMDAsNyArMjAwLDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJveSgpCiAgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVQbHVnaW5Qcm94eSh0aGlzKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgaWYgKCFuZWVkc0Jh
Y2tpbmdTdG9yZSgpIHx8ICFtX2JhY2tpbmdTdG9yZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE4
LDcgKzIxOCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlCiAgICAgICAgIG1fcGx1Z2luQmFj
a2luZ1N0b3JlQ29udGFpbnNWYWxpZERhdGEgPSB0cnVlOwogICAgIH0KIAotICAgIG1fYmFja2lu
Z1N0b3JlLT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGRp
cnR5UmVjdC5sb2NhdGlvbigpLCBkaXJ0eVJlY3QpOworICAgIG1fYmFja2luZ1N0b3JlLT5wYWlu
dChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgZGlydHlSZWN0LmxvY2F0
aW9uKCksIGRpcnR5UmVjdCk7CiAKICAgICBpZiAobV93YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNl
VG9VcGRhdGUpIHsKICAgICAgICAgbV93YWl0aW5nRm9yUGFpbnRJblJlc3BvbnNlVG9VcGRhdGUg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmgKaW5kZXggOWNkZmMxOTUyNWFhYjliNmEzMWQ0NTI2ZmQ0MzY2Y2UyZjc1NzljMi4uNzdh
ZDRlNjkwN2VlNGUxZjU5Mjk3OWIwZjQ2ZDc4Y2M3MjEzMGM3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGluaXRpYWxpemVTeW5jaHJvbm91c2x5KCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3Qp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQ
TEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAppbmRleCBiYWY1NjcxZWNhNjZkNTFlZGM2NzE4MjI0NGQwMDljNTJjN2I1
ZDUwLi5jMzk2ZTg0ODZlOWI1ZTFmNWYyMDg2OTkwY2NhYzkzYzFlMzMyYTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC03OTIs
MTMgKzc5MiwxMyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0KQogICAgIHZpZXdHZW9tZXRyeURpZENoYW5nZSgpOwogfQogCi12b2lk
IFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgLypkaXJ0eVJlY3QqLykKK3ZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQogewogICAgIGlmICghbV9w
bHVnaW4gfHwgIW1faXNJbml0aWFsaXplZCB8fCBtX3BsdWdpbkVsZW1lbnQtPmRpc3BsYXlTdGF0
ZSgpIDwgSFRNTFBsdWdJbkVsZW1lbnQ6OlJlc3RhcnRpbmcpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpKSB7CisgICAgICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCiAg
ICAgICAgICAgICBtX3BsdWdpbi0+dXBkYXRlQ29udHJvbFRpbnRzKGNvbnRleHQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtODEwLDE0ICs4MTAsMTQgQEAgdm9pZCBQbHVnaW5WaWV3Ojpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0
Ki8pCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3RyYW5zaWVudFBhaW50aW5nU25hcHNo
b3QpIHsKLSAgICAgICAgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90LT5wYWludCgqY29udGV4
dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBmcmFtZVJlY3QoKS5sb2NhdGlvbigpLCBtX3RyYW5z
aWVudFBhaW50aW5nU25hcHNob3QtPmJvdW5kcygpKTsKKyAgICAgICAgbV90cmFuc2llbnRQYWlu
dGluZ1NuYXBzaG90LT5wYWludChjb250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGZyYW1l
UmVjdCgpLmxvY2F0aW9uKCksIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+Ym91bmRzKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBjb29yZGluYXRl
IHN5c3RlbSBzbyB0aGF0IHRoZSBvcmlnaW4gaXMgaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0
aGUgcGx1Zy1pbi4KLSAgICBjb250ZXh0LT50cmFuc2xhdGUoZnJhbWVSZWN0KCkubG9jYXRpb24o
KS54KCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueSgpKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0
ZShmcmFtZVJlY3QoKS5sb2NhdGlvbigpLngoKSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKS55KCkp
OwogCiAgICAgbV9wbHVnaW4tPnBhaW50KGNvbnRleHQsIHBhaW50UmVjdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCA1NTEwNjAy
M2RlNmQ5OGM5MTA2Y2FlNGMyYmNiYTkyNGFhMzIwZTM3Li43OGE4ZGNiODgzZjBkMWJhMjI3ZWI4
ZjhlY2M5ZGVjZGEzODE0ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTE3MSw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8g
V2ViQ29yZTo6V2lkZ2V0CiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEZvY3VzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmcmFtZVJlY3RzQ2hhbmdl
ZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDM0MzYyMGJlODhjZTliZGJjMGU4MTc3NjJjOTg0N2VjMTA0NThlODcuLmM1
NmJiYmJlM2NkODU0N2ZiNjdkNzc3N2I5YjA3YzE2NjZhMDU4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMzQsNyArMTMzNCw3IEBA
IHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAocmVjdCk7
CiAKLSAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+cGFpbnQoJmdyYXBoaWNz
Q29udGV4dCwgcmVjdCk7CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnBh
aW50KGdyYXBoaWNzQ29udGV4dCwgcmVjdCk7CiB9CiAKIGRvdWJsZSBXZWJQYWdlOjp0ZXh0Wm9v
bUZhY3RvcigpIGNvbnN0CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdl
PiBXZWJQYWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRT
aXplJgogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMp
CiAgICAgICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOwog
Ci0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0
LmdldCgpLCBzbmFwc2hvdFJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3Bh
Y2UpOworICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0Nv
bnRleHQsIHNuYXBzaG90UmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFj
ZSk7CiAKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVj
dGFuZ2xlKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUgPSBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpOwpAQCAtMTgx
OSw3ICsxODE5LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2Rl
KFdlYkNvcmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmlldy0+c2V0
QmFzZUJhY2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgIGZyYW1lVmlldy0+
c2V0Tm9kZVRvRHJhdygmbm9kZSk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JT
bmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpF
eGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZy
YW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQsIHNuYXBz
aG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50
Q29vcmRpbmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKHNh
dmVkQmFja2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0Zp
bmRDb250cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9GaW5kQ29udHJvbGxlcklPUy5tbQppbmRleCBmNWU4NmRmMDFmZGExOWQyZTZlNDFlMWY0MDhi
OGRjMzE1YjhhMjhjLi5iZDIxNTczYTY0YWEzM2JmOTkxYTA3MTc1ZWY2NjdjYzdhYjcwYWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250
cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
RmluZENvbnRyb2xsZXJJT1MubW0KQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGaW5kSW5kaWNhdG9y
T3ZlcmxheUNsaWVudElPUzo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNz
Q29udGUKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRl
eHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtb3ZlcmxheUZyYW1lLngoKSwgLW92ZXJs
YXlGcmFtZS55KCkpOwogICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQ
YWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCB8
IFBhaW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgICAgICBtX2ZyYW1l
LnZpZXcoKS0+cGFpbnRDb250ZW50cygmY29udGV4dCwgb3ZlcmxheUZyYW1lKTsKKyAgICAgICAg
bV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoY29udGV4dCwgb3ZlcmxheUZyYW1lKTsKICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1h
bCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260213</attachid>
            <date>2015-08-28 21:46:11 -0700</date>
            <delta_ts>2015-08-28 22:09:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828214559.patch</filename>
            <type>text/plain</type>
            <size>729387</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5k
ZXggNGMwZjkyMTRhMTliNjE5YTE2MzVjMjdhYTI5MTY4MGZiODg1NDBiZi4uZTNiZDQ2ZmNlZTNk
YTcwNDc3MWU0NGYyODhkMzEyNWI5NjRmNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKQEAgLTM5LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdSZWN0SW50b0NvbnRleHQoSW50UmVjdCByZWN0LCBGcmFtZVZpZXcq
IHZpZXcsIEdyYXBoaWNzQ29udGV4dCogZ2MpCitzdGF0aWMgdm9pZCBkcmF3UmVjdEludG9Db250
ZXh0KEludFJlY3QgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQmIGdjKQog
ewogICAgIEludFNpemUgb2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgcmVjdC5t
b3ZlKC1vZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQoKSk7CiAgICAgcmVjdCA9IHZpZXct
PmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cocmVjdCk7CiAKLSAgICBnYy0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSkpOworICAgIGdj
LmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpKTsKIAogICAgIHZpZXctPnBhaW50KGdjLCByZWN0KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRS
ZWN0JiBpcikKIAogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKIAotICAgIGRyYXdS
ZWN0SW50b0NvbnRleHQoaXIsIGZyYW1lLT52aWV3KCksICZnYyk7CisgICAgZHJhd1JlY3RJbnRv
Q29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
b250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3
NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzEx
NDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0
aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNj
cm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmll
dzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBp
bnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOworICAgICAgICBwYWludFNj
cm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3Qo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAg
SW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFy
ZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMo
aWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsx
MjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGly
dHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVD
b250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwg
LXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAt
c2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC5j
bGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cg
cGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYm
IChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAg
ICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwogICAgICAgICBJbnRSZWN0IHZp
c2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0
SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50
KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRT
Y3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTks
MTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAg
ICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRo
aXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5n
QXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFu
ZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFh
OGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0
byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVw
IHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2
b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVj
dGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6
ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVk
U2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXgg
YzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJj
N2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQ
cm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
dm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGlu
dHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRl
eHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisg
ICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAg
ICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNl
MGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0
b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3Mg
PSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4x
NmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
IAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYy
YTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSAr
MjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxi
YXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJl
dHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIx
MzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1
MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3
N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4K
ICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJhY2siKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0
LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsK
KyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEp
OwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTks
IDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAg
IG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUu
Y2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBj
b250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFi
NGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1
aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VT
Y2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2Nh
bGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2Yg
dGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAg
V2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBj
b21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNh
biBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAg
dmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFj
dG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0
byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMg
aW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1
ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNk
YjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52
YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIy
OTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRv
Qm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0Jv
eChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJ
bWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNw
ZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9C
b3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwog
ICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7
CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0lt
YWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFu
c2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNj
YWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNs
YXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0K
IAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9p
ZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIC8v
IFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0g
IndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9h
dFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAg
ICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRo
KG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJh
MDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAg
ICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQy
NTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMx
YWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9X
aWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1
Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3
ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAg
aWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1
bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zv
cm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJlM2MwNmJhNC4uMDUwOGQ1NWNlOGM3
NDBmZWU4YTgwNjJlZmYzMjU2NDMyNGNjYTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4K
QEAgLTIwMSwxMiArMjAxLDEyIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkp
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0
NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5OTQ2MzY2OWY0YTEwNGM5NWM5
MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQxLDY4ICs0MSw2OCBAQCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21J
bWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRl
U3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJn
ZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogCiAg
ICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhh
dmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQg
YSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS0+
aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
b3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsK
KyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAgIGlmICh0YXJnZXRTaXpl
ICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHRhcmdldFNp
emUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRTaXplLmhlaWdodCgpIC8gaW1h
Z2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVp
Z2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVT
aXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9w
ZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShj
b250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1f
Y3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNyY1JlY3Qu
eCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RS
ZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxl
cmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdp
dGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgZHJhd0Nyb3NzZmFk
ZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1NmE5ODc1MTRjYjcxYTE3YjRj
NzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRiMzI5ZDYyOGRhZTM3YjZhNWY3
MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdD
cm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZSogbV9mcm9tSW1hZ2U7CiAg
ICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNkYzkyZDExM2ZjMjBhNGY5MTA1
YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9
IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIC8vIERv
bid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFy
ZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNl
JyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZh
bGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHJ1bik7CkBAIC0x
MzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgaWYgKG5l
eHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250
RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJh
d1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0
R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgcmVuZGVyaW5n
Q29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBs
YXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCBmb250RGF0
YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2lu
dCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogCiAg
ICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0g
bmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0ICYm
IGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NW
R0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRy
YXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5l
eHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0
RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICBkcmF3R2x5
cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50LnNldFgobmV4dFgpOwogICAg
IH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAg
cmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZlci5mb250QXQoaSksIGdseXBo
QnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlwaERhdGEgbWFya0dseXBoRGF0
YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrLCBtYXJrR2x5cGhEYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmlu
ZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3NGE4NjIuLjE2NmI5MGU4NzVh
Y2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkgKzEzMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKSBjb25zdDsKIAogICAgIGVu
dW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBV
c2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0g
LTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVu
dHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0
dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8s
IEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMp
IGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0g
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
ICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CkBAIC0yMzgsOCAr
MjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJhd0Nv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzllZWZiMmFjOWY3YWU1NTZlMzc1
YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4NzdlNmRlODllYzQzYTBlNWI4ZTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBlYTNiOGI0MmVlNmQ5ODQxZTUy
OTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5YzU5YTU4YTRmYjIxOGViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
CiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRleHQtPmNsaXAoZGVzdFJlY3Qp
OwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOworICAgIGRlc3RDb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRlc3RSZWN0
LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVzdENvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC0+dHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAg
ICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBkZXN0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCAqbV9ncmFk
aWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92aWRl
IHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKICAgICBtX2dy
YWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKGFkanVzdGVkU2l6ZSwgYWRq
dXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUgZGVzdGluYXRpb24gY29udGV4
dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29sdXRpb24KLSAgICBBZmZpbmVU
cmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91YmxlIHhTY2FsZSA9IGZhYnMoZGVz
dENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2NhbGUgPSBmYWJzKGRlc3RDb250
ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRqdXN0ZWRQYXR0ZXJuQ1RN
ID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBAQCB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVkSW1hZ2VC
dWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0Fs
cGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFn
ZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250
ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNB
bHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAg
ICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFk
anVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNr
KCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAg
IH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7
Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKKyAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNhMGRmNGM0ZWFiMzdhLi42ZWM1
NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBjb25zdCBGbG9hdFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLjMw
MzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UtPmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkBAIC00
MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxv
d1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAgLTY0MCwyMCArNjQwLDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBGbG9hdFNpemUgc2Nh
bGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhT
Y2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhpcywgaGFzQWxwaGEpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCks
IHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0dXJuIHNjYWxlc01hdGNoKGdl
dENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQo
KSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOworICAgIHJldHVybiBz
Y2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVy
YXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9
CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRy
YW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEds
eXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
KyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lk
IGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5z
aWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4
YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBiMzc4MWVjMGE4ZjQzNWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJvKiBjb250ZXh0KTsKICNlbGlm
IFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAKICAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMu
LmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMwMTQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4LDIzICs3OCwyMyBAQCBib29s
IEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxX
aXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0
eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVD
b2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29t
cG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9y
Lmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkg
OiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNl
KTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9y
U3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewogICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICBvbmVU
aWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAKICAgICAvLyBDaGVjayBhbmQg
c2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBjb3ZlciB0aGUgZW50aXJlIGFy
ZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9uZVRpbGVSZWN0LmNvbnRhaW5z
KGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkgeworICAgIGlmIChvbmVU
aWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJhd0x1bWluYW5jZU1hc2soKSkg
ewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0LngoKSkgLyBzY2FsZS53aWR0aCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2Ug
dGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoc2l6
ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS5o
ZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZp
c2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgwKTsKQEAgLTE2
NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0
IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJh
bnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQ
aXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXpl
LmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsK
ICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxz
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7
Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7
CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwog
ICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3
ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uZjY5YTA1OWZhODk1YWM2MjZhYzdiOGJhYjNlNmJhNjRjNWE4NzA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4
NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJl
IHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY0YzY2
Yzc4YzhlY2VhYjFhOGFjOGRiNTNlNzAxYjVlNjg4OTViNzAuLjI3ZjZiMzFmMDM4Y2U1MjQwODNm
ZWY3NjljMGViODJmMWE4MWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtODMyLDEwICs4MzIs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YXMKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFz
c2V0U3RhdHVzTG9hZGVkOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFw
cGVyKSkgewpAQCAtODQ3LDEwICs4NDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXgKICAg
ICBwYWludChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFp
bnQoJXApIiwgdGhpcyk7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsbwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fYXZmV3JhcHBlci0+Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJl
bnRNZWRpYVRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwg
LTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAg
IEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNmNjOWE1NTNmNjM2Nzk2OWE1NGU2
ODBhNWYyMWRlZDlmZWM0MWZhZi4uZTNkYjhkNTBiMzg1YTI5MWI2ODI4ODRmY2IxZTQ2M2EzM2Jk
YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWVk
aWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDlmNTgxZWRmYWQ2OGY4N2MyZDQ1MzUyMmRmMjJlOGU0NjM1M2I3OWUuLmY4
YmFkZGRmNDI4YzhjNjQwYTU4NDk2Nzc0M2VkYjNkZDNkODVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKICAgICB2b2lkIGRl
c3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZUZvclRpbWVJblJlY3QoZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAg
ICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoKTsKICAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpOwotICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDY1ZmI0ZDI5NjMyNDBmZWJjODVmMTc5OTFlNDc3ZDUyZmE0ZTNl
ZjkuLjUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTQ5NCw5ICsxNDk0LDkgQEAgbG9uZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphc3NldEVycm9yQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtl
cnJvciBjb2RlXTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnQKICAgICBtX3ZpZGVvRnJhbWVIYXNEcmF3biA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXF1ZXN0IGlmIHdlIGFyZSBhbHJlYWR5IHJlbmRlcmlu
ZyB0byBhIGxheWVyLgpAQCAtMTUzMSwxOCArMTUzMSwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRgogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdl
R2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgp
LCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBw
YWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAg
ICB9CiB9CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fbGFzdEltYWdlID0gY3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkK
IHsKICNpZiAoIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgIW1fbGFzdEltYWdlICYmICF2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkp
CkBAIC0yMzQxLDEzICsyMzQxLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiBjCiAKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dCglcCkiLCB0aGlzKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdl
dFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5n
ZXQoKSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJs
ZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8v
IElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3Qg
ZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRl
byBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhNTc1MzRmMjU4OTc5NjMzNjZhNTA0N2Y2NTgwZjI3
OTZhYzYwNTYyLi41MzcxZDY2MjdlY2UxNDNkNTk4ZTU0OGE1ZmU5MGIzM2I3M2NhMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggYzgwNWIzYjI0NWUzNzRmNzkxMDVkYWQ4NzU1NWNmYWRhZmM0ZjAzZS4uZDc3
NzgyODI5NWM2MzBhMTk4NGZmZGY5OWE0MjJjNDFjNTBhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtNTI0LDEyICs1MjQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCiAgICAgLy8gTm8tb3Au
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiAgICAgLy8gRklYTUUoMTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJ
WE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggNWFlNWI1NTA5ZWQxZmMwOTk1OGQ1MGYyNmY1N2IwNGE1MzlmZWUwNi4uNWEwMDEy
ZWM5ZGEyOTg5M2JmNTgyYjc4Yzk1MTE1OWEwMjZjNDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IGMyNmIzMzU5NzM0ZDIzNGFmZDc5MjI5MmFmZDkzNTcwNDZlMGU2ODkuLjAxZmYy
MmMwOTlmZGI5YTFkOWRkNzkyNTg1YWJjNWQ4ZjQ5N2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUltYWdlRnJvbVNhbXBsCiAg
ICAgcmV0dXJuIHF1YXJ0ekltYWdlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgLy8gRklYTUUo
MTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRl
eCBmMGQzYTdhNzJkYjkyZmRlMWQxYjVmOTkzOGIzYzBjMWU3YWQ2MWYxLi5mNWUzZGUwZTUzNGIw
MTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRz
dC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKQEAgLTgxLDEzICs4
MSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCiAgICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgaWYgKGZyYW1lT3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3Qu
eSgpKTsKICAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVs
dChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhYTEwYzY1YzU2ODQzZTUwMjgwNjhhMzlh
ODcwMjAyYzdiMTRjY2NlLi5mYzUwMzJiNTQ1YWI0NmI2YzdmMjM0ZmZjMTc4NDUzZWU0ODQyOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250
JiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X3Qgb3JpZ2luYWxUcmFuc2Zvcm07Ci0gICAgZmxvYXQgc3ludGhldGljQm9s
ZE9mZnNldCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBmbG9hdCBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKIAotICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjb250ZXh0LCBmb250
LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgIGNhaXJvX3NldF9zY2FsZWRfZm9u
dChjb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgY2Fpcm9f
c2hvd19nbHlwaHMoY29udGV4dCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpIHsKQEAgLTY2LDIxICs2NiwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyRwogICAgICAgICBjYWlyb19zZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9y
bSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBpbnQgbnVtR2x5cGhzKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVy
JiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KTsKIAotICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisgICAg
aWYgKCEoZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8
fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0Lm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8g
T3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0
IHRoZSBTaGFkb3dCbHVyLgotICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGdyYXBoaWNz
Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQpOworICAgICAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0KGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CiAgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFw
aGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
ICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUds
eXBocyk7CiAKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0KTsKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiAKICAgICBjYWlyb190ZXh0X2V4dGVu
dHNfdCBleHRlbnRzOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCksIGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRS
ZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54KCkgKyBleHRlbnRzLnhfYmVhcmluZywgcG9pbnQu
eSgpICsgZXh0ZW50cy55X2JlYXJpbmcsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
IAogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5T
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkpIHsKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0
X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0x
MTIsMTQgKzExMiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQg
Kz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQs
IHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dC0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRD
YWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1Rv
Q29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6
ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9r
ZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIg
dGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8
IDIgKiBvZmZzZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBj
b250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAq
IG9mZnNldCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhj
b250ZXh0LnN0YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4
dC5zdHJva2VUaGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUg
Q1RNLCBidXQgd2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgot
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBn
bHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCA2Nzg0MGM1ZTk0ZmZmZmUzZjIzNmYwYjgxMjJh
MjIwMWViYWU1M2VkLi40ZmVjMWFhZWIyZWQ5ZDRiNzZlOTM0MzkyZjRlMzJhODYxOWFlOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtNTIsNyArNTIsNyBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGludCwgaQogICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMg
KyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250
ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyog
bWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBp
bnQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1
biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjhjN2M5NjBmZDlmOWRmNTEzNWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uMmVjMGZiOTlk
YzQ5Y2ZjYzQ1MGI1ZTlkNmE3NWI4MjQzZTFhN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAgICAg
RmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhd2luZ1N0eWxlKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7Ci0gICAg
U2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKTsKKyAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBv
ZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250
ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2Fpcm9fcGF0aF90LCB2b2lkKCopKGNhaXJvX3BhdGhfdCopPiBwYXRoKGNhaXJvX2NvcHlf
cGF0aChjYWlyb0NvbnRleHQpLCBbXShjYWlyb19wYXRoX3QqIHBhdGgpIHsKICAgICAgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KHBhdGgpOwogICAgIH0pOwpAQCAtMTI5LDE0ICsxMjksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGF0aERyYXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgRmlsbCkgewogICAg
ICAgICBjYWlyb19zYXZlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0
ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3Rh
dGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CiAgICAgICAgIGNhaXJv
X2ZpbGwoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2UpIHsK
ICAgICAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9TaGFkb3dDb250ZXh0LCBwYXRoLmdldCgp
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JT
dHJva2luZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVz
ZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBy
ZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpE
b05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKQEAgLTE0OSwyOCArMTQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICBj
YWlyb19maWxsKGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0
LCBGaWxsKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aChjb250ZXh0KTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIFN0cm9rZSk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTdHJva2luZyhjb250ZXh0LT5zdGF0ZSgpKTsKLSAgICBjYWlyb19zdHJva2UoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCktPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCkpOworICAgIGNhaXJvX3N0cm9r
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCogY3IpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCh0aGlzKTsKKyAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0
aCgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLT5jb250ZXh0KCkpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC00NTAsNyArNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LCBjb2xvcik7CiB9CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwg
d2lkdGgpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAg
c2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiB9CiAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dC
bHVyKCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0KTsKQEAg
LTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBz
ZXRQYXRoT25DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7Cisg
ICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQxNWY5ZGM3OWZkYmY5NDAxNTMxYWRiY2Fk
Y2Q5YTI2ZTE3MjVkNTYuLmMyMGY5MmQxYmE2MDdlMTYzZGM0YTllNDA0M2FiN2E5Yjg0MzhjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuICpt
X2RhdGEubV9jb250ZXh0OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0xNjAsMjAgKzE2MCwyMCBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBtYXNrUmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zdAogewotICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIG1hc2tSZWN0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQogewotICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRl
eHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiwgQ29vcmRpbmF0ZVMKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFh
NDQ5MTg2N2JjMGQ5MWQ5YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2
YWM2ZjBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDU5OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEw
ZTdmZjg3M2JjYjM1YzMwNTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
blRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNv
bgogICAgICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWly
bzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1
cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGgg
c21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVm
IHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7
IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNh
aXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hh
ZG93KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIHBhdHRlcm4uZ2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5oCmluZGV4IDkzNTVlMTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEz
MDUyY2QyZDhkY2VlNzUxYWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEo
KSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIz
ZjIxZWY3NzAwZWU2ZDUwNmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVj
NTExY2NjMjIwYzQ3MjgwODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAg
IHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZy
YW1lKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9u
UmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRD
VE0oY3R4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1
ZGM1MzBhMjhiN2JhYjkuLjk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52
YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMg
fHwgaW1hZ2VXaWR0aCA8PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0g
MCB8fCBjYW52YXNIZWlnaHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxz
IHx8IGltYWdlV2lkdGggPD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9
IDAgfHwgY2FudmFzSGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0
ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKIAotICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNp
Z25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGlt
YWdlSGVpZ2h0LCByb3dCeXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSAr
NTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21w
bGV0ZWx5IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyBy
ZXN1bHRzLgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKLSAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0
Mzg2MzVhYTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4
ZmE0NjM2NWJlNDljMjY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygq
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCByZWN0KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJl
Y3QoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGJiOWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEw
OTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
NDMsOSArMTQzLDkgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgp
KTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAg
IGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgY29udGV4dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAog
ICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgp
OworICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CkBAIC0yMTAsMTMgKzIxMCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9k
YXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzEsMjkgKzIzMSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVy
biBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNj
YWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4
dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBv
dXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAK
LSAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
eworICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwog
ICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9
IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6
ZSwgaW50ZXJuYWxTaXplKCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4Mywz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUo
KSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewot
ICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAog
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSks
IHNvdXJjZUNvcHktPmludGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBz
b3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+
aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29u
dGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250
ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVT
eXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUx
MDMxYTIxNTcwZTVhYTMyMGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBk
OTdmYzYzNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBA
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjdHh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZv
cm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0
eHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5m
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1
ZSBpZiBzaXplIGlzIGF2YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1
bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25z
dAogewogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1l
bnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2Uo
ZGVjb21wb3NlZFRyYW5zZm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm07CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERl
Y29tcG9zZWRUcmFuc2Zvcm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3Jt
Q29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNj
YWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2Fs
ZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUs
MTIgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2Nh
bGUpOwotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNyY1JlY3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xp
ZW50cyB1c2UgbG93LXF1YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRo
cm93cyBvZmYgdGhpcyBvcHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlt
YWdlLCByZXVzZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlm
IGNhY2hlIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hl
biB3ZSBkbyB0aGUgc3Vic2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBjb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJl
cGFpbnRJZk5lY2Vzc2FyeSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25O
b25lICYmIGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYK
IAogICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNo
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxv
YXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKIAogICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwogCi0gICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUg
PSBkc3RSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsK
IApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBA
IC0yNDQsMjYgKzI0MCwyNiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3Vt
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3Jl
ZXMpCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0
KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXpl
LndpZHRoKCksIDApOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwogCi0gICAgY29udGV4dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3Rh
dGlvbkRlZ3JlZXMpKSk7CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwog
CiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERy
YXdQREZQYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSkpOwogfQogCiAjZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKaW5kZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkw
MC4uMjE3YWNkMGVkYjI2NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KTsKKyAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
IAogI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5
YjkxNTkwMjM4MTgzOGU5Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRi
MmU5ZGNhNDFjMDc3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0
dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBo
cywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hv
d0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBn
bHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFC
TEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRh
KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0
Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0
ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAt
MTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCog
Zm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3Qg
Q0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBh
ZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBm
b250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBv
c2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgp
KQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQp
KTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBv
aW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNl
bGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1Bv
aW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBs
eUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwog
ICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENH
UG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRy
YW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0
aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9
CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
aW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBj
b25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQt
PnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJv
b2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9v
dGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7Cisg
ICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8g
c3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewot
ICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRz
ID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBt
YXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnBy
ZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250
ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkg
KzMzOSw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250
ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKCkpOwogI2Vsc2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwg
W2RyYXdGb250IHJlbmRlcmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CisgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9u
dCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7
CiAjZW5kaWYKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0
YS5zaXplKCkpOwogCkBAIC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3Qg
RwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2Ug
PSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwor
ICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0g
PSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYg
IWNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAg
ICBGbG9hdFNpemUgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RN
Lm1hcFNpemUoRmxvYXRTaXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRM
ZW5ndGhJbkRldmljZVBpeGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4
ZWxzLndpZHRoKCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsg
aG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5p
dFNpemVJbkRldmljZVBpeGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBo
b3Jpem9udGFsVW5pdExlbmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JC
aXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29u
dGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5p
c0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxw
aGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFk
b3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUg
WSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250
ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAg
IGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93
VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlw
aHMpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9p
bnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRp
Y19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5
cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyAr
NjYwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZv
ciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3
OCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBm
bG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNw
cAppbmRleCAxNDRjNmE1MjBlNGM1ZGFkNzU0NDcyNTg4YWJmOTRmMDgyNGE3YWViLi5hZmNmNzU5
NzI3OTM3ZmRjNmFjNzM3NmYwNDkwNWY4ZmQyOThkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1h
Z2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7
CiAKICAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBjMTRmNjBm
YzY2OWJlNDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlhZTBiMmJmMjk2
YTBmYTc0ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCB2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
ID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0g
aW4yLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKICAgICBBU1NF
UlQoaW1hZ2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBv
c2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAppbmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMxOWM2Li44NzY2
YWVjYjIyMzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRS
ZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAz
NmJlZmU3YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4NzEzOGZiZGYz
ZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEsOCArMjgxLDgg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFw
cGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50
UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRl
UGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAg
ICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFk
anVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0
ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAppbmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2OTZmLi42MzNl
YmM2NjBiMWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CkBAIC04OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZl
cigpOwogICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiByZXN1
bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQocmVzdWx0Q29u
dGV4dCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsKLSAg
ICByZXN1bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRDb250ZXh0LT5z
ZXRBbHBoYSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJh
ZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIApAQCAt
MTA1LDExICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1Bp
eGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgp
LCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKLSAgICByZXN1
bHRDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAg
IHJlc3VsdENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAK
IHZvaWQgRkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZk
OGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2NzAyMjZkMDE4
YWIyMzcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgp
KTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMjZi
OTMyYWNmZjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUzODVhZTQyMzBi
YTNjOTE4ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTAgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9
IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFhNGUyZjllLi5m
ZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIo
KTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1f
ZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhk
MzE3MmQ5ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2ZWNmOTMxYWVh
NWY4MDlkYmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBG
RVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRp
bGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5N
YXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGls
ZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgp
OworICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngo
KSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGls
ZUltYWdlQ29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZl
Y3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRp
b24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0
ZXJuVHJhbnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKFdU
Rjo6bW92ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZp
bHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0
ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNjLi5iYTE0NzEy
YTNjZjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC00NjYsNyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29udGV4dCgp
KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi43MGIx
ZDU1NjRmNmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApA
QCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VC
dWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0
ZXJDb250ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKKyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKaW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2UxN2UyMy4uMzE5
OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdl
QnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2lu
dCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIu
c291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZv
aWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuaAppbmRleCAzMTM1NzMzZDFiMTk4ZTY1YWY1YjM4MjRlNWMy
ZDg2NzFmYjZmMmQ5Li5kMmY4OGU4NzU0YzU2ZDkwMzZhNDcyZGUzZjY1YmM0OWZhMmQ3ZDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2l6ZUNoYW5nZWQoKTsKIAogICAg
IHZvaWQgdHJpZ2dlclJlcGFpbnQoR3N0U2FtcGxlKik7Ci0gICAgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgZmxvYXQg
bWF4VGltZUxvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIDAuMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0K
aW5kZXggMDJjNDhkOGZiMzY2NWY4Y2FlMjQ4YmQyYWI3NmY3MTgxODc0YjkxMi4uYWNlMTkwNTRi
OWRhNTEwYTcxOTFkMDBiNGU1YmY2YjJkZGNkNzhkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCkBA
IC0yNTYsNyArMjU2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yRG9jdW1l
bnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHcKIAogICAgIC8vIERyYXcg
dW5kZXJsaW5lLgogI2lmICFQTEFURk9STShJT1MpCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0IGxvY2FsQ29udGV4dCh0aGlzKTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQgbG9jYWxDb250ZXh0KCp0aGlzKTsKICAgICBOU0dyYXBoaWNzQ29udGV4dCAqY3VycmVudENv
bnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogICAgIENHQ29udGV4
dFJlZiBjb250ZXh0ID0gKENHQ29udGV4dFJlZilbY3VycmVudENvbnRleHQgZ3JhcGhpY3NQb3J0
XTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvSWNvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29u
TWFjLm1tCmluZGV4IGZkMTNhYmZiNjgyZTIxYmI5YTA4YThmNjRmYmU5ZTAxNGIyZjU3ZjMuLmY0
MTAyN2Y1MmViOGZiOTllZGYyMmM2N2YwMWIwZDhjMzI1MWUxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgSWNvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0Mo
JmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRH
Qyhjb250ZXh0KTsKIAogICAgIFttX25zSW1hZ2UgZHJhd0luUmVjdDpyZWN0IGZyb21SZWN0Ok5T
TWFrZVJlY3QoMCwgMCwgW21fbnNJbWFnZSBzaXplXS53aWR0aCwgW21fbnNJbWFnZSBzaXplXS5o
ZWlnaHQpIG9wZXJhdGlvbjpOU0NvbXBvc2l0ZVNvdXJjZU92ZXIgZnJhY3Rpb246MS4wZl07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IDAxZTg2ZjFjYzkyYTVmOTY3MGMyYmM4
MGNjOTliMjI3M2ExNTYxZTguLjE5NmRlY2M2NDQ3YmIxNDBkZDhkY2MwOTlhYTM4NTBkOGM5ZGY5
ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC0xMjcsOCArMTI3LDggQEAgcHJp
dmF0ZToKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvclJlbmRlcmlu
ZygpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYTdhMjEz
N2RjMDMzODZjNDU4ZjU2NWQ5YzMyNWExMmM2YzYxMDk5NC4uYTRjMDBiNzcxZjU4N2IyMWNiMTMy
MWYyYjVmYjUzNTA3ZTA2OTUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAt
MTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmVwYWludCgp
CiAgICAgbV9wbGF5ZXItPnJlcGFpbnQoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWlu
dEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgcikKIHsKICAgICBpZCBxdFZpZGVvUmVuZGVyZXIgPSBtX3F0VmlkZW9SZW5kZXJl
ci5nZXQoKTsKICAgICBpZiAoIXF0VmlkZW9SZW5kZXJlciAmJiBjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nTW92aWVMYXllcikgewpAQCAtMTE5Nyw5ICsxMTk3LDkgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXgKICAgICBwYWludChjb250ZXh0LCByKTsKIH0KIAotdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAgICBp
ZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IG1faGFzVW5zdXBwb3J0ZWRUcmFja3Mp
CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8IG1faGFzVW5zdXBwb3J0ZWRU
cmFja3MpCiAgICAgICAgIHJldHVybjsKICAgICBpZCBxdFZpZGVvUmVuZGVyZXIgPSBtX3F0Vmlk
ZW9SZW5kZXJlci5nZXQoKTsKICAgICBpZiAoIXF0VmlkZW9SZW5kZXJlcikKQEAgLTEyMTEsMTIg
KzEyMTEsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIKICAgICBGbG9hdFNpemUgc2NhbGVG
YWN0b3IoMS4wZiwgLTEuMGYpOwogICAgIEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgp
LCByLnNpemUoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KmNvbnRleHQpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyLngoKSwgci55KCkgKyByLmhlaWdo
dCgpKTsKLSAgICBjb250ZXh0LT5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgY29udGV4dC0+c2V0
SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC50cmFu
c2xhdGUoci54KCksIHIueSgpICsgci5oZWlnaHQoKSk7CisgICAgY29udGV4dC5zY2FsZShzY2Fs
ZUZhY3Rvcik7CisgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25Mb3cpOwogCi0gICAgbmV3Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIGZs
aXBwZWQ6Tk9dOworICAgIG5ld0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3ND
b250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpIGZsaXBwZWQ6
Tk9dOwogCiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKICAgICBb
TlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bmV3Q29udGV4dF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFn
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tCmluZGV4IDBkY2Y2YzFjYTljZmZkMmQyM2Q2ZjQ4YzVjOTE2NDNlMWMxMDA1
YjcuLmJmYWFmYTkzNTcwMDA3ZDVmZGMyMzUzYjAxYjI0ZDE0NDUzMWFmYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tCkBAIC02OSwxOSArNjksMTkgQEAgdW5zaWduZWQgUERGRG9jdW1lbnRJbWFn
ZTo6cGFnZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gW21fZG9jdW1lbnQgcGFnZUNvdW50XTsK
IH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
dXJyZW50Q29udGV4dChjb250ZXh0KTsKIAogICAgIC8vIFRoZXNlIHN0YXRlcyBjYW4gYmUgbXV0
YXRlZCBieSBQREZLaXQgYnV0IGFyZSBub3Qgc2F2ZWQKICAgICAvLyBvbiB0aGUgY29udGV4dCdz
IHN0YXRlIHN0YWNrLiAoPHJkYXI6Ly9wcm9ibGVtLzE0OTUxNzU5PikKLSAgICBib29sIGFsbG93
c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCkpOwotICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24gPSBD
R0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250ZXh0R2V0QWxs
b3dzRm9udFNtb290aGluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBib29sIGFs
bG93c1N1YnBpeGVsUXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgW1ttX2RvY3Vt
ZW50IHBhZ2VBdEluZGV4OjBdIGRyYXdXaXRoQm94OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07CiAK
LSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcpOwotICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJw
aXhlbFF1YW50aXphdGlvbihjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3VicGl4
ZWxRdWFudGl6YXRpb24pOworICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21vb3RoaW5nKTsKKyAgICBDR0NvbnRleHRT
ZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAppbmRleCBmMzQyYWQ5NTRmMDYyNDExNGU3
YWJlMTM3NDVkNWZjNTRjMjBmNzVlLi5iNmVmYTQxYjZmZjA2ZDUwMjQxNjQ1YzViYWRiZDNkYzY4
Yjc3YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKQEAgLTE2OSw4ICsxNjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiAgICAgcGFpbnRU
b0NhbnZhcyhwaXhlbHMuZ2V0KCksIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsCiAg
ICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkud2lkdGgoKSwgaW1h
Z2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKICNlbHNlCi0gICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0KCksIG1fY3VycmVudFdpZHRo
LCBtX2N1cnJlbnRIZWlnaHQsCi0gICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+aW50ZXJu
YWxTaXplKCkud2lkdGgoKSwgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmhlaWdodCgpLCBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgcGFpbnRUb0Nh
bnZhcyhwaXhlbHMuZ2V0KCksIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIGltYWdl
QnVmZmVyLT5pbnRlcm5hbFNpemUoKS53aWR0aCgpLCBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXpl
KCkuaGVpZ2h0KCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKaW5kZXggNmMwODI1
ODI5MDk1ZGI3OWZhNTQ4YjZlN2NiMzc2NmI0M2M5MDNmMy4uNjhjZTMxM2UxZjBmNzQ3ZWFjZmY2
ZGFhOTYwYmYwNDgwZWQ2ZjJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcApAQCAtNDAsMTQgKzQwLDE0
IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4
dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllcioKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpOwotICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkodGV4
dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBjb250ZXh0LT5z
ZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAg
Y29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUo
dGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwogCiAgICAgSW50UmVjdCBzb3VyY2VS
ZWN0KHRhcmdldFJlY3QpOwogICAgIHNvdXJjZVJlY3Quc2V0TG9jYXRpb24ob2Zmc2V0KTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoLW9mZnNldC54KCksIC1vZmZzZXQueSgpKTsKLSAgICBzb3Vy
Y2VMYXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKmNvbnRleHQsIHNvdXJjZVJlY3Qp
OworICAgIGNvbnRleHQudHJhbnNsYXRlKC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7CisgICAg
c291cmNlTGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIHNvdXJjZVJl
Y3QpOwogCiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGltYWdlQnVmZmVyLT5jb3B5SW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCmluZGV4IGM0OTBiMTEx
NjFmZDhlMjcyM2FhOTY2MmQxYjUwMDM5NDYzMTY2OGIuLmEyN2EyZWY2ZmVjZjdlODhkMmFhMzVm
MWU4Y2FhNjUyNTYxYWZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCkBAIC0xMjcsMjUgKzEyNywyNSBAQCBzdGF0aWMgQ0dQ
YXRoUmVmIGNyZWF0ZVBhdGhGb3JHbHlwaChIREMgaGRjLCBHbHlwaCBnbHlwaCkKICAgICByZXR1
cm4gcGF0aDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLAogICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0
ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGJvb2wgc2hvdWxkVXNl
Rm9udFNtb290aGluZyA9IFdlYkNvcmVTaG91bGRVc2VGb250U21vb3RoaW5nKCk7CiAKICAgICBz
d2l0Y2goZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKSB7CiAgICAgY2FzZSBBbnRp
YWxpYXNlZDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0
cnVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IGZhbHNlOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBTdWJwaXhlbEFudGlhbGlhc2VkOiB7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuc2V0U2hvdWxkQW50aWFsaWFzKHRydWUpOwogICAgICAgICBzaG91bGRVc2VGb250U21vb3Ro
aW5nID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTm9TbW9vdGhpbmc6
IHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKICAgICAg
ICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRm9udCogZm9udCwKIAogICAgIHVpbnQz
Ml90IG9sZEZvbnRTbW9vdGhpbmdTdHlsZSA9IHdrU2V0Rm9udFNtb290aGluZ1N0eWxlKGNnQ29u
dGV4dCwgc2hvdWxkVXNlRm9udFNtb290aGluZyk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1E
YXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250
UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogCiAgICAg
Q0dDb250ZXh0U2V0Rm9udChjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKQEAg
LTE3OCw0MyArMTc4LDQzIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAgICAgRmxvYXRTaXpl
IHRyYW5zbGF0aW9uID0gZ2x5cGhCdWZmZXIub2Zmc2V0QXQoZnJvbSk7CiAKICAgICBDR0NvbnRl
eHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwotICAgIHdrU2V0
Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0eWxlKGNnQ29udGV4dCwgZm9udC0+aXNTeXN0ZW1Gb250
KCksIGZhbHNlLCBmb250LT5wbGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CisgICAgd2tTZXRDR0Nv
bnRleHRGb250UmVuZGVyaW5nU3R5bGUoY2dDb250ZXh0LCBmb250LmlzU3lzdGVtRm9udCgpLCBm
YWxzZSwgZm9udC5wbGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CiAKICAgICBGbG9hdFNpemUgc2hh
ZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7
CiAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIGdyYXBoaWNzQ29udGV4dC0+
Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0Nv
bG9yU3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4
dE1vZGVGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAoIWdy
YXBoaWNzQ29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0NvbnRl
eHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOworICAgIGJv
b2wgaGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpID09
IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYg
KCFncmFwaGljc0NvbnRleHQuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSB8fCBncmFwaGljc0Nv
bnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSk7CiAgICAg
aWYgKGhhc1NpbXBsZVNoYWRvdykgewogICAgICAgICAvLyBQYWludCBzaW1wbGUgc2hhZG93cyBv
dXJzZWx2ZXMgaW5zdGVhZCBvZiByZWx5aW5nIG9uIENHIHNoYWRvd3MsIHRvIGF2b2lkIGxvc2lu
ZyBzdWJwaXhlbCBhbnRpYWxpYXNpbmcuCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJT
aGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5maWxs
Q29sb3IoKTsKLSAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGdyYXBoaWNzQ29u
dGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hh
ZG93KCk7CisgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC5maWxsQ29s
b3IoKTsKKyAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGdyYXBoaWNzQ29udGV4
dC5maWxsQ29sb3JTcGFjZSgpOwogICAgICAgICBDb2xvciBzaGFkb3dGaWxsQ29sb3Ioc2hhZG93
Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSwgc2hh
ZG93Q29sb3IuYWxwaGEoKSAqIGZpbGxDb2xvci5hbHBoYSgpIC8gMjU1KTsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WCA9IHBvaW50
LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKTsKICAgICAg
ICAgLy8gSWYgc2hhZG93cyBhcmUgaWdub3JpbmcgdHJhbnNmb3JtcywgdGhlbiB3ZSBoYXZlbid0
IGFwcGxpZWQgdGhlIFkgY29vcmRpbmF0ZSBmbGlwIHlldCwgc28gZG93biBpcyBuZWdhdGl2ZS4K
LSAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWln
aHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQtPnNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKCkgPyAtMSA6IDEpOworICAgICAgICBmbG9hdCBzaGFkb3dUZXh0WSA9
IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgp
ICogKGdyYXBoaWNzQ29udGV4dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsK
ICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgc2hhZG93VGV4dFgs
IHNoYWRvd1RleHRZKTsKICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhj
Z0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dT
aXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgICAgICBp
ZiAoZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpKSB7Ci0gICAgICAgICAgICBDR0NvbnRleHRT
ZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBv
aW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsK
KyAgICAgICAgaWYgKGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpKSB7CisgICAgICAgICAgICBD
R0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlv
bi53aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVp
Z2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0Nv
bnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXpl
Kj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgICAgICB9Ci0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwg
ZmlsbENvbG9yU3BhY2UpOwogICAgIH0KIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
Z0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2Vz
KGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7Ci0gICAgaWYg
KGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewotICAgICAgICBDR0NvbnRleHRTZXRUZXh0
UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQo
KSk7CisgICAgaWYgKGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpKSB7CisgICAgICAgIENHQ29u
dGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndp
ZHRoKCkgKyBmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRp
b24uaGVpZ2h0KCkpOwogICAgICAgICBDR0NvbnRleHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNn
Q29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBDR1Np
emUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgfQogCiAg
ICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFj
ZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICAgICB3a1Jlc3RvcmVG
b250U21vb3RoaW5nU3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRXaW4uY3BwCmlu
ZGV4IDNhMGNiMzBiZTc2YzBjZTc0MWM1NGZlY2FkYzdjNDhlYTM5Y2RlZTMuLmRiOTYzYzJmNjQw
YmRmYTRhM2E2NDg1NDQ4YTQ5YTBjOWY1OGMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgZmxvYXQg
Rm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQoY29uc3QgVGV4
dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gYmVmb3JlV2lkdGg7CiB9CiAKLWZsb2F0IEZv
bnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRv
KSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZvciBlYWNoIGdseXBoLgogICAg
IEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGZsb2F0IEZvbnRD
YXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12
b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAor
dm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5n
JiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QK
IHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBmbG9hdCBpbml0aWFsQWR2YW5j
ZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgZ2x5
cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKaW5kZXggZWU4OGUyMDViYzEzN2U1NjIwMDQwYzBj
MWZmYmRmOTA4YTRlZmEyZi4uYTc4MDcwZDlhYWFmN2Y0ZTJhMzE4OWVlMTQ4YTZhNWM3OTM4OGMw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25X
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2lu
LmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByKQogICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5k
b3dDb250ZXh0KCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHIpKTsKKyAgICBMb2NhbFdpbmRv
d3NDb250ZXh0IHdpbmRvd0NvbnRleHQoY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyKSk7CiAg
ICAgRHJhd0ljb25FeCh3aW5kb3dDb250ZXh0LmhkYygpLCByLngoKSwgci55KCksIG1faEljb24s
IHIud2lkdGgoKSwgci5oZWlnaHQoKSwgMCwgMCwgRElfTk9STUFMKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4
IDcyM2VhZGJmZDVkYzIxNWYzMzAzZGUwM2MzNThlYmE4YTY5MDQxMjQuLjA4MzQ3MDdkYTliYWY3
MTFjYmY3MjgxNzM2ZjI1MjJmN2YxMWE3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTc2LDkgKzc2LDkgQEAgYm9v
bCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6
ZSogc2l6ZSkKIAogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgp
OwogICAgIGlmIChzaXplKQotICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoJmdj
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0
KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOworICAgICAgICBk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJ
bmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KCZnYywgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgLy8gRG8gY2xlYW51cAogICAgIENHQ29udGV4dFJl
bGVhc2UoY2dDb250ZXh0KTsKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0
SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3ApCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKICAgICBzaXplX3QgZnJhbWVzID0gZnJh
bWVDb3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVzOyArK2kpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcAppbmRleCA0ZmQ2Mzk0YmNkOTg4NTM4NWU0YzFmNWEwYWZhM2I2NGU2YTg2NDlkLi5j
NzQwMzQ3YmExYmI3NzZjYzQ3YTI4OTNkZGZhMjdkODE1NTQzNWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCkBA
IC03OSw3ICs3OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0g
Qml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAgICAgICAgZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0
aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKICAgICAgICAg
ZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8u
Ym1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHksIEJsZW5k
TW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCkBAIC04OSw3ICs4
OSw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNv
bnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQml0bWFwSW1h
Z2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQordm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ap
CiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZyYW1lczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2luZG93c0NvbnRleHQuaAppbmRleCBjZjUxYjAw
ODEwODg1OWYwMzE1N2FjYjJlYTY2M2NmZDkwZWYxYmIxLi4zYWRkYzE0NGZjNzFmNzYyNDBhZjk5
Njk0ZmYwNWUwNjlkMjFiNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTG9jYWxXaW5kb3dzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKQEAgLTM0LDI0ICszNCwy
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBMb2NhbFdpbmRvd3NDb250ZXh0IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbFdpbmRvd3NDb250ZXh0KTsKIHB1YmxpYzoKLSAg
ICBMb2NhbFdpbmRvd3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBJbnRSZWN0JiByZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gdHJ1ZSwgYm9vbCBt
YXlDcmVhdGVCaXRtYXAgPSB0cnVlKQorICAgIExvY2FsV2luZG93c0NvbnRleHQoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgc3VwcG9y
dEFscGhhQmxlbmQgPSB0cnVlLCBib29sIG1heUNyZWF0ZUJpdG1hcCA9IHRydWUpCiAgICAgICAg
IDogbV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICAsIG1fcmVjdChy
ZWN0KQogICAgICAgICAsIG1fc3VwcG9ydEFscGhhQmxlbmQoc3VwcG9ydEFscGhhQmxlbmQpCiAg
ICAgICAgICwgbV9tYXlDcmVhdGVCaXRtYXAobWF5Q3JlYXRlQml0bWFwKQogICAgIHsKLSAgICAg
ICAgbV9oZGMgPSBtX2dyYXBoaWNzQ29udGV4dC0+Z2V0V2luZG93c0NvbnRleHQobV9yZWN0LCBt
X3N1cHBvcnRBbHBoYUJsZW5kLCBtX21heUNyZWF0ZUJpdG1hcCk7CisgICAgICAgIG1faGRjID0g
bV9ncmFwaGljc0NvbnRleHQuZ2V0V2luZG93c0NvbnRleHQobV9yZWN0LCBtX3N1cHBvcnRBbHBo
YUJsZW5kLCBtX21heUNyZWF0ZUJpdG1hcCk7CiAgICAgfQogCiAgICAgfkxvY2FsV2luZG93c0Nv
bnRleHQoKQogICAgIHsKLSAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPnJlbGVhc2VXaW5kb3dz
Q29udGV4dChtX2hkYywgbV9yZWN0LCBtX3N1cHBvcnRBbHBoYUJsZW5kLCBtX21heUNyZWF0ZUJp
dG1hcCk7CisgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LnJlbGVhc2VXaW5kb3dzQ29udGV4dCht
X2hkYywgbV9yZWN0LCBtX3N1cHBvcnRBbHBoYUJsZW5kLCBtX21heUNyZWF0ZUJpdG1hcCk7CiAg
ICAgfQogCiAgICAgSERDIGhkYygpIGNvbnN0IHsgcmV0dXJuIG1faGRjOyB9CiAKIHByaXZhdGU6
Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtX2dyYXBoaWNzQ29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIG1fZ3JhcGhpY3NDb250ZXh0OwogICAgIEhEQyBtX2hkYzsKICAgICBJbnRSZWN0IG1f
cmVjdDsKICAgICBib29sIG1fc3VwcG9ydEFscGhhQmxlbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9XaWRnZXRHdGsuY3BwCmluZGV4IGE3YmE0MmEyZWIzZTM5ZTQyNzY1NWE0ODgzMjBj
M2RjMGYyZDc3MDIuLjJlZTMxODIwY2VhMGE0ZGQwZjFmZTdjYTk4ZjcyNDcxZGEwYzY0ZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRHdGsuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICAgICAgZ3RrX3dpZGdldF9oaWRlKHBsYXRmb3Jt
V2lkZ2V0KCkpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XaWRnZXRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1t
CmluZGV4IGE4ZGZjYzMyMWJhZGZlZDI3MTBmZWVjNTA4ZDI3Y2MxM2E4MTMxY2EuLjBlMzY1ZWYw
ODg0YWQyYzhhNmQ2NzI1Zjc0Yzc1ODc4YzU5MDAzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dpZGdldElPUy5tbQpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgTlNWaWV3KiBXaWRnZXQ6
OmdldE91dGVyVmlldygpIGNvbnN0CiAgICAgcmV0dXJuIHZpZXc7CiB9CiAKLXZvaWQgV2lkZ2V0
OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHIpCit2b2lkIFdpZGdl
dDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByKQogewotICAgIGlm
IChwLT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHAucGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTlNWaWV3ICp2aWV3ID0gZ2V0T3V0ZXJWaWV3KCk7
CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcC0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHAucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwogCiAgICAgTlNSZWN0IHZpZXdGcmFtZSA9IFt2
aWV3IGZyYW1lXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFn
SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1t
CmluZGV4IGI1MDVmYzEzOGQ1ODFhN2E0MWYxYmVhNjNmY2U1MjZlODU0NjFmZGIuLjVmYjA1MmQ0
NTY3ZGEwMGJkODJkZTIxYzlhZDY5MDEwNTVkNWQ5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQpAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyB2b2lk
IGRyYXdBdFBvaW50KE5TU3RyaW5nICpzdHJpbmcsIE5TUG9pbnQgcG9pbnQsIE5TRm9udCAqZm9u
dCwgTlNDb2xvciAqCiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFt
ZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZi
bHVlIGFscGhhOiZhbHBoYV07CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Io
bWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgCi0gICAgICAgIHdlYkNvcmVGb250LmRy
YXdUZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54LCAoZmxpcHBl
ZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKKyAgICAgICAgd2ViQ29yZUZvbnQuZHJh
d1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQg
PyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWZs
aXBwZWQpCiAgICAgICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjZ0NvbnRleHQsIDEsIC0xKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQuaAppbmRleCA1OGI2NDcyY2YyZTA3YzZiOTA4MDQwMjg3ZWI2MmM1YTkw
MjdlZjAxLi40OGZlYjJlYTRkMTlkNDBhMDk1YzlkZmVkNWI5NzYyYmFjODY3NjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dC5oCkBAIC0yOSwxMSArMjksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQpOwogcHVibGljOgotICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCk7CisgICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYpOwogICAgIH5Mb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0KCk7
CiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZEdyYXBoaWNzQ29udGV4dDsK
KyAgICBHcmFwaGljc0NvbnRleHQmIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7CiAgICAgTlNHcmFw
aGljc0NvbnRleHQqIG1fc2F2ZWROU0dyYXBoaWNzQ29udGV4dDsKICAgICBib29sIG1fZGlkU2V0
R3JhcGhpY3NDb250ZXh0OwogfTsKQEAgLTQxLDggKzQxLDggQEAgcHJpdmF0ZToKIGNsYXNzIENv
bnRleHRDb250YWluZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRleHRDb250YWlu
ZXIpOwogcHVibGljOgotICAgIENvbnRleHRDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQpCi0gICAgICAgIDogbV9ncmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSkKKyAgICBDb250ZXh0Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4
dCYgZ3JhcGhpY3NDb250ZXh0KQorICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNz
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dC5tbQppbmRleCAyNjMyZjY2NDNiZmUwZjY5YTM0MjcxMTZmODc4MTFhYjVkOWUwY2RlLi4xMzlk
ZDY2NWJjMWJlYjEwYjc1YTRlNDNlY2ZkN2Y3MjA3MTgxNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
bW0KQEAgLTI0LDExICsyNCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQotICAgIDogbV9kaWRTZXRHcmFwaGljc0NvbnRleHQo
ZmFsc2UpCitMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKKyAgICA6IG1fc2F2ZWRH
cmFwaGljc0NvbnRleHQoZ3JhcGhpY3NDb250ZXh0KQorICAgICwgbV9kaWRTZXRHcmFwaGljc0Nv
bnRleHQoZmFsc2UpCiB7Ci0gICAgbV9zYXZlZEdyYXBoaWNzQ29udGV4dCA9IGdyYXBoaWNzQ29u
dGV4dDsKLSAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKKyAgICBncmFwaGljc0NvbnRleHQu
c2F2ZSgpOwogCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHRoaXMtPmNnQ29udGV4dCgp
OwogICAgIGlmIChjZ0NvbnRleHQgPT0gW1tOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4
dF0gZ3JhcGhpY3NQb3J0XSkgewpAQCAtNDksMTIgKzQ5LDEyIEBAIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCgpCiAgICAgICAgIFttX3Nh
dmVkTlNHcmFwaGljc0NvbnRleHQgcmVsZWFzZV07CiAgICAgfQogCi0gICAgbV9zYXZlZEdyYXBo
aWNzQ29udGV4dC0+cmVzdG9yZSgpOworICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQucmVzdG9y
ZSgpOwogfQogCiBDR0NvbnRleHRSZWYgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0OjpjZ0Nv
bnRleHQoKQogewotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBtX3NhdmVkR3JhcGhpY3ND
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
bV9zYXZlZEdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICByZXR1cm4gY2dD
b250ZXh0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMubW0KaW5kZXggNzdmMmQ4MDhjYzY0ODU3MTFiMWE5MmVjOGY4YmNiOTdjMzhjNjg2
Ni4uYzMzNzY1ZmMyNWQwZGMzYmE1ZjFmMmU1NTk5OWVhOGM3NTI4YWI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTEzLDcg
KzUxMyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciYgc2Nyb2xs
YmFyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgY29udGV4dC5jbGlwKGRh
bWFnZVJlY3QpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzY3JvbGxiYXIuZnJhbWVSZWN0
KCkueCgpLCBzY3JvbGxiYXIuZnJhbWVSZWN0KCkueSgpKTsKLSAgICAgICAgTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmY29udGV4dCk7CisgICAgICAgIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAgICAgICAgIHNjcm9s
bGJhclBhaW50ZXJQYWludChzY3JvbGxiYXJNYXAoKS0+Z2V0KCZzY3JvbGxiYXIpLmdldCgpLCBz
Y3JvbGxiYXIuZW5hYmxlZCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLmgKaW5kZXggZjhlZTE2ZWI5ZWExMjE0M2IyMTI1ZjA4YWZkNjM2MDZjYzg0MTcxMi4u
M2JhZGU3YTY2ZTA5ZDc5NjM2ODExM2U0NDY3OWUwODJmN2Y4NDNmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgKQEAgLTUyLDEzICs1MiwxMyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCBw
YXJ0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxW
aWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rvcikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVz
JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChD
b250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IE9uY2UgUmVuZGVyVGhlbWVN
YWMgaXMgY29udmVydGVkIG92ZXIgdG8gdXNlIFRoZW1lIHRoZW4gdGhpcyBjYW4gYmUgaW50ZXJu
YWwgdG8gVGhlbWVNYWMuCiAgICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Nyb2xsVmll
dyosIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBib29sIHVzZVVucGFyZW50ZWRWaWV3ID0gZmFsc2Up
OwogICAgIHN0YXRpYyB2b2lkIHNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYp
OwotICAgIHN0YXRpYyBib29sIGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0
KE5TQ2VsbCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIE5TVmlldyosIGJv
b2wgLyogZHJhd0J1dHRvbkNlbGwgKi8sIGJvb2wgLyogZHJhd0ZvY3VzUmluZyAqLywgYm9vbCAv
KiB1c2VJbWFnZUJ1ZmZlciAqLywgZmxvYXQgLyogZGV2aWNlU2NhbGVGYWN0b3IgKi8pOworICAg
IHN0YXRpYyBib29sIGRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2Vs
bCosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIE5TVmlldyosIGJvb2wgLyog
ZHJhd0J1dHRvbkNlbGwgKi8sIGJvb2wgLyogZHJhd0ZvY3VzUmluZyAqLywgYm9vbCAvKiB1c2VJ
bWFnZUJ1ZmZlciAqLywgZmxvYXQgLyogZGV2aWNlU2NhbGVGYWN0b3IgKi8pOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CmluZGV4IDUxY2ZkMGRlM2EzYjU5ZmU0OTdlOTZhMDA4YmE4Y2U4YmZmOThmMDguLjFiZDUwOWY1
NzBjODQxNjEwMzBjODUzNzg5NWQ3ZTM2ZWExNTZjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvVGhlbWVNYWMubW0KQEAgLTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBkcmF3Q2Vs
bEZvY3VzUmluZyhOU0NlbGwgKmNlbGwsIE5TUmVjdCBjZWxsRnJhbWUsIE5TVmlldyAqY29udHJv
bFZpZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0
b24oQ29udHJvbFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZs
b2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpCitzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1
dHRvbihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVz
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwg
ZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKIApAQCAtNDAwLDcgKzQwMCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50VG9nZ2xl
QnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0
CiAgICAgfQogICAgIGNvbnRyb2xTdGF0ZXMuc2V0RGlydHkoZmFsc2UpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBOU0NvbnRyb2xTaXpl
IGNvbnRyb2xTaXplID0gW3RvZ2dsZUJ1dHRvbkNlbGwgY29udHJvbFNpemVdOwogICAgIEludFNp
emUgem9vbWVkU2l6ZSA9IGJ1dHRvblR5cGUgPT0gQ2hlY2tib3hQYXJ0ID8gY2hlY2tib3hTaXpl
cygpW2NvbnRyb2xTaXplXSA6IHJhZGlvU2l6ZXMoKVtjb250cm9sU2l6ZV07CkBAIC00MTIsOSAr
NDEyLDkgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0dG9u
VHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKICAgICBpZiAoem9vbUZhY3RvciAhPSAx
LjBmKSB7CiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lkdGgo
KSAvIHpvb21GYWN0b3IpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVk
UmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUo
aW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIGNvbnRleHQt
PnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsK
KyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3Rvcikp
OworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVk
UmVjdC55KCkpOwogICAgIH0KIAogICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQoY29udGV4dCk7CkBAIC00MzEsMTEgKzQzMSwxMSBAQCBzdGF0aWMgdm9pZCBwYWlu
dFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBidXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250
cm9sU3RhdAogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDAK
ICAgICBpZiAoW3RvZ2dsZUJ1dHRvbkNlbGwgX3N0YXRlQW5pbWF0aW9uUnVubmluZ10pIHsKLSAg
ICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55
KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICAgICAg
Y29udGV4dC0+dHJhbnNsYXRlKDAsIC1pbmZsYXRlZFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAg
ICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoMCwgLWluZmxhdGVkUmVjdC5oZWlnaHQoKSk7CiAKLSAgICAgICAgW3RvZ2dsZUJ1
dHRvbkNlbGwgX3JlbmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUluQ29udGV4dDpjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50KDAsIDApXTsKKyAgICAgICAg
W3RvZ2dsZUJ1dHRvbkNlbGwgX3JlbmRlckN1cnJlbnRBbmltYXRpb25GcmFtZUluQ29udGV4dDpj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpIGF0TG9jYXRpb246TlNNYWtlUG9pbnQoMCwgMCldOwog
ICAgICAgICBpZiAoIVt0b2dnbGVCdXR0b25DZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddICYm
IGlzQ2VsbEZvY3VzZWQpCiAgICAgICAgICAgICBuZWVkc1JlcGFpbnQgPSBUaGVtZU1hYzo6ZHJh
d0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQodG9nZ2xlQnV0dG9uQ2VsbC5nZXQo
KSwgY29udGV4dCwgaW5mbGF0ZWRSZWN0LCB2aWV3LCBmYWxzZSwgdHJ1ZSwgdXNlSW1hZ2VCdWZm
ZXIsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICB9IGVsc2UKQEAgLTUyMCwxNCArNTIwLDE0IEBA
IHN0YXRpYyBOU0J1dHRvbkNlbGwgKmJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBjb25zdCBDb250
cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzCiAgICAgcmV0dXJuIGNlbGw7CiB9CiAgICAgCi1zdGF0
aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzJiBjb250
cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9v
bWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcikKK3N0YXRpYyB2b2lkIHBh
aW50QnV0dG9uKENvbnRyb2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBm
bG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogICAgIAogICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBu
ZWVkZWQgZm9yIHRoZSBjb250cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4K
ICAgICBDb250cm9sU3RhdGVzOjpTdGF0ZXMgc3RhdGVzID0gY29udHJvbFN0YXRlcy5zdGF0ZXMo
KTsKICAgICBOU0J1dHRvbkNlbGwgKmJ1dHRvbkNlbGwgPSBidXR0b24ocGFydCwgY29udHJvbFN0
YXRlcywgSW50U2l6ZSh6b29tZWRSZWN0LnNpemUoKSksIHpvb21GYWN0b3IpOwotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6
ZSBjb250cm9sU2l6ZSA9IFtidXR0b25DZWxsIGNvbnRyb2xTaXplXTsKICAgICBJbnRTaXplIHpv
b21lZFNpemUgPSBidXR0b25TaXplcygpW2NvbnRyb2xTaXplXTsKQEAgLTU0Nyw5ICs1NDcsOSBA
QCBzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVz
JiBjb250cm9sU3RhdGVzLCBHcmFwaGljcwogICAgICAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBm
KSB7CiAgICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRo
KCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRIZWlnaHQoaW5m
bGF0ZWRSZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBjb250ZXh0LT50
cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOwotICAg
ICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRS
ZWN0LnkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgp
LCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgCkBAIC01OTksNyArNTk5LDcgQEAgc3RhdGljIE5TQ29udHJvbFNpemUgc3RlcHBlckNv
bnRyb2xTaXplRm9yRm9udChjb25zdCBGb250Q2FzY2FkZSYgZm9udCkKICAgICByZXR1cm4gTlNN
aW5pQ29udHJvbFNpemU7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3Rh
dGVzJiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6
b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KikKK3N0YXRpYyB2b2lkIHBh
aW50U3RlcHBlcihDb250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxW
aWV3KikKIHsKICAgICAvLyBXZSBkb24ndCB1c2UgTlNTdGVwcGVyQ2VsbCBiZWNhdXNlIHRoZXJl
IGFyZSBubyB3YXlzIHRvIGRyYXcgYW4KICAgICAvLyBOU1N0ZXBwZXJDZWxsIHdpdGggdGhlIHVw
IGJ1dHRvbiBoaWdobGlnaHRlZC4KQEAgLTYxNywxMyArNjE3LDEzIEBAIHN0YXRpYyB2b2lkIHBh
aW50U3RlcHBlcihDb250cm9sU3RhdGVzJiBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QKICAgICAgICAgZHJhd0luZm8ua2luZCA9IGtUaGVtZUluY0RlY0J1dHRvbjsKIAog
ICAgIEludFJlY3QgcmVjdCh6b29tZWRSZWN0KTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7CiAgICAg
ICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAgICAgICAgIHJl
Y3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgY29udGV4
dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KHJlY3QueCgpLCByZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKHpv
b21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXJlY3Qu
eCgpLCAtcmVjdC55KCkpOwogICAgIH0KICAgICBDR1JlY3QgYm91bmRzKHJlY3QpOwogICAgIENH
UmVjdCBiYWNrZ3JvdW5kQm91bmRzOwpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgVGhlbWVNYWM6
OnNldEZvY3VzUmluZ0NsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogY29uc3QgZmxv
YXQgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoID0gMy4wZjsKIAotYm9vbCBUaGVtZU1hYzo6
ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiBjZWxsLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaW5mbGF0ZWRSZWN0LCBOU1Zp
ZXcqIHZpZXcsIGJvb2wgZHJhd0J1dHRvbkNlbGwsIGJvb2wgZHJhd0ZvY3VzUmluZywgYm9vbCB1
c2VJbWFnZUJ1ZmZlciwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCitib29sIFRoZW1lTWFjOjpk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqIGNlbGwsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbmZsYXRlZFJlY3QsIE5TVmll
dyogdmlldywgYm9vbCBkcmF3QnV0dG9uQ2VsbCwgYm9vbCBkcmF3Rm9jdXNSaW5nLCBib29sIHVz
ZUltYWdlQnVmZmVyLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKIHsKICAgICBBU1NFUlQoZHJh
d0J1dHRvbkNlbGwgfHwgZHJhd0ZvY3VzUmluZyk7CiAgICAgYm9vbCBuZWVkc1JlcGFpbnQgPSBm
YWxzZTsKQEAgLTY3OSw3ICs2NzksNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNS
aW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqIGNlbGwsIEdyYXBoaWNzQ29udAogICAgICAg
ICAgICAgaWYgKGRyYXdGb2N1c1JpbmcpCiAgICAgICAgICAgICAgICAgbmVlZHNSZXBhaW50ID0g
ZHJhd0NlbGxGb2N1c1JpbmcoY2VsbCwgaW1hZ2VCdWZmZXJEcmF3UmVjdCwgdmlldyk7CiAgICAg
ICAgIH0KLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgp
LCBDb2xvclNwYWNlU1JHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0
dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsK
KyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9y
U3BhY2VTUkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSAtIEZsb2F0U2l6ZShidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCkpOwogICAgICAg
ICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgIH0KICAgICBpZiAoZHJhd0J1dHRvbkNlbGwpCkBA
IC04NDAsNyArODQwLDcgQEAgdm9pZCBUaGVtZU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3Qo
Q29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgc3QKICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TCiB9CiAKLXZvaWQgVGhlbWVNYWM6OnBhaW50KENvbnRyb2xQYXJ0IHBh
cnQsIENvbnRyb2xTdGF0ZXMmIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqIHNj
cm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3Ip
Cit2b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQogewogICAgIHN3aXRjaCAocGFy
dCkgewogICAgICAgICBjYXNlIENoZWNrYm94UGFydDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tCmluZGV4IDU0ZDljODU3ZGY0MDJiODJkN2E3ZDEzMGY4Zjc2MTg1ZTJi
ZDc5YWEuLmIzMGZkODEzNDNjMDZhY2Q4OWJhOGY5ZTJmNjc0Mzc2ZjZlYWQwMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTg1LDkgKzE4NSw5IEBAIE5T
VmlldyAqV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25zdAogICAgIHJldHVybiB2aWV3OwogfQog
Ci12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiBy
KQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYg
cikKIHsKLSAgICBpZiAocC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwLnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TVmlldyAqdmlldyA9IGdldE91dGVy
VmlldygpOwogCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNz
Q29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKICAgICAgICAgICAgIHNjcm9sbFZpZXcgPSAw
OwogICAgIH0KIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwLT5wbGF0Zm9ybUNvbnRl
eHQoKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcC5wbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBBU1NFUlQoY2dDb250ZXh0ID09IFtjdXJyZW50Q29udGV4dCBncmFwaGljc1BvcnRdKTsK
ICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggM2I0OTc2NjBjYzk2OGIzMDFkY2YwNjdl
NDNmOGVjNTg4OTcxZDEyNi4uNDZhN2NiNzExMjJhMDRlMjZiNmJhMmUxNjE5MDM3YThiYWQ4ZDc3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTE4
MCw3ICsxODAsNyBAQCB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzZXRTaXplKGNv
bnN0IEludFNpemUmKQogewogfQogCi12b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpw
YWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCmluZGV4
IDFjMWYyMTgyZTk1OTM3YzdhYzQ1YmI1ODc0YmVkZmMwYjBjZDEyYjAuLjAzMjYxZmFjNjJmNDNm
YzhhYTJjMGQ3MTA3NzgzNjYyMDdhNTNiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmgKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRNZWRp
YVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlvbk1l
ZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrV2l0aFRvbGVy
YW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxiYXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFy
VGhlbWVXaW4uY3BwCmluZGV4IGM2NTRhYjEwMzE5ZjcxNTA0ZDE0ZjdlMjFhZTdkMTU2NWE0ZjA5
MGIuLjNhMDk0NDQyM2I2ODRiODM4MWI3YTQzYTlhODk2YjM5YWY5YjQzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtMjQ3
LDcgKzI0Nyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2NyCiAgICAgaWYgKHNjcm9sbGJhclRo
ZW1lKQogICAgICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFu
c3BhcmVudChzY3JvbGxiYXJUaGVtZSwgcGFydCwgc3RhdGUpOwogCi0gICAgTG9jYWxXaW5kb3dz
Q29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7CisgICAg
TG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBoYUJs
ZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKIAogICAgIGlmIChzY3JvbGxiYXJUaGVt
ZSkKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYgogICAgIGlmIChz
Y3JvbGxiYXJUaGVtZSkKICAgICAgICAgYWxwaGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFy
dGlhbGx5VHJhbnNwYXJlbnQoc2Nyb2xsYmFyVGhlbWUsIFNQX0JVVFRPTiwgeHBTdGF0ZSk7CiAK
LSAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBh
bHBoYUJsZW5kKTsKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRl
eHQsIHJlY3QsIGFscGhhQmxlbmQpOwogICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogICAgIGlm
IChzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJU
aGVtZSwgd2luZG93c0NvbnRleHQuaGRjKCksIFNQX0JVVFRPTiwgeHBTdGF0ZSwgJnRoZW1lUmVj
dCwgMCk7CkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmEKICAgICBi
b29sIGFscGhhQmxlbmQgPSBmYWxzZTsKICAgICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAg
IGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3VuZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9s
bGJhclRoZW1lLCBzY3JvbGxiYXIub3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ID8gU1BfVEhVTUJIT1IgOiBTUF9USFVNQlZFUlQsIHN0YXRlKTsKLSAgICBMb2NhbFdpbmRvd3ND
b250ZXh0IHdpbmRvd3NDb250ZXh0KCZjb250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKKyAgICBM
b2NhbFdpbmRvd3NDb250ZXh0IHdpbmRvd3NDb250ZXh0KGNvbnRleHQsIHJlY3QsIGFscGhhQmxl
bmQpOwogICAgIFJFQ1QgdGhlbWVSZWN0KHJlY3QpOwogICAgIGlmIChzY3JvbGxiYXJUaGVtZSkg
ewogICAgICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1lLCB3aW5kb3dzQ29u
dGV4dC5oZGMoKSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IDI3MWUzNmQ1Y2Iz
MTBmNWY2ODg3ZGQyMzc5MGE5YjZiYTQ2OGYwYTAuLjlhY2UxYTE0ODUyNDlkNzU2ZTFiZDNlMjJl
N2UxNjA2NDA1ZTlkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9X
aWRnZXRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4u
Y3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29y
JiBjdXJzb3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0K
IAotdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQor
dm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCA0NjlmN2Vm
ZWU4N2Y3NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li4yZThmZDBiYjBhMmUwYmE0M2I2ZWM1
NTYwYTQzNGQ2YmZmZmRiNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RWxsaXBzaXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0Jv
eC5jcHAKQEAgLTQyLDE0ICs0MiwxNCBAQCBFbGxpcHNpc0JveDo6RWxsaXBzaXNCb3goUmVuZGVy
QmxvY2tGbG93JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpcwogCiB2b2lk
IEVsbGlwc2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRv
bSkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBD
b2xvciB0ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5V2Via2l0VGV4dEZpbGxDb2xvcik7Ci0gICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LT5m
aWxsQ29sb3IoKSkKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGlu
ZVN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LmZpbGxD
b2xvcigpKQorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHls
ZS5jb2xvclNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYgKGxp
bmVTdHlsZS50ZXh0U2hhZG93KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KExheW91
dFNpemUobGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygp
LT55KCkpLAorICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhMYXlvdXRTaXplKGxpbmVTdHlsZS50
ZXh0U2hhZG93KCktPngoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+eSgpKSwKICAgICAgICAg
ICAgIGxpbmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5lU3R5bGUudGV4dFNoYWRv
dygpLT5jb2xvcigpLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93
ID0gdHJ1ZTsKICAgICB9CkBAIC02MSwxOCArNjEsMTggQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwg
TGEKICAgICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUg
dGV4dC4KICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xv
cigpID8gcGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tGbG93KCkuc2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFsaWQoKSAmJiBm
b3JlZ3JvdW5kICE9IHRleHRDb2xvcikKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihmb3JlZ3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRl
eHQuc2V0RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAg
IH0KIAogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2lu
ZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgotICAgIGNvbnRleHQtPmRyYXdUZXh0KGZv
bnQsIFJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9z
dHIsIGxpbmVTdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSAr
IHBhaW50T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRN
ZXRyaWNzKCkuYXNjZW50KCkpKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHls
ZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0
LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpKTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KLSAgICBp
ZiAodGV4dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsQ29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAo
dGV4dENvbG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCisgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICBpZiAoc2V0
U2hhZG93KQotICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOworICAgICAgICBjb250ZXh0
LmNsZWFyU2hhZG93KCk7CiAKICAgICBwYWludE1hcmt1cEJveChwYWludEluZm8sIHBhaW50T2Zm
c2V0LCBsaW5lVG9wLCBsaW5lQm90dG9tLCBsaW5lU3R5bGUpOwogfQpAQCAtMTE5LDcgKzExOSw3
IEBAIEludFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QoKQogICAgIHJldHVybiBlbmNs
b3NpbmdJbnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQogCi12b2lkIEVsbGlwc2lzQm94OjpwYWlu
dFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYg
Zm9udCkKK3ZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIENvbG9yIHRleHRDb2xv
ciA9IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBD
b2xvciBjID0gYmxvY2tGbG93KCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CkBAIC0xMzIs
MTIgKzEzMiwxMiBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgICAgICBjID0gQ29sb3Io
MHhmZiAtIGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAg
ICBjb25zdCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhp
cyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93
LgogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRP
ZmZzZXQueCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgp
LCAwLCByb290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRl
ckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxl
LCBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RG
b3JUZXh0KHJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0
KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0
LCByZW5kZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwg
Yywgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigp
LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5bGUuY29s
b3JTcGFjZSgpKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBI
aXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNp
c0JveC5oCmluZGV4IDI3ZTkxMmZmZmEwM2E1NGUxMjRkOWJkMzJmYzcxOTE2NjMxY2IyNTEuLjQ0
YzA1ZGFmMWFkMjRiY2ZiMDhmYzNjNDljZGExNGFiNzZjZjExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FbGxpcHNpc0JveC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwYWludE1hcmt1cEJveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBjb25zdCBSZW5k
ZXJTdHlsZSYpOwogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0KLSAgICB2b2lkIHBhaW50U2Vs
ZWN0aW9uKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IEZvbnRDYXNjYWRlJik7CiAgICAgSW5saW5lQm94KiBtYXJrdXBCb3goKSBjb25zdDsKIAog
ICAgIGJvb2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDYyZGFjNGI4YjQ2MjIzODdi
OGRjY2U3OGZlYTIwOTJkMjE0NDBlNWMuLjU3NTdlOWE4NTE4M2MwNzY4MGJhMTlmNGE2YTMyMWU2
NTc2ZDFjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVj
dFJlbmRlcmVyLmNwcApAQCAtODAsNyArODAsNyBAQCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZp
bHRlckVmZmVjdFJlbmRlcmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5k
ZXJlcjo6aW5wdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJj
ZUltYWdlKCktPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291
cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0
LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKQEAgLTQxNyw3ICs0
MTcsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVj
dCgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXI6OmFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0
KQordm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3Jh
cGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1faGF2ZUZp
bHRlckVmZmVjdCAmJiBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigpKTsKICAgICBGaWx0
ZXJFZmZlY3RSZW5kZXJlciogZmlsdGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIo
KTsKQEAgLTQyOSw3ICs0MjksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjph
cHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQwogICAgIExheW91
dFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3QoKTsKICAgICBkZXN0UmVjdC5tb3Zl
KG1fcGFpbnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CiAKLSAgICBkZXN0aW5hdGlv
bkNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVy
LT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAorICAgIGRlc3RpbmF0aW9uQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVy
ZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwKICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVs
cyhkZXN0UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCmlu
ZGV4IGJlYjNmNzdjNDhhMGEyYjRmYTEzYjZlNjQ1NmNiM2E3N2E5YjBmNjguLjNlMTMzN2QzZDE1
Zjc2MTE5MzRkNWM2ZDU3NmE5ZjE4MjAxNDc4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgcHJlcGFyZUZpbHRlckVmZmVjdChSZW5kZXJMYXllciosIGNvbnN0IExheW91
dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3Qg
TGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgYm9vbCBiZWdpbkZpbHRlckVmZmVj
dCgpOwotICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5h
dGlvbkNvbnRleHQpOworICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQpOwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVy
Q29udGV4dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1h
Z2VRdWFsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggYzRhNmU0M2M2NzIyZjQxMGY3YmY5MGQxMDhi
OGM1NjBjMzIwMDA5Yy4uNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFiN2QxMzRhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9s
bGVyLmNwcApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6
cmVzdGFydFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVU
aHJlc2hvbGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50
QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmpl
Y3QqIG9iamVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0
U2l6ZSYgc2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExv
d1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
b2JqZWN0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXpl
JiBzaXplKQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRo
ZW4gbm9uZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAg
ICAvLyBxdWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgp
IHx8IGltYWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpKQorICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLmlt
YWdlUmVuZGVyaW5nKCkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNv
bnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgUgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7
CiAgICAgYm9vbCBjb250ZXh0SXNTY2FsZWQgPSAhY3VycmVudFRyYW5zZm9ybS5pc0lkZW50aXR5
T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpOwogICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIHNp
emUgPT0gaW1hZ2VTaXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVj
dC4gSWYgd2UgaGFkIGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgcmVtb3Zl
IHRoaXMgb2JqZWN0IGZyb20gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNWQ3ZWU5MmY1N2NlYTM2YmE2NzYz
MzliODY4NmZjYTM1Y2JhNWJkLi5kMTRkYzQ5YWE3OWFmMzE1ZGFjOGUxZDUxMjFjMzQwMjYwZWY2
NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250
cm9sbGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihjb25zdCBSZW5k
ZXJWaWV3Jik7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29u
dGV4dCosIFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiBsYXllciwg
Y29uc3QgTGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3Jh
cGhpY3NDb250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQq
IGxheWVyLCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ry
b3llZChSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5k
ZXJlcik7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAppbmRleCAzNTliZWQ2NTYzMWYxN2RmODU0OWI3ZWMzNDYwYThiMDkzZmUwMWY5Li5h
ODc0Y2RjMWM3ZDFkMWU3OGU0Yjc3NjA5OWVjY2EwYzhiNGIzYjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMjIwLDggKzEyMjAsOCBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBDb2xvciYgYywgYwogICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0
ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUs
IHRoaXMsIHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9C
UkVBSykKICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFr
KCkgPT0gRENMT05FKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cChMYXlvdXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0
LngoKSwgcmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCku
cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFj
a2dyb3VuZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICB9CiAjZW5kaWYK
QEAgLTEyNTIsOCArMTI1Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAgICAgICAgIExh
eW91dFVuaXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGgg
OiBMYXlvdXRVbml0KHdpZHRoKCkpOwogICAgICAgICBMYXlvdXRVbml0IHN0cmlwSGVpZ2h0ID0g
aXNIb3Jpem9udGFsKCkgPyBMYXlvdXRVbml0KGhlaWdodCgpKSA6IHRvdGFsTG9naWNhbFdpZHRo
OwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlvdXRSZWN0
KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55
KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0
cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlz
LCByZWN0LnNpemUoKSwgb3ApOwogICAgIH0KIH0KQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZvaWQg
SW5saW5lRmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGFk
anVzdGVkUGFpbnRvZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwot
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0
UmVjdCBwYWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRvZmZzZXQsIGZyYW1lUmVj
dC5zaXplKCkpOwogICAgIC8vIFNoYWRvdyBjb21lcyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBi
YWNrZ3JvdW5kIGFuZCBib3JkZXIuCiAgICAgaWYgKCFyZW5kZXJlcigpLmJveFNoYWRvd1Nob3Vs
ZEJlQXBwbGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0LCBCYWNrZ3JvdW5kQmxl
ZWROb25lLCB0aGlzKSkKQEAgLTEzODIsOCArMTM4Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6
cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZy
YW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgICAgIExheW91dFJl
Y3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAodGhpcywgYm9yZGVy
SW1hZ2UsIHBhaW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAg
ICAgIGNvbnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRCb3Jk
ZXIocGFpbnRJbmZvLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJp
cEhlaWdodCksIGxpbmVTdHlsZSk7CiAgICAgfQogfQpAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9p
ZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29t
cG9zaXRlRGVzdGluYXRpb25JbjsKICAgICAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikg
ewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihD
b21wb3NpdGVEZXN0aW5hdGlvbkluKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5i
ZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7
CiAgICAgICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNDI3LDE0ICsxNDI3LDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
CiAgICAgYm9vbCBoYXNCb3hJbWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNh
blJlbmRlcigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7
CiAgICAgaWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5pc0xvYWRlZCgpKSB7CiAg
ICAgICAgIGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAgcmV0dXJuOyAvLyBEb24n
dCBwYWludCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gbG9hZC4KICAg
ICB9CiAKICAgICAvLyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2UgYXJlIHRoZSBvbmx5IGJv
eCBmb3IgdGhpcyBvYmplY3QuICBJbiB0aG9zZQogICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUg
Y2FsbCB0byBkcmF3IGlzIHJlcXVpcmVkLgogICAgIGlmICghcHJldkxpbmVCb3goKSAmJiAhbmV4
dExpbmVCb3goKSkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFp
bnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0
LnNpemUoKSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3Np
dGVPcCk7CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8u
Y29udGV4dCgpLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIGZyYW1lUmVjdC5zaXpl
KCkpLCByZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3Ap
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXNrIGltYWdlIHRoYXQgc3Bh
bnMgbXVsdGlwbGUgbGluZXMuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IF90eCBhbmQg
X3R5IGJ5IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlvdXMgbGluZXMuCkBAIC0xNDUwLDEzICsxNDUw
LDEzIEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBI
ZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNh
bFdpZHRoOwogCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQ
aWVjZUltYWdlU3RyaXAodGhpcywgbWFza05pbmVQaWVjZUltYWdlLCBwYWludFJlY3QpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250
ZXh0KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwotICAgICAg
ICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIExheW91
dFJlY3Qoc3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIo
KS5zdHlsZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3QpOworICAgICAgICByZW5k
ZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQoKSwgTGF5b3V0UmVj
dChzdHJpcFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigpLnN0
eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAg
ICBpZiAocHVzaFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRU
cmFuc3BhcmVuY3lMYXllcigpOwogfQogCiBJbmxpbmVCb3gqIElubGluZUZsb3dCb3g6OmZpcnN0
TGVhZkNoaWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAppbmRleCA5ZTZkMmNlYzBmZDQ1NDNhNjdhYTc4ZmJjMmQ3MWQyZGY4MjQwYjhiLi5mMzUx
M2RjM2Q1MmNjN2M1NGRhZDcwYjQ5YTExYzJjZmYxNGQ2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0
eWxlID0gdGhpcy0+bGluZVN0eWxlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJ
bmZvLmgKaW5kZXggMTViMWYyNDEyODI3NDRkYzViZDZkYjVjMmY5Y2RmMTc4ODViODk4NC4uZGRi
YzkzMzUwYTczMmEzMTU1Yzc3NGVjYTI4NDk0NDNjNGI0MzY3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludEluZm8uaApAQCAtNDksMjAgKzQ5LDMxIEBAIHR5cGVkZWYgSGFzaE1hcDxPdmVy
bGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAg
KiAodHh8dHkpIGlzIHRoZSBjYWxjdWxhdGVkIHBvc2l0aW9uIG9mIHRoZSBwYXJlbnQKICAqLwog
c3RydWN0IFBhaW50SW5mbyB7Ci0gICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFp
bnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAorICAgIFBhaW50SW5mbyhHcmFwaGljc0NvbnRl
eHQmIG5ld0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIG5ld1JlY3QsIFBhaW50UGhhc2UgbmV3
UGhhc2UsIFBhaW50QmVoYXZpb3IgbmV3UGFpbnRCZWhhdmlvciwKICAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBuZXdTdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5s
aW5lKj4qIG5ld091dGxpbmVPYmplY3RzID0gbnVsbHB0ciwKICAgICAgICAgT3ZlcmxhcFRlc3RS
ZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogbmV3UGFpbnRDb250YWluZXIgPSBudWxscHRyKQotICAgICAgICAgICAg
OiBjb250ZXh0KG5ld0NvbnRleHQpCi0gICAgICAgICAgICAsIHJlY3QobmV3UmVjdCkKKyAgICAg
ICAgICAgIDogcmVjdChuZXdSZWN0KQogICAgICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKICAg
ICAgICAgICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9yKQogICAgICAgICAgICAg
LCBzdWJ0cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCiAgICAgICAgICAgICAsIG91
dGxpbmVPYmplY3RzKG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAgICAgLCBvdmVybGFwVGVz
dFJlcXVlc3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAgICAgICAsIHBhaW50Q29udGFp
bmVyKG5ld1BhaW50Q29udGFpbmVyKQorICAgICAgICAgICAgLCBtX2NvbnRleHQoJm5ld0NvbnRl
eHQpCiAgICAgewogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuICptX2Nv
bnRleHQ7CisgICAgfQorCisgICAgdm9pZCBzZXRDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dCA9ICZjb250ZXh0OworICAgIH0KKwogICAg
IHZvaWQgdXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiAgICAgewogICAgICAgICBpZiAoIXN1YnRyZWVQYWludFJvb3QpCkBAIC05
Myw3ICsxMDQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKGxvY2FsVG9BbmNl
c3RvclRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgY29udGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybSk7CisgICAgICAg
IGNvbnRleHQoKS5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsKIAogICAgICAg
ICBpZiAocmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMsNyAr
MTE0LDYgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlvdXRT
aXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dDsKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsK
ICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0xMTEsNiArMTIxLDkgQEAgc3Ry
dWN0IFBhaW50SW5mbyB7CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG91dGxpbmVP
YmplY3RzOyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBzaG91bGQgYmUgcGFpbnRlZCBi
eSBhIGJsb2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFw
KiBvdmVybGFwVGVzdFJlcXVlc3RzOwogICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHBhaW50Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUg
Y3VycmVudCBwYWludGluZworCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCogbV9jb250
ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggOWFkZTc5NGE1N2YxZDAwY2E3NDY1YjRjYzNmZDBmOGM4
NjAzYzUyYS4uODY0OTZkZmE5Yjc1MGEzOWZhYzc3NWM5ZDExZGM5NjRjOTJkYmRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDIwLDcgKzE0MjAsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBXZSBwYWludCBhZnRlciB3
ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3
aWxsCiAgICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAgICBpZiAoKHBo
YXNlID09IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNo
aWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBzdHlsZSgpLnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRo
aXMpICYmICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKLSAgICAgICAgbGF5
ZXIoKS0+cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0
KSk7CisgICAgICAgIGxheWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9scyhwYWludEluZm8uY29u
dGV4dCgpLCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRS
ZWN0KHBhaW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGVu
dHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
QEAgLTE1MTYsOSArMTUxNiw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q2FyZXQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAo
Y2FyZXRQYWludGVyID09IHRoaXMgJiYgKGlzQ29udGVudEVkaXRhYmxlIHx8IGNhcmV0QnJvd3Np
bmcpKSB7CiAgICAgICAgIGlmICh0eXBlID09IEN1cnNvckNhcmV0KQotICAgICAgICAgICAgZnJh
bWUoKS5zZWxlY3Rpb24oKS5wYWludENhcmV0KHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNl
dCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5zZWxlY3Rpb24oKS5wYWlu
dENhcmV0KHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZyYW1lKCkucGFnZSgpLT5kcmFnQ2FyZXRDb250
cm9sbGVyKCkucGFpbnREcmFnQ2FyZXQoJmZyYW1lKCksIHBhaW50SW5mby5jb250ZXh0LCBwYWlu
dE9mZnNldCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRy
YWdDYXJldENvbnRyb2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNv
bnRleHQoKSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKQEAgLTE1
MzgsMTYgKzE1MzgsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgICAgICAg
ICAvLyBvdmVyZmxvd3MgcmVnaW9uIFggYW5kIGlzIGFuIHVuc3BsaXR0YWJsZSBlbGVtZW50IChs
aWtlIGFuIGltYWdlKS4KICAgICAgICAgICAgICAgICAvLyBUaGUgc2FtZSBhcHBsaWVzIGZvciBh
IGJveCBvdmVyZmxvd2luZyB0aGUgdG9wIG9mIHJlZ2lvbiBYIHdoZW4gdGhhdCBib3ggaXMgYWxz
byBmcmFnbWVudGVkIGluIHJlZ2lvbiBYLTEuCiAKLSAgICAgICAgICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2
ZSgpOwogICAgICAgICAgICAgICAgIGRpZENsaXBUb1JlZ2lvbiA9IHRydWU7CiAKLSAgICAgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ+KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25zQ2xpcFJlY3RGb3JC
b3hJbk5hbWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21lbnQpKTsKKyAgICAg
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoZG93bmNhc3Q8UmVuZGVyTmFtZWRG
bG93VGhyZWFkPigqcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS5kZWNvcmF0aW9uc0NsaXBSZWN0
Rm9yQm94SW5OYW1lZEZsb3dGcmFnbWVudCgqdGhpcywgKm5hbWVkRmxvd0ZyYWdtZW50KSk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZv
LCBwYWludE9mZnNldCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChkaWRDbGlwVG9S
ZWdpb24pCi0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRTZWxl
Y3Rpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAg
ICAgICAgTGF5b3V0VW5pdCBsYXN0VG9wID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBsYXN0TGVm
dCA9IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KCp0aGlzLCBsYXN0VG9wLCBjYWNoZSk7CiAg
ICAgICAgIExheW91dFVuaXQgbGFzdFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0
KCp0aGlzLCBsYXN0VG9wLCBjYWNoZSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAg
TGF5b3V0UmVjdCBnYXBSZWN0c0JvdW5kcyA9IHNlbGVjdGlvbkdhcHMoKnRoaXMsIHBhaW50T2Zm
c2V0LCBMYXlvdXRTaXplKCksIGxhc3RUb3AsIGxhc3RMZWZ0LCBsYXN0UmlnaHQsIGNhY2hlLCAm
cGFpbnRJbmZvKTsKICAgICAgICAgaWYgKCFnYXBSZWN0c0JvdW5kcy5pc0VtcHR5KCkpIHsKQEAg
LTE3OTYsNyArMTc5Niw3IEBAIHN0YXRpYyB2b2lkIGNsaXBPdXRQb3NpdGlvbmVkT2JqZWN0cyhj
b25zdCBQYWludEluZm8qIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pCiAgICAgVHJhY2tlZFJl
bmRlcmVyTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3Rz
LT5lbmQoKTsKICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
ICAgICAgICAgUmVuZGVyQm94KiByID0gKml0OwotICAgICAgICBwYWludEluZm8tPmNvbnRleHQt
PmNsaXBPdXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgp
LCByLT53aWR0aCgpLCByLT5oZWlnaHQoKSkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQo
KS5jbGlwT3V0KEludFJlY3Qob2Zmc2V0LngoKSArIHItPngoKSwgb2Zmc2V0LnkoKSArIHItPnko
KSwgci0+d2lkdGgoKSwgci0+aGVpZ2h0KCkpKTsKICAgICB9CiB9CiAKQEAgLTE5NjYsNyArMTk2
Niw3IEBAIExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJs
b2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3Qg
PSByb290QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBv
c2l0aW9uLCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgs
IGxvZ2ljYWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8t
PmNvbnRleHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJl
Y3Qoc25hcFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOwogICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYg
cm9vdEJsb2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2Nr
LmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5
b3V0UmVjdChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJs
b2NrTG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAg
ICAgICAgcGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAg
ICAgICBwYWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KGdhcFJlY3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0
aW9uQmFja2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAg
IHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0yMDAwLDcgKzIwMDAsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlckJsb2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9j
aywgY29uc3QgTAogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxS
ZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChy
b290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNh
bFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFp
bnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3Qs
IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWlu
dEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3Qs
IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBn
YXBSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCmluZGV4IDY3ZDcyMTQwNDJiMmE3NTJkNzI5NDA0OTg3OGY0NWE5MjlmMTY0YmUuLmUxZjNm
MTdiOTBlMDQ5ODlhMTQyYTc0ZWNmNTRkN2U5ZTdjYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmCiB7CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMo
cGFpbnRJbmZvLCBwb2ludCk7CiAgICAgCi0gICAgaWYgKCFtdWx0aUNvbHVtbkZsb3dUaHJlYWQo
KSB8fCBwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbXVs
dGlDb2x1bW5GbG93VGhyZWFkKCkgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBvdXIgY2hpbGRy
ZW4gYW5kIHBhaW50IHRoZSBjb2x1bW4gcnVsZXMgYXMgbmVlZGVkLgpAQCAtMjE5Niw3ICsyMTk2
LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVy
QmxvY2smIHJvb3RCbG9jaywgY29uc3QgUGFpbnQKICAgICAgICAgICAgICAgICBmbG9hdGluZ09i
amVjdC0+cmVuZGVyZXIoKS53aWR0aCgpLCBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5oZWln
aHQoKSk7CiAgICAgICAgICAgICByb290QmxvY2suZmxpcEZvcldyaXRpbmdNb2RlKGZsb2F0Qm94
KTsKICAgICAgICAgICAgIGZsb2F0Qm94Lm1vdmUocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi54
KCksIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24ueSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5m
by0+Y29udGV4dC0+Y2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOworICAgICAgICAg
ICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkp
OwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCBhZTZhZWE1YjVkNzgxN2E3M2Q5OTEzODBmMGRjMDcyOGVlNTdlZTIyLi5mZjE5MWVh
ODk5ZDE5MDkxZGIwYTkyZmM4NTQ0Y2IwNmQzNmJlNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtMTI0Miw5ICsxMjQyLDkgQEAgdm9pZCBSZW5kZXJCb3g6OnBh
aW50Um9vdEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgcGFp
bnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYmdDb2xvciwgYmdMYXllciwgdmlldygpLmJhY2tncm91
bmRSZWN0KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIsICZyb290
QmFja2dyb3VuZFJlbmRlcmVyKTsKIH0KIAotQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRl
ckJveDo6ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkgY29uc3QKK0JhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVy
bWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29u
dGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWRO
b25lOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKQEAg
LTEyNTIsNyArMTI1Miw3IEBAIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRl
dGVybWluZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvCiAgICAgaWYgKCFzdHls
ZS5oYXNCYWNrZ3JvdW5kKCkgfHwgIXN0eWxlLmhhc0JvcmRlcigpIHx8ICFzdHlsZS5oYXNCb3Jk
ZXJSYWRpdXMoKSB8fCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVSZW5kZXJlZCgpKQogICAg
ICAgICByZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBj
dG0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4
dC5nZXRDVE0oKTsKICAgICBGbG9hdFNpemUgY29udGV4dFNjYWxpbmcoc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGN0bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKIAog
ICAgIC8vIEJlY2F1c2UgUm91bmRlZFJlY3QgdXNlcyBJbnRSZWN0IGludGVybmFsbHkgdGhlIGlu
c2V0IGFwcGxpZWQgYnkgdGhlIApAQCAtMTI5MywyMSArMTI5MywyMSBAQCB2b2lkIFJlbmRlckJv
eDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaQogICAgICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHBhaW50UmVjdC54KCksIHBh
aW50UmVjdC55KCkgKyAodGhpcy0+aGVpZ2h0KCkgLSBoZWlnaHQpIC8gMiwgd2lkdGgsIGhlaWdo
dCk7IC8vIFZlcnRpY2FsbHkgY2VudGVyIHRoZSBjaGVja2JveCwgbGlrZSBvbiBkZXNrdG9wCiAg
ICAgfQogI2VuZGlmCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNl
ID0gZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsK
KyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBG
SVhNRTogU2hvdWxkIGV2ZW50dWFsbHkgZ2l2ZSB0aGUgdGhlbWUgY29udHJvbCBvdmVyIHdoZXRo
ZXIgdGhlIGJveCBzaGFkb3cgc2hvdWxkIHBhaW50LCBzaW5jZSBjb250cm9scyBjb3VsZCBoYXZl
CiAgICAgLy8gY3VzdG9tIHNoYWRvd3Mgb2YgdGhlaXIgb3duLgogICAgIGlmICghYm94U2hhZG93
U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBibGVlZEF2
b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0LCBz
dHlsZSgpLCBOb3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAgICAgaWYgKGJs
ZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAg
ICAgICAgIC8vIFRvIGF2b2lkIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJsZWVkaW5nIG91dCBiZWhp
bmQgdGhlIGJvcmRlciwgd2UnbGwgcmVuZGVyIGJhY2tncm91bmQgYW5kIGJvcmRlcgogICAgICAg
ICAvLyBpbnRvIGEgdHJhbnNwYXJlbmN5IGxheWVyLCBhbmQgdGhlbiBjbGlwIHRoYXQgaW4gb25l
IGdvICh3aGljaCByZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBjbGlwIGJlZm9yZQogICAgICAgICAv
LyBiZWdpbm5pbmcgdGhlIGxheWVyKS4KICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVk
Qm9yZGVyRm9yKHBhaW50UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhk
b2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuY2xpcFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3Qp
LnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZG9jdW1lbnQoKS5kZXZpY2VTY2Fs
ZUZhY3RvcigpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVu
Y3lMYXllcigxKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFw
cGVhcmFuY2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgpAQCAt
MTM0Miw3ICsxMzQyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAgICAgcGFpbnRC
b3JkZXIocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKIAog
ICAgIGlmIChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lM
YXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0K
IAogdm9pZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgYmxlZWRBdm9pZGFuY2UpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBib29sIFJlbmRlckJveDo6
YmFja2dyb3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIAogdm9pZCBSZW5kZXJCb3g6OnBh
aW50TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykg
fHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkK
KyAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhh
c2VNYXNrIHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRP
ZmZzZXQsIHNpemUoKSk7CkBAIC0xNTI4LDExICsxNTI4LDExIEBAIHZvaWQgUmVuZGVyQm94Ojpw
YWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWlu
dEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNr
IHx8IHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFwYWlu
dEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNr
IHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQs
IHNpemUoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHBhaW50UmVjdCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29s
b3I6OmJsYWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94Ojpw
YWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJl
Y3QmIHBhaW50UmVjdCkKQEAgLTE1NTcsMTggKzE1NTcsMTggQEAgdm9pZCBSZW5kZXJCb3g6OnBh
aW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVj
dCYgcGEKICAgICAgICAgaWYgKG1hc2tMYXllcnMpCiAgICAgICAgICAgICBhbGxNYXNrSW1hZ2Vz
TG9hZGVkICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOwogCi0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25J
bik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEpOwogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXI7CiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJbWFnZXNMb2FkZWQpIHsKICAgICAgICAg
cGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS5tYXNrTGF5ZXJzKCks
IHBhaW50UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3ApOwotICAgICAgICBw
YWludE5pbmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHN0eWxlKCks
IHN0eWxlKCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcGFpbnROaW5l
UGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCgpLCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxl
KCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHB1
c2hUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdChjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0xNjE5LDE2ICsxNjE5LDEzIEBAIHZvaWQg
UmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IENvbG9yJiBjLCBjb25zCiAgICAgICAgIGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKTsK
ICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4
dDsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBh
cmF0ZUJ1ZmZlciA9IGZhbHNlOwotCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKICAgICBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29s
b3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxkRHJhd0Jh
Y2tncm91bmRJblNlcGFyYXRlQnVmZmVyKSB7CiAgICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50
SW5mbywgYywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNr
Z3JvdW5kT2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CiAgICAgICAgIGJhc2VCZ0Nv
bG9yVXNhZ2UgPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcDsKLSAgICAgICAgY29udGV4dC0+YmVn
aW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKDEpOwogICAgIH0KIAogICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7CkBAIC0xNjM2LDcgKzE2
MzMsNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29ucwogICAgICAgICBwYWludEZpbGxMYXllcihw
YWludEluZm8sIGMsICppdCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2Jq
ZWN0LCBiYXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlmIChzaG91bGREcmF3QmFja2dyb3VuZElu
U2VwYXJhdGVCdWZmZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CisgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5k
ZXJCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBD
b2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsCkBAIC0xNzY4LDEwICsxNzY1LDEwIEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHND
bGlwKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAg
fQogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
KGlzQ29udHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3Zl
cmZsb3dDbGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKSwg
ZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFk
aXVzKCkpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUo
KS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
c2l6ZSgpKSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZh
Y3RvcikpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5u
ZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkucGl4ZWxT
bmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
QEAgLTE3NzksNyArMTc3Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXAoUGFp
bnRJbmZvJiBwYWludEluZm8sIFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFzZSwKIHsKICAgICBBU1NF
UlQoaGFzQ29udHJvbENsaXAoKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWxheWVyKCktPmlz
U2VsZlBhaW50aW5nTGF5ZXIoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICBpZiAob3JpZ2luYWxQ
aGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSkgewogICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQ
YWludFBoYXNlU2VsZk91dGxpbmU7CiAgICAgICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgYWNj
dW11bGF0ZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDU1
MTg4YzYxNjlkNDdmOTMwM2JkZjE2MWFmMjVhODJjOWQyZjk4YjkuLjE2ZDUxZDk3ZWZkNWFmZThl
MWE3ZTM2ZjdkODI0N2Y4ZjBiZGEwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKQEAgLTY0MCw3ICs2NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBhaW50TWFza0lt
YWdlcyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBo
aWNzQ29udGV4dCopIGNvbnN0OworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1p
bmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAg
Ym9vbCBiYWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdDsKIAogICAgIHZvaWQgY29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwg
UmVuZGVyUmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMWRjZmUxMjJmMDI3NzIyOTFi
N2ExN2I4MzY0YTg3MGRiYTJiZDIyZS4uZmNhOTdhZGYyNWJkMTcxOTJkOTBmYTVjNDc2ZjMzZGEz
YmEwNWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygp
LT5zdXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBJbWFn
ZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9v
bCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBM
YXlvdXRTaXplJiBzaXplKQogewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJv
bGxlcigpLnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXll
ciwgc2l6ZSk7CiB9CkBAIC01MTgsMzQgKzUxOCwzNCBAQCBSb3VuZGVkUmVjdCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJv
cgogICAgIHJldHVybiBib3JkZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNs
aXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpjbGlwUm91bmRlZElubmVyUmVjdChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xp
cFJlY3QpCiB7CiAgICAgaWYgKGNsaXBSZWN0LmlzUmVuZGVyYWJsZSgpKQotICAgICAgICBjb250
ZXh0LT5jbGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChjbGlwUmVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJv
dW5kZWQgcmVjdCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFr
aW5nIHN1cmUgd2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAo
IWNsaXBSZWN0LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWko
KS5ib3R0b21SaWdodCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRvcENv
cm5lcihjbGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgpLCByZWN0Lm1heFgo
KSAtIGNsaXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJlY3QucmVjdCgpLnko
KSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJSYWRpaTsK
ICAgICAgICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJlY3QucmFkaWkoKS50
b3BMZWZ0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAgY29udGV4
dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJh
ZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIocmVjdC54KCksIHJl
Y3QueSgpLCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0LnJlY3Qo
KS5tYXhZKCkgLSByZWN0LnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRp
aSBib3R0b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJv
dHRvbVJpZ2h0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci0gICAgICAgICAgICBj
b250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3R0b21Db3JuZXIsIGJv
dHRvbUNvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChG
bG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAg
ICAgfSAKIAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQoKS5pc0VtcHR5
KCkgfHwgIWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgRmxvYXRSZWN0IHRvcENvcm5lcihyZWN0LngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwg
Y2xpcFJlY3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0
LnJlY3QoKS55KCkpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgdG9wQ29y
bmVyUmFkaWk7CiAgICAgICAgICAgICB0b3BDb3JuZXJSYWRpaS5zZXRUb3BSaWdodChjbGlwUmVj
dC5yYWRpaSgpLnRvcFJpZ2h0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KEZsb2F0Um91bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAg
ICAgICAgY29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIs
IHRvcENvcm5lclJhZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIo
Y2xpcFJlY3QucmVjdCgpLngoKSwgcmVjdC55KCksIHJlY3QubWF4WCgpIC0gY2xpcFJlY3QucmVj
dCgpLngoKSwgY2xpcFJlY3QucmVjdCgpLm1heFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAg
IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpIGJvdHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAg
Ym90dG9tQ29ybmVyUmFkaWkuc2V0Qm90dG9tTGVmdChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbUxl
ZnQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChib3R0b21Db3JuZXIsIGJvdHRvbUNvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250
ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9t
Q29ybmVyUmFkaWkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU4MSw3ICs1ODEsNyBAQCBS
b3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YmFja2dyb3VuZFJvdW5kZWRSZWN0QWRq
dXN0ZWRGb3JCbGVlZEF2b2lkYW5jZQogICAgIHJldHVybiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJl
Y3QoYm9yZGVyUmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotc3Rh
dGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlKQog
ewogICAgIGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHN0eWxlLT5ib3hTaGFkb3coKTsK
ICAgICB3aGlsZSAoYm94U2hhZG93LT5zdHlsZSgpICE9IE5vcm1hbCkKQEAgLTU4OSwxNSArNTg5
LDE1IEBAIHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAKICAgICBGbG9hdFNpemUgc2hhZG93T2Zm
c2V0KGJveFNoYWRvdy0+eCgpLCBib3hTaGFkb3ctPnkoKSk7CiAgICAgaWYgKCFib3hTaGFkb3ct
PmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dP
ZmZzZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgYm94
U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgp
KTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZz
ZXQsIGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9y
U3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwg
Ym94U2hhZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFj
ZSgpKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZp
bGxCb3goSW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElu
bGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250
ZXh0KCk7Ci0gICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1t
YXNrUmVjdC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1h
c2tJbWFnZS0+Y29udGV4dCgpOworICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNr
UmVjdC54KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4dCB0byB0
aGUgY2xpcC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFpbnQgcGhh
c2UgdGhhdCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91
bGQganVzdCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCkBAIC02MTgsOCArNjE4LDgg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1h
Z2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjb2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0LAogICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5l
Rmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xv
clVzYWdlIGJhc2VCZ0NvbG9yVXNhZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSB8fCByZWN0LmlzRW1wdHkoKSkKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCBy
ZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbmNsdWRlTGVmdEVk
Z2UgPSBib3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSA6IHRydWU7CkBAIC02NzIs
MzIgKzY3MiwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0g
dGhpcy0+Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHJlY3QubG9jYXRpb24o
KSwgYmxlZWRBdm9pZGFuY2UsIGJveCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2hhZG93U3RhdGVTYXZlcigqY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0
ZVNhdmVyKGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAg
ICAgICAgIGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAg
ICAgICBhcHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoY29udGV4dCwgJnN0eWxlKCkpOwogCiAg
ICAgICAgIGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91
bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgICAgICBGbG9hdFJvdW5kZWRS
ZWN0IHBpeGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9y
QmxlZWRBdm9pZGFuY2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNp
emUsCisgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEJvcmRlciA9IGJh
Y2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVj
dCwgYmxlZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwKICAgICAgICAgICAgICAgICBpbmNsdWRl
TGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFp
bnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYgKHBpeGVsU25hcHBlZEJv
cmRlci5pc1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRl
ZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9y
ZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgY29udGV4
dC5zYXZlKCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QoY29udGV4dCwg
cGl4ZWxTbmFwcGVkUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyKTsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3Qo
KSwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQucmVzdG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVj
dCwgYmdDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICAvLyBCb3JkZXJGaWxsQm94IHJhZGl1cyBjbGlwcGluZyBpcyB0YWtlbiBjYXJl
IG9mIGJ5IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyCiAgICAgYm9vbCBjbGlw
VG9Cb3JkZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmICEoaXNCb3JkZXJGaWxsICYmIGJs
ZWVkQXZvaWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKTsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBUb0JvcmRlclN0YXRlU2F2ZXIoKmNvbnRl
eHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBj
bGlwVG9Cb3JkZXJTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CiAgICAg
aWYgKGNsaXBUb0JvcmRlclJhZGl1cykgewotICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBp
c0JvcmRlckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRh
bmNlKCpjb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLCBpbmNsdWRl
TGVmdEVkZ2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KHJl
Y3QsIGJveCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0Jv
cmRlckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0
RWRnZSwgaW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QocmVjdCwg
Ym94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwg
aW5jbHVkZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBj
b250ZW50IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9
PSBDb250ZW50RmlsbEJveCkgewpAQCAtNzE0LDEyICs3MTQsMTIgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY28KICAgICBMYXlvdXRVbml0IHBMZWZ0ID0gaW5jbHVkZUxlZnRFZGdlID8gcGFkZGlu
Z0xlZnQoKSA6IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHBSaWdodCA9IGluY2x1ZGVS
aWdodEVkZ2UgPyBwYWRkaW5nUmlnaHQoKSA6IExheW91dFVuaXQoKTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKCpjb250ZXh0LCBj
bGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5nKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IGNsaXBXaXRoU2Nyb2xsaW5nU3RhdGVTYXZlcihjb250ZXh0LCBjbGlwcGVkV2l0aExvY2FsU2Ny
b2xsaW5nKTsKICAgICBMYXlvdXRSZWN0IHNjcm9sbGVkUGFpbnRSZWN0ID0gcmVjdDsKICAgICBp
ZiAoY2xpcHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewogICAgICAgICAvLyBDbGlwIHRvIHRoZSBv
dmVyZmxvdyBhcmVhLgogICAgICAgICBhdXRvJiB0aGlzQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94
PigqdGhpcyk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0
KHJlY3QubG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKKyAg
ICAgICAgY29udGV4dC5jbGlwKHRoaXNCb3gub3ZlcmZsb3dDbGlwUmVjdChyZWN0LmxvY2F0aW9u
KCksIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBBZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQg
Ym94IHdpdGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSB0
aGlzQm94LnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LnNldEhlaWdodChi
b3JkZXJUb3AoKSArIGxheWVyKCktPnNjcm9sbEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCkpOwog
ICAgIH0KICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGJhY2tncm91bmRDbGlw
U3RhdGVTYXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgYmFja2dyb3VuZENsaXBTdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0Owog
CkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAg
ICAgICBzY3JvbGxlZFBhaW50UmVjdC53aWR0aCgpIC0gYkxlZnQgLSBiUmlnaHQgLSAoaW5jbHVk
ZVBhZGRpbmcgPyBwTGVmdCArIHBSaWdodCA6IExheW91dFVuaXQoKSksCiAgICAgICAgICAgICAg
ICAgc2Nyb2xsZWRQYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRv
bSgpIC0gKGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpIDog
TGF5b3V0VW5pdCgpKSk7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2
ZSgpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CisgICAgICAgICAgICBj
b250ZXh0LmNsaXAoY2xpcFJlY3QpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChiZ0xheWVy
LT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBkcmF3IG91
ciB0ZXh0IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byBjbGlwIGJhY2tncm91
bmQgZHJhd2luZy4KQEAgLTc1MSwxNSArNzUxLDE1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
CiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVj
dCkpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFn
ZSA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAg
ICAgICAgbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0
LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0
LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKIAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVl
biBjcmVhdGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNr
Z3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlwKG1hc2tS
ZWN0KTsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAg
ICAgY29udGV4dC5jbGlwKG1hc2tSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKDEpOwogICAgIH0KIAogICAgIC8vIE9ubHkgZmlsbCB3aXRoIGEgYmFzZSBjb2xv
ciAoZS5nLiwgd2hpdGUpIGlmIHdlJ3JlIHRoZSByb290IGRvY3VtZW50LCBzaW5jZSBpZnJhbWVz
L2ZyYW1lcyB3aXRoCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28K
ICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dT
dGF0ZVNhdmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQp
OworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVy
KGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAg
ICAgICBpZiAoYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQogICAgICAgICAg
ICAgICAgIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUoKSk7CiAK
QEAgLTgxNywxMiArODE3LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAg
ICAgICAgaWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAg
ICAgICAgICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBi
YXNlQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOwogICAgICAgICAgICAg
fSBlbHNlIGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxwaGEoKSkgewotICAgICAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dy
b3VuZCA/IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5n
LCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQg
PyBDb21wb3NpdGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChzaG91bGRDbGVhckJhY2tncm91bmQpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xl
YXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuY2xlYXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC04MzQsMTcgKzgzNCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGF1dG8gY2xp
ZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmpl
Y3QgOiB0aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmlt
YWdlKGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNl
VHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOwog
ICAgICAgICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgp
KTsKICAgICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAgICAgICAgICAgICAgICBpbWFnZS0+
c2V0U3BhY2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQt
PmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0
cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBn
ZW9tZXRyeS50aWxlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdM
YXllci0+YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dR
dWFsaXR5U2NhbGluZykpOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFn
ZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5
b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwg
SW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gp
IHsKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAg
ICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tS
ZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3Bh
cmVuY3lMYXllcigpOwogICAgIH0KIH0KIApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE8KICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRlc3RSZWN0KCk7CiB9CiAK
LWJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwKK2Jvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBp
ZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJl
Y3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG5pbmVQaWVj
ZUltYWdlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBTdHlsZUltYWdlKiBzdHlsZUlt
YWdlID0gbmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsKQEAgLTE0MjYsNyArMTQyNiw3IEBAIHN0YXRp
YyBib29sIGpvaW5SZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNp
ZGUsIGNvbnN0IEJvcmRlckVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91
dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91
dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgY29uc3QgTGF5
b3V0UmVjdCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBC
b3hTaWRlIGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0
aCogcGF0aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwg
Ym9vbCBhbnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTQ0NCw3
ICsxNDQ0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRl
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIGNvbnN0IENvbG9yJiBjb2xv
clRvUGFpbnQgPSBvdmVycmlkZUNvbG9yID8gKm92ZXJyaWRlQ29sb3IgOiBlZGdlVG9SZW5kZXIu
Y29sb3IoKTsKIAogICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgIGlmIChp
bm5lckJvcmRlci5pc1JlbmRlcmFibGUoKSkKICAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9s
eWdvbihncmFwaGljc0NvbnRleHQsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZSwgYWRq
YWNlbnRTaWRlMVN0eWxlc01hdGNoLCBhZGphY2VudFNpZGUyU3R5bGVzTWF0Y2gpOwogICAgICAg
ICBlbHNlCkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgIGJvb2wgY2xpcEFkamFjZW50U2lkZTIgPSBjb2xvck5lZWRzQW50aUFsaWFzQXRDb3JuZXIo
c2lkZSwgYWRqYWNlbnRTaWRlMiwgZWRnZXMpICYmIG1pdHJlQWRqYWNlbnRTaWRlMjsKICAgICAg
ICAgYm9vbCBzaG91bGRDbGlwID0gY2xpcEZvclN0eWxlIHx8IGNsaXBBZGphY2VudFNpZGUxIHx8
IGNsaXBBZGphY2VudFNpZGUyOwogICAgICAgICAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBjbGlwU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBzaG91bGRDbGlwKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU3RhdGVTYXZlcihncmFwaGljc0Nv
bnRleHQsIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAg
ICAgYm9vbCBhbGlhc0FkamFjZW50U2lkZTEgPSBjbGlwQWRqYWNlbnRTaWRlMSB8fCAoY2xpcEZv
clN0eWxlICYmIG1pdHJlQWRqYWNlbnRTaWRlMSk7CiAgICAgICAgICAgICBib29sIGFsaWFzQWRq
YWNlbnRTaWRlMiA9IGNsaXBBZGphY2VudFNpZGUyIHx8IChjbGlwRm9yU3R5bGUgJiYgbWl0cmVB
ZGphY2VudFNpZGUyKTsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMSA9IGZhbHNlOwogICAgICAgICAgICAg
bWl0cmVBZGphY2VudFNpZGUyID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIHNpZGVSZWN0LCBzaWRlLCBjb2xvclRvUGFpbnQs
IGVkZ2VUb1JlbmRlci5zdHlsZSgpLCBtaXRyZUFkamFjZW50U2lkZTEgPyBhZGphY2VudEVkZ2Ux
LndpZHRoRm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJlQWRqYWNlbnRTaWRlMiA/IGFkamFjZW50RWRn
ZTIud2lkdGhGb3JQYWludGluZygpIDogMCwgYW50aWFsaWFzKTsKKyAgICAgICAgZHJhd0xpbmVG
b3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9yVG9QYWludCwg
ZWRnZVRvUmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFjZW50RWRnZTEu
d2lkdGhGb3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRqYWNlbnRFZGdl
Mi53aWR0aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOwogICAgIH0KIH0KIApAQCAtMTQ4
OCw3ICsxNDg4LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXIKICAgICByZXR1cm4gc2lkZVJl
Y3Q7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJC
b3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBo
aWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9y
ZGVyLAogICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJv
cmRlckVkZ2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBD
b2xvciogb3ZlcnJpZGVDb2xvcikKIHsKQEAgLTE1MzYsNyArMTUzNiw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dFRyYW5zbHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJv
cmRlckFkanVzdG1lbnQsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVj
ZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBS
b3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVz
dG1lbnQsCiAgICAgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRn
ZXNUb0RyYXcsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29s
IGFudGlhbGlhcykKIHsKICAgICAvLyB3aWxsQmVPdmVyZHJhd24gYXNzdW1lcyB0aGF0IHdlIGRy
YXcgaW4gb3JkZXI6IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC4KQEAgLTE1NjYsMTQgKzE1NjYs
MTQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNp
ZGVzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIAogICAgICAgICBib29sIHVzZVRyYW5zcGFy
ZW5jeUxheWVyID0gaW5jbHVkZXNBZGphY2VudEVkZ2VzKGNvbW1vbkNvbG9yRWRnZVNldCkgJiYg
Y29tbW9uQ29sb3IuaGFzQWxwaGEoKTsKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVy
KSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKKyAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZs
b2F0Pihjb21tb25Db2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgICAgICBjb21tb25Db2xv
ciA9IENvbG9yKGNvbW1vbkNvbG9yLnJlZCgpLCBjb21tb25Db2xvci5ncmVlbigpLCBjb21tb25D
b2xvci5ibHVlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFw
aGljc0NvbnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIGlubmVyQm9yZGVy
QWRqdXN0bWVudCwgZWRnZXMsIGNvbW1vbkNvbG9yRWRnZVNldCwgYmxlZWRBdm9pZGFuY2UsIGlu
Y2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMs
ICZjb21tb25Db2xvcik7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5j
eUxheWVyKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXll
cigpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7
CiAgICAgICAgIAogICAgICAgICBlZGdlc1RvRHJhdyAmPSB+Y29tbW9uQ29sb3JFZGdlU2V0Owog
ICAgIH0KQEAgLTE1ODIsOSArMTU4Miw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50VHJhbnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzCiB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKQogewotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0ID0gaW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
ID0gaW5mby5jb250ZXh0KCk7CiAKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rp
c2FibGVkKCkpCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTE1OTcsNyArMTU5
Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwog
ICAgIEJvcmRlckVkZ2U6OmdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBzdHlsZSwgZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3Qgb3V0ZXJCb3JkZXIgPSBzdHlsZS5nZXRS
b3VuZGVkQm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlciA9IHN0eWxlLmdldFJv
dW5kZWRJbm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRh
bmNlKCpncmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlu
bmVyQm9yZGVyID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVj
dEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBibGVlZEF2
b2lkYW5jZSksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdl
KTsKIAogICAgIGJvb2wgaGF2ZUFscGhhQ29sb3IgPSBmYWxzZTsKICAgICBib29sIGhhdmVBbGxT
b2xpZEVkZ2VzID0gdHJ1ZTsKQEAgLTE3MDMsOSArMTcwMyw5IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjdCYKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocGl4
ZWxTbmFwcGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29s
b3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZmlsbFBhdGgocGF0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUo
UlVMRV9FVkVOT0REKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Io
ZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfSAKICAgICAgICAgLy8gQXZvaWQgY3JlYXRpbmcgdHJhbnNwYXJlbnQg
bGF5ZXJzCkBAIC0xNzIwLDIzICsxNzIwLDIzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxl
LmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxQYXRoKHBh
dGgpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVS
Tyk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0
VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBib29sIGNsaXBUb091dGVyQm9yZGVyID0gb3V0ZXJCb3JkZXIu
aXNSb3VuZGVkKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpn
cmFwaGljc0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlwVG9PdXRlckJvcmRlcik7
CiAgICAgaWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhlIGlu
bmVyIGFuZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9
IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIucGl4ZWxTbmFwcGVkUm91bmRl
ZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVk
UmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIC8vIGlzUmVuZGVy
YWJsZSgpIGNoZWNrIGF2b2lkcyBpc3N1ZSBkZXNjcmliZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4Nzg3CiAgICAgICAgIC8vIFRoZSBpbnNpZGUgd2lsbCBi
ZSBjbGlwcGVkIG91dCBsYXRlciAoaW4gY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRo
KQogICAgICAgICBpZiAoaW5uZXJCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlci5waXhlbFNuYXBw
ZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB9CiAK
ICAgICAvLyBJZiBvbmx5IG9uZSBlZGdlIHZpc2libGUgYW50aWFsaWFzaW5nIGRvZXNuJ3QgY3Jl
YXRlIHNlYW1zCkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAg
ICAgICAgIHBhaW50Qm9yZGVyU2lkZXMoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3Jk
ZXIsIHVuYWRqdXN0ZWRJbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywg
ZWRnZXNUb0RyYXcsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0
aCwgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29uc3Qg
Qm9yZGVyRWRnZSBlZGdlc1tdLAogICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNr
bmVzcywgQm94U2lkZSBzaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yIGNvbG9y
LCBFQm9yZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CkBAIC0xNzY1LDE0ICsxNzY1LDE0IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERPVFRFRDoKICAgICBjYXNl
IERBU0hFRDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9y
LCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgLy8gVGhlIHN0cm9r
ZSBpcyBkb3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAg
ICAgIC8vIG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBj
bGlwcGVkIG9mZi4gCiAgICAgICAgIC8vIFRoZSBleHRyYSBtdWx0aXBsaWVyIGlzIHNvIHRoYXQg
dGhlIGNsaXBwaW5nIG1hc2sgY2FuIGFudGlhbGlhcwogICAgICAgICAvLyB0aGUgZWRnZXMgdG8g
cHJldmVudCBqYWdnaWVzLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVRoaWNr
bmVzcyhkcmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOwotICAgICAgICBncmFwaGljc0NvbnRleHQt
PnNldFN0cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERv
dHRlZFN0cm9rZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3Mo
ZHJhd1RoaWNrbmVzcyAqIDIgKiAxLjFmKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0
cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0
cm9rZSk7CiAKICAgICAgICAgLy8gSWYgdGhlIG51bWJlciBvZiBkYXNoZXMgdGhhdCBmaXQgaW4g
dGhlIHBhdGggaXMgb2RkIGFuZCBub24taW50ZWdyYWwgdGhlbiB3ZQogICAgICAgICAvLyB3aWxs
IGhhdmUgYW4gYXdrd2FyZGx5LXNpemVkIGRhc2ggYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4gVG8g
dHJ5IHRvIGF2b2lkIHRoYXQKQEAgLTE3OTUsMTMgKzE3OTUsMTMgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwKICAgICAgICAgICAgIERhc2hBcnJheSBsaW5lRGFzaDsKICAgICAgICAgICAgIGxp
bmVEYXNoLmFwcGVuZChkYXNoTGVuZ3RoKTsKICAgICAgICAgICAgIGxpbmVEYXNoLmFwcGVuZChn
YXBMZW5ndGgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRMaW5lRGFzaChsaW5l
RGFzaCwgZGFzaExlbmd0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0TGluZURh
c2gobGluZURhc2gsIGRhc2hMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAv
LyBGSVhNRTogc3Ryb2tpbmcgdGhlIGJvcmRlciBwYXRoIGNhdXNlcyBpc3N1ZXMgd2l0aCB0aWdo
dCBjb3JuZXJzOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTg3MTEKICAgICAgICAgLy8gQWxzbywgdG8gZ2V0IHRoZSBiZXN0IGFwcGVhcmFuY2Ug
d2Ugc2hvdWxkIHN0cm9rZSBhIHBhdGggYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnMuCi0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+c3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnN0cm9rZVBhdGgoYm9yZGVyUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBET1VCTEU6IHsKQEAgLTE4MjQsMTggKzE4MjQsMTggQEAgdm9pZCBSZW5kZXJC
b3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwKIAogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3Jh
cGhpY3NDb250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5uZXJD
bGlwID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCiAgICAgICAg
ICAgICAgICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgaW5u
ZXJCb3JkZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAgICAg
ICBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QoaW5uZXJDbGlwKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW5uZXJDbGlwKSk7CiAgICAgICAgICAg
ICBkcmF3Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVy
UGF0aCwgZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwgc3R5bGUsIGNvbG9y
LCBTT0xJRCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9y
ZGVyIGxpbmUKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBM
YXlvdXRSZWN0IG91dGVyUmVjdCA9IGJvcmRlclJlY3Q7CiAgICAgICAgICAgICBpZiAoYmxlZWRB
dm9pZGFuY2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAg
ICAgICAgICAgICBvdXRlclJlY3QuaW5mbGF0ZSgxKTsKQEAgLTE4NDgsNyArMTg0OCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBvdXRlckNsaXAg
PSBzdHlsZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAg
ICAgIG91dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9y
ZGVyTGVmdFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChv
dXRlckNsaXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckNsaXApKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRl
RnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywg
dGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIFNPTElELCBibGVl
ZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhp
Y3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3
VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMxLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIC8v
IFBhaW50IGlubmVyIG9ubHkKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgTGF5b3V0VW5pdCB0b3BX
aWR0aCA9IGVkZ2VzW0JTVG9wXS53aWR0aEZvclBhaW50aW5nKCkgLyAyOwogICAgICAgICBMYXlv
dXRVbml0IGJvdHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLndpZHRoRm9yUGFpbnRpbmcoKSAv
IDI7CiAgICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoID0gZWRnZXNbQlNMZWZ0XS53aWR0aEZv
clBhaW50aW5nKCkgLyAyOwpAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKICAgICAgICAgICAgIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdo
dFdpZHRoLAogICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0
KEZsb2F0Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7CiAgICAgICAgIGRyYXdC
b3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBl
ZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMyLCBi
bGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg5Miw5ICsxODkyLDkgQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJv
a2VTdHlsZShOb1N0cm9rZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1JlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9p
bnQmIG91dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5lckNvcm5lciwgY29uc3QgRmxv
YXRQb2ludCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkKQEAgLTE5MTIsNyArMTkx
Miw3IEBAIHN0YXRpYyB2b2lkIGZpbmRJbm5lclZlcnRleChjb25zdCBGbG9hdFBvaW50JiBvdXRl
ckNvcm5lciwgY29uc3QgRmxvYXRQb2ludCYgaW5uCiAgICAgICAgIGZpbmRJbnRlcnNlY3Rpb24o
b3V0ZXJDb3JuZXIsIGlubmVyQ29ybmVyLCBGbG9hdFBvaW50KDAsIGNlbnRlclBvaW50LnkoKSks
IEZsb2F0UG9pbnQoMTAwLCBjZW50ZXJQb2ludC55KCkpLCByZXN1bHQpOwogfQogCi12b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3Qg
Um91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xp
cEJvcmRlclNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hT
aWRlIHNpZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcykK
IHsKICAgICBGbG9hdFBvaW50IHF1YWRbNF07CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleAogICAgIC8vIElmIHRoZSBib3JkZXIgbWF0Y2hlcyBib3RoIG9mIGl0
cyBhZGphY2VudCBzaWRlcywgZG9uJ3QgYW50aS1hbGlhcyB0aGUgY2xpcCwgYW5kCiAgICAgLy8g
aWYgbmVpdGhlciBzaWRlIG1hdGNoZXMsIGFudGktYWxpYXMgdGhlIGNsaXAuCiAgICAgaWYgKGZp
cnN0RWRnZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RF
ZGdlTWF0Y2hlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMDQsNyArMjAwNCw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZmlyc3RRdWFkWzFdID0gcXVhZFsxXTsK
ICAgICBmaXJzdFF1YWRbMl0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBG
bG9hdFBvaW50KHF1YWRbM10ueCgpLCBxdWFkWzJdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMl0u
eCgpLCBxdWFkWzNdLnkoKSk7CiAgICAgZmlyc3RRdWFkWzNdID0gcXVhZFszXTsKLSAgICBncmFw
aGljc0NvbnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1h
dGNoZXMpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBmaXJzdFF1
YWQsICFmaXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0UG9pbnQgc2Vjb25kUXVhZFs0XTsK
ICAgICBzZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKQEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4CiAgICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRbMl07CiAgICAgc2Vj
b25kUXVhZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNl
Y29uZCBzaWRlLgotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vj
b25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcENv
bnZleFBvbHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0KIAogc3Rh
dGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBz
aWRlKQpAQCAtMjEyMiwxMSArMjEyMiwxMSBAQCBzdGF0aWMgUm91bmRlZFJlY3QgY2FsY3VsYXRl
QWRqdXN0ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5lckJvcmRlciwgQgogICAg
IHJldHVybiBSb3VuZGVkUmVjdChuZXdSZWN0LCBuZXdSYWRpaSk7CiB9CiAKLXZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91
bmRlZFJlY3QmIGlubmVyQm9yZGVyLAogICAgIEJveFNpZGUgc2lkZSwgY29uc3QgY2xhc3MgQm9y
ZGVyRWRnZSBlZGdlc1tdKQogewotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChjYWxjdWxhdGVT
aWRlUmVjdEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdlcywgc2lkZSkpOwotICAgIGdy
YXBoaWNzQ29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2FsY3Vs
YXRlQWRqdXN0ZWRJbm5lckJvcmRlcihpbm5lckJvcmRlciwgc2lkZSkpKTsKKyAgICBncmFwaGlj
c0NvbnRleHQuY2xpcChjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVy
LCBlZGdlcywgc2lkZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVy
LCBzaWRlKSkpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJPYnNjdXJl
c0JhY2tncm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25zdApAQCAt
MjIzMCw4ICsyMjMwLDggQEAgc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hh
ZG93SW5Ib2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQKIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNoYWRvd1N0
eWxlIHNoYWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBib3JkZXItaW1h
Z2UuICBXb3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWltYWdlIGFzIGEgbWFzay4KLSAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUuYm94U2hhZG93KCkpCisgICAgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0ID0gaW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRp
bmdEaXNhYmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUm91bmRlZFJlY3QgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHN0eWxlLmdl
dFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQpAQCAtMjI2OCw4ICsyMjY4LDggQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QuaW5mbGF0
ZShzaGFkb3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRTaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKIAotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgICAg
IGNvbnRleHQtPmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CisgICAgICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgICAgICBj
b250ZXh0LmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CiAKICAgICAgICAgICAgIC8vIE1v
dmUgdGhlIGZpbGwganVzdCBvdXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcgMSBwaXhlbCBzZXBhcmF0
aW9uIHNvIHRoYXQgdGhlIGZpbGwgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGJsZWVkIGluIChk
dWUgdG8gYW50aWFsaWFzaW5nKSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2Zvcm1lZC4KQEAgLTIy
NzgsOSArMjI3OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93
KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICBmaWxs
UmVjdC5tb3ZlKGV4dHJhT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJr
aXRCb3hTaGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNl
KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVz
LCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAgICAgRmxvYXRS
b3VuZGVkUmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0
Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVk
UmVjdCBwaXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVsU25hcHBlZFJvdW5kZWRS
ZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI5MiwxOCArMjI5MiwxOCBA
QCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlw
T3V0LmluZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKC0xKSk7CiAKICAgICAg
ICAgICAgICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQpOwog
CiAgICAgICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5mbHVlbmNlUmVjdChMYXlvdXRSZWN0KHBp
eGVsU25hcHBlZFNoYWRvd1JlY3QpLCBib3JkZXIucmFkaWkoKSk7CiAgICAgICAgICAgICAgICAg
aW5mbHVlbmNlUmVjdC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFk
b3dTcHJlYWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGlu
Zmx1ZW5jZVJlY3QsIGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVs
U25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRGaWxsUmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoIXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0UmFkaWkoKTsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0
LCBDb2xvcjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6Ymxh
Y2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMg
dW5uZWNlc3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUK
QEAgLTIzMTMsMTQgKzIzMTMsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRC
b3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAg
ICAgICAgICBpZiAoaGFzT3BhcXVlQmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRTogVGhlIGZ1bmN0aW9uIHRvIGRlY2lkZSBvbiB0aGUgcG9saWN5IGJhc2VkIG9uIHRo
ZSB0cmFuc2Zvcm0gc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGNoZWNrIGlzIHJpZ2h0LiBXaGF0
IGFib3V0IGludGVncmFsIHNjYWxlIGZhY3RvcnM/Ci0gICAgICAgICAgICAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICAgICAgICAgICAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm0uYSgpICE9IDEgfHwgKHRyYW5zZm9ybS5kKCkg
IT0gMSAmJiB0cmFuc2Zvcm0uZCgpICE9IC0xKSB8fCB0cmFuc2Zvcm0uYigpIHx8IHRyYW5zZm9y
bS5jKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0LmluZmxhdGUoTGF5
b3V0VW5pdDo6ZnJvbVBpeGVsKC0xKS50b0Zsb2F0KCkpOwogICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwg
Q29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ss
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzMwLDkgKzIzMzAsOSBAQCB2b2lkIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkSG9sZVJlY3Qu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRl
clJlY3QsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3Qu
cmVjdCgpLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSwgc2hh
ZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAKQEAgLTIzNTcsMjUgKzIzNTcsMjUgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRSZWMKICAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRPdXRlclJlY3QgPSBz
bmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKExheW91dFJlY3Qo
cGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hh
ZG93U3ByZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAg
ICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlID0gRmxvYXRSb3VuZGVk
UmVjdChwaXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yYWRpaSgp
KTsKIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpj
b250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihjb250ZXh0KTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChw
aXhlbFNuYXBwZWRCb3JkZXJSZWN0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBh
dGgpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChwYXRoKTsKICAgICAgICAgICAgICAg
ICBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZS5zaHJpbmtSYWRpaShzaGFkb3dTcHJlYWQpOwogICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBw
ZWRCb3JkZXJSZWN0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBpeGVs
U25hcHBlZEJvcmRlclJlY3QucmVjdCgpKTsKIAogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9m
ZnNldCgyICogcm91bmRUb0ludChwYWludFJlY3Qud2lkdGgoKSkgKyBzdGQ6Om1heCgwLCBzaGFk
b3dPZmZzZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAtIDIgKiBzaGFkb3dTcHJl
YWQgKyAxLCAwKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9mZnNldC53
aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShleHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAg
ICAgICBzaGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAgICAgIGlmIChzaGFk
b3ctPmlzV2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0TGVn
YWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUu
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNo
YWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVsU25hcHBlZE91dGVyUmVj
dCwgcGl4ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgp
KTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFw
cGVkT3V0ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5j
b2xvclNwYWNlKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQ4NCwxMSArMjQ4NCwxMSBA
QCBMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5
RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLAogICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFJlY3QoeCwgeSwgY2FyZXRXaWR0aCwgaGVpZ2h0
KSA6IExheW91dFJlY3QoeSwgeCwgaGVpZ2h0LCBjYXJldFdpZHRoKTsKIH0KIAotYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0
byBub3QgYW50aWFsaWFzIHdoZW4gc2NhbGVkIGJ5IGFuIGludGVncmFsIHZhbHVlLAogICAgIC8v
IGFuZCB3ZSBtYXkgd2FudCB0byBhbnRpYWxpYXMgd2hlbiB0cmFuc2xhdGVkIGJ5IGEgbm9uLWlu
dGVncmFsIHZhbHVlLgotICAgIHJldHVybiAhY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9y
VHJhbnNsYXRpb25PckZsaXBwZWQoKTsKKyAgICByZXR1cm4gIWNvbnRleHQuZ2V0Q1RNKCkuaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2Rl
LCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGMyMjhhNDg1ZWUzNWZj
OTgyMzc3MThjZTljN2QzOTQwMjE0ZDExNTguLjU4ODA1ZTA4YzI4MjFlNGZkYjZjOGM0OTkyNWMx
OTdiOWY2MjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZEJlY2FtZU5vbklubGluZShSZW5kZXJFbGVtZW50JikgeyB9CiAKICAgICB2b2lkIHBh
aW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUs
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UgPSB0cnVlKTsKLSAgICBib29sIHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTmlu
ZVBpZWNlSW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwor
ICAgIGJvb2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNo
YWRvdyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBTaGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9v
bCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXll
ciosIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZs
b3dCb3gqID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dy
b3VuZE9iamVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNr
Z3JvdW5kQ29sb3JVc2UpOwogCkBAIC0yNTEsMTYgKzI1MSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
Um91bmRlZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5j
ZShjb25zdCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJs
ZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3Q7
CiAgICAgTGF5b3V0UmVjdCBib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShH
cmFwaGljc0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7
CisgICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFn
ZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24o
UmVuZGVyQm94TW9kZWxPYmplY3QqKTsKIAogICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RG
b3JFbXB0eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zm
c2V0KTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29u
dGV4dCopOworICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29u
dGV4dCYpOwogCi0gICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJl
Y3QpOworICAgIHN0YXRpYyB2b2lkIGNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGNsaXBSZWN0KTsK
IAogICAgIGJvb2wgaGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQo
KSBjb25zdDsKIApAQCAtMzA3LDE4ICszMDcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBib29s
IGZpeGVkQmFja2dyb3VuZFBhaW50c0luTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAg
dm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCisgICAg
dm9pZCBjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVz
LCBib29sIHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9yQ29t
cGxleElubmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0
IFJvdW5kZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgQm9yZGVyRWRnZVtdKTsKLSAgICB2b2lkIHBh
aW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9y
ZGVyLAorICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBCb3hTaWRl
LCBjb25zdCBCb3JkZXJFZGdlW10pOworICAgIHZvaWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVy
Qm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgIGNvbnN0IExh
eW91dFJlY3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNp
ZGUgYWRqYWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAgICAgICBjb25zdCBQYXRo
KiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xv
ciogb3ZlcnJpZGVDb2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJv
cmRlclNpZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91
bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNv
bnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCisgICAgdm9pZCBwYWludFRyYW5z
bHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJv
cmRlciwgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKICAgICAgICAgY29u
c3QgQm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5j
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlKTsKLSAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYg
b3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2b2lkIHBh
aW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBSb3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRl
ciwKICAgICAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3Qg
Qm9yZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwK
ICAgICAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBDb2xvciogb3ZlcnJpZGVD
b2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2Vb
XSwKKyAgICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
TGF5b3V0UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGZs
b2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVy
U3R5bGUmLAogICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlcios
IGNvbnN0IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4
IDVlZWY3NjI1Mjk0MDU5Y2JiMDk3ZTEwZmY5ZDk0ZDhkNTg3ZWJiNzAuLmI1M2YyYWY0ZmVlNWRi
ZjFmMzkwOGQ4NDIzYjQzZWE5NTQxNTI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHZvaWQg
UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAg
ICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJv
a2UpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0
eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNr
bmVzcygxLjBmKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihjb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgYm94T3JpZ2luLm1vdmUoYm9yZGVyTGVmdCgp
ICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFBhdGgoZ2V0UGF0aChib3hPcmlnaW4pKTsKIH0KIAogYm9vbCBSZW5k
ZXJEZXRhaWxzTWFya2VyOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IDI1ODIwNGUwYjBiMGJhMDVlNTRjZGNlNDc3NDM2Mjgz
NTg2Y2U2MjkuLjBlMTc2YWQxMTUxZmNiZjNhOGNiNThmMDc5YjY2M2MzNGJiNGI0NjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTIwNDEsMTcgKzIw
NDEsMTcgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBhZGRGb2N1c1JpbmdSZWN0cyhm
b2N1c1JpbmdSZWN0cywgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5wYWludENvbnRhaW5lcik7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCB0aGVtZSgpLnBsYXRmb3JtRm9j
dXNSaW5nV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+
Zm9jdXNDb250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKSwgbmVlZHNSZXBhaW50KTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRo
ZW1lKCkucGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRv
Y3VtZW50KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgp
LCBuZWVkc1JlcGFpbnQpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIGRvY3VtZW50
KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWlu
dCgpOwogI2Vsc2UKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1Jp
bmdSZWN0cywgc3R5bGUub3V0bGluZVdpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBzdHlsZS5v
dXRsaW5lV2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHlsZS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICNlbmRpZgogfQogCiB2b2lkIFJl
bmRlckVsZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UmVjdCYgcGFpbnRSZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAzMTVkYzE0NWRkZmI4
NTAxNDVjYTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0Li4yYjFmMTY1NWQ5OTY0NmEwZmQwNTAxZWVjNWY4
MjgzYjcyNjJkNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dAogICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIExheW91dFNp
emUgY29udGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKICAgICBMYXlvdXRQb2ludCBjb250ZW50
TG9jYXRpb24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAgY29udGVudExvY2F0aW9u
Lm1vdmUoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5n
VG9wKCkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAjaWYg
RU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNl
bmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCks
IGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9u
LCB1c2VMb3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9y
aWVudGF0aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTI2Miw5ICsyNjIsOSBAQCB2b2lk
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50TwogICAgIFJlbmRlcldpZGdldDo6cGFpbnQocGFpbnRJbmZvLCBw
YWludE9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpZGVSZWN0KQorc3RhdGlj
IHZvaWQgZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGluc2lkZVJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICBGbG9hdFJlY3QgcmVjdChpbnNpZGVSZWN0KTsKICAg
ICByZWN0LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dQYWRkaW5nKTsKQEAgLTI3Miw5ICsyNzIs
OSBAQCBzdGF0aWMgdm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaW5zaQogICAgIEZsb2F0UG9pbnQgY2VudGVyKHJlY3Qu
Y2VudGVyKCkpOwogICAgIEZsb2F0UG9pbnQgYXJyb3dUaXAocmVjdC5tYXhYKCksIGNlbnRlci55
KCkpOwogCi0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNvbnRleHQt
PnNldExpbmVDYXAoUm91bmRDYXApOwotICAgIGNvbnRleHQtPnNldExpbmVKb2luKFJvdW5kSm9p
bik7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zZXRM
aW5lQ2FwKFJvdW5kQ2FwKTsKKyAgICBjb250ZXh0LnNldExpbmVKb2luKFJvdW5kSm9pbik7CiAK
ICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChyZWN0LngoKSwgY2Vu
dGVyLnkoKSkpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVu
dEFycm93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAg
ICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludChjZW50ZXIueCgpLCByZWN0LnkoKSkpOwogICAg
IHBhdGgubW92ZVRvKGFycm93VGlwKTsKICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNl
bnRlci54KCksIHJlY3QubWF4WSgpKSk7Ci0gICAgY29udGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsK
KyAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRP
YmplY3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKQEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lkIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludAogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmIChjb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0
IGNvbnRlbnRSZWN0OwpAQCAtMzEwLDM2ICszMTAsMzYgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQKICAgICBQYXRoIGJhY2tncm91bmQ7CiAgICAgYmFja2dyb3VuZC5hZGRSb3VuZGVkUmVjdChp
bmRpY2F0b3JSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMs
IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzKSk7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNsaXAoY29u
dGVudFJlY3QpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxlUGx1Z2lu
SW5kaWNhdG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29s
b3IoKSA6IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOwotICAgIGNvbnRleHQtPmZpbGxQYXRoKGJhY2tncm91bmQpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LmNsaXAo
Y29udGVudFJlY3QpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRD
b2xvcigpIDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgY29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kKTsKIAogICAgIFBhdGgg
c3Ryb2tlUGF0aDsKICAgICBGbG9hdFJlY3Qgc3Ryb2tlUmVjdChpbmRpY2F0b3JSZWN0KTsKICAg
ICBzdHJva2VSZWN0LmluZmxhdGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChz
dHJva2VSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAx
LCByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygyKTsKLSAgICBj
b250ZXh0LT5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29s
b3IodW5hdmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zdHJva2VQ
YXRoKHN0cm9rZVBhdGgpOwogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0g
Zm9udC5mb250TWV0cmljcygpOwogICAgIGZsb2F0IGxhYmVsWCA9IHJvdW5kZihyZXBsYWNlbWVu
dFRleHRSZWN0LmxvY2F0aW9uKCkueCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0
VGV4dE1hcmdpbik7CiAgICAgZmxvYXQgbGFiZWxZID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJl
Y3QubG9jYXRpb24oKS55KCkgKyAocmVwbGFjZW1lbnRUZXh0UmVjdC5zaXplKCkuaGVpZ2h0KCkg
LSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyICsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyByZXBs
YWNlbWVudFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4pOwotICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0g
ICAgY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQb2ludChsYWJlbFgsIGxh
YmVsWSkpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCBy
dW4sIEZsb2F0UG9pbnQobGFiZWxYLCBsYWJlbFkpKTsKIAogICAgIGlmIChzaG91bGRVbmF2YWls
YWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3BsdWdpblVuYXZhaWxhYmls
aXR5UmVhc29uKSkgewogICAgICAgICBhcnJvd1JlY3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJv
d0NpcmNsZVBhZGRpbmcpOwogCi0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoMS4wKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENv
bG9yKCksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbEVsbGlw
c2UoYXJyb3dSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEu
MCk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxsRWxsaXBzZShhcnJv
d1JlY3QpOwogCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVDbGVhcik7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZUNsZWFyKTsKICAgICAgICAgZHJhd1JlcGxhY2VtZW50QXJyb3coY29udGV4dCwgYXJyb3dSZWN0
KTsKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgY29u
dGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggZDVmZmY5MjAzMjM1NDE4NDgyNWIx
MjA0ODYxZDZhNjQyZTY1ZDA3ZS4uMDk1MmZkYTM0Yjg4Mjg5MTRjMzlmYWM0YjI4OTk0M2JiMjA0
ODk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBA
IC0xNTksNyArMTU5LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9u
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICAgICAgcGFpbnRS
ZWN0LnNldFgocGFpbnRSZWN0LngoKSArIHhPZmYpOwogICAgIH0KIAotICAgIGlmICghYm94U2hh
ZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBkZXRl
cm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpKSkKKyAgICBp
ZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChwYWludFJlY3QubG9jYXRp
b24oKSwgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0
KCkpKSkKICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxl
KCksIE5vcm1hbCk7CiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmJh
Y2tncm91bmRMYXllcnMoKSwgcGFpbnRSZWN0KTsKICAgICBwYWludEJveFNoYWRvdyhwYWludElu
Zm8sIHBhaW50UmVjdCwgc3R5bGUoKSwgSW5zZXQpOwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQg
UmVuZGVyRmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBDcmVhdGUg
YSBjbGlwcGluZyByZWdpb24gYXJvdW5kIHRoZSBsZWdlbmQgYW5kIHBhaW50IHRoZSBib3JkZXIg
YXMgbm9ybWFsCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdy
YXBoaWNzQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBw
YWludEluZm8uY29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gd29yayB3
aXRoICJybCIgYW5kICJidCIgYmxvY2sgZmxvdyBkaXJlY3Rpb25zLiAgSW4gdGhvc2UKICAgICAv
LyBjYXNlcyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJv
cmRlcnMgcmVzcGVjdGl2ZWx5LgpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUmVuZGVyRmllbGRz
ZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50CiAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0
eWxlKCkuYm9yZGVyTGVmdFdpZHRoKCksIGxlZ2VuZC0+d2lkdGgoKSkpOwogICAgICAgICBjbGlw
UmVjdC5zZXRIZWlnaHQobGVnZW5kLT5oZWlnaHQoKSk7CiAgICAgfQotICAgIGdyYXBoaWNzQ29u
dGV4dC0+Y2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcE91dChzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpKTsKIAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENv
bnRyb2wuY3BwCmluZGV4IGM3YWM2NzQ2YTI3NWE5OGVjODZkMDk5OGU2NzZkNmI1YWY1MWFjY2Eu
LjY0ZWNhY2IwNmVjZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAt
MTIwLDE0ICsxMjAsMTQgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmpl
Y3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIC8vIFB1c2ggYSBjbGlwLgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwgZmFsc2UpOwog
ICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJ
bmZvLnBoYXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMpIHsKICAgICAgICAg
SW50UmVjdCBjbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoTGF5b3V0UmVjdChwYWludE9mZnNl
dC54KCkgKyBib3JkZXJMZWZ0KCksIHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdo
dCgpLCBoZWlnaHQoKSAtIGJvcmRlckJvdHRvbSgpIC0gYm9yZGVyVG9wKCkgKyBidXR0b25TaGFk
b3dIZWlnaHQpKTsKICAgICAgICAgaWYgKGNsaXBSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlw
KGNsaXBSZWN0KTsKICAgICB9CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhh
c2VGb3JlZ3JvdW5kKSB7CkBAIC0xNjMsMTAgKzE2MywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxv
YWRDb250cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJhc2VsaW5lUG9zaXRpb24o
QWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRoZSBmaWxlbmFtZQotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBv
aW50KHJvdW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBJbnRQb2ludChyb3Vu
ZFRvSW50KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChpbnB1dEVsZW1lbnQoKS5pY29uKCkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB3aGVy
ZSB0aGUgaWNvbiBzaG91bGQgYmUgcGxhY2VkCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW4KICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAgICAvLyBEcmF3
IHRoZSBmaWxlIGljb24KLSAgICAgICAgICAgIGlucHV0RWxlbWVudCgpLmljb24oKS0+cGFpbnQo
KnBhaW50SW5mby5jb250ZXh0LCBJbnRSZWN0KHJvdW5kVG9JbnQoaWNvblgpLCByb3VuZFRvSW50
KGljb25ZKSwgaWNvbldpZHRoLCBpY29uSGVpZ2h0KSk7CisgICAgICAgICAgICBpbnB1dEVsZW1l
bnQoKS5pY29uKCktPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIEludFJlY3Qocm91bmRUb0lu
dChpY29uWCksIHJvdW5kVG9JbnQoaWNvblkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKICNl
bmRpZgogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHAKaW5kZXggMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYw
NC4uMmY4MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4ZDIyZmE4MGE2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MCwxNSArOTAsMTUgQEAg
dm9pZCBSZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IEludFJlY3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0
aGluZyBjbGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1lZXQgYXQg
YSBqb2luLgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHls
ZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFt
ZVNldEVsZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNv
bG9yU3BhY2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVt
ZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNl
KTsKICAgICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZl
IGVub3VnaCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJp
dCBvZiB0aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3Qu
d2lkdGgoKSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9yZGVy
UmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNv
bG9yKCksIGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KElu
dFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEs
IGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAg
Y29udGV4dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSgx
LCBoZWlnaHQoKSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAg
ICAgY29udGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0g
MSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VD
b2xvcigpLCBjb2xvclNwYWNlKTsKICAgICB9CiB9CiAKQEAgLTExMCwxNSArMTEwLDE1IEBAIHZv
aWQgUmVuZGVyRnJhbWVTZXQ6OnBhaW50Um93Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiBiCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBzb21ldGhp
bmcgY2xldmVyIHdoZW4gYm9yZGVycyBmcm9tIGRpc3RpbmN0IGZyYW1lc2V0cyBtZWV0IGF0IGEg
am9pbi4KICAgICAKICAgICAvLyBGaWxsIGZpcnN0LgotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUo
KS5jb2xvclNwYWNlKCk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVT
ZXRFbGVtZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xv
clNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVu
dCgpLmhhc0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JTcGFjZSk7
CiAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3Vn
aCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0
aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3QuaGVpZ2h0
KCkgPj0gMykgewotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3Qu
bG9jYXRpb24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50
KGJvcmRlclJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCks
IDEpKSwgYm9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0
LmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCks
IDEpKSwgYm9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRl
eHQuZmlsbFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0LngoKSwgYm9yZGVyUmVjdC5t
YXhZKCkgLSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBj
b2xvclNwYWNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJIVE1MQ2FudmFzLmNwcAppbmRleCA1YTY1MGFhYzlkZGI0OTc3N2I2M2YzYmQ4ODAzZjA2ZTVl
YzZiYzE2Li5jNjczZDgwZWFkOTgzNjQ3YWZlYjkzMWY0M2Q3NGQ0ZDBmZTViN2UwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBAIC02Niw3ICs2
Niw3IEBAIGJvb2wgUmVuZGVySFRNTENhbnZhczo6cmVxdWlyZXNMYXllcigpIGNvbnN0CiAKIHZv
aWQgUmVuZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0
ID0gdGhpcy0+Y29udGVudEJveFJlY3QoKTsKICAgICBjb250ZW50Qm94UmVjdC5tb3ZlQnkocGFp
bnRPZmZzZXQpOwpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogCiAg
ICAgLy8gTm90IGFsbG93ZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnRlbnQgYm94LgogICAgIGJvb2wg
Y2xpcCA9ICFjb250ZW50Qm94UmVjdC5jb250YWlucyhyZXBsYWNlZENvbnRlbnRSZWN0KTsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
LCBjbGlwKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJ
bmZvLmNvbnRleHQoKSwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY2xpcChzbmFwcGVkSW50UmVjdChjb250ZW50Qm94UmVjdCkpOwog
CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk4NGQ1N2NhYjdmMzA3ZDk5ZjhmZTAwMDYyNzE3
MTA2MjExMDNiZC4uNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zNzUsNyArMzc1LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBMYXlvdXRVbml0IGxlZnRQYWQgPSBwYWRk
aW5nTGVmdCgpOwogICAgIExheW91dFVuaXQgdG9wUGFkID0gcGFkZGluZ1RvcCgpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogICAgIFBh
Z2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKQEAgLTM5MSwxMCArMzkxLDEwIEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gTGF5
b3V0VW5pdCgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgICAgICAgICAvLyBEcmF3IGFu
IG91dGxpbmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgotICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwot
ICAgICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcFJl
Y3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIg
KyBsZWZ0UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwg
Y0hlaWdodCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOworICAgICAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJvcmRlciAr
IGxlZnRQYWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dpZHRoLCBj
SGVpZ2h0KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAgICAgICAg
IGJvb2wgZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAgICAgICAgIExheW91dFNpemUg
aW1hZ2VPZmZzZXQ7CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdl
T3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1h
Z2UoaW1hZ2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2
aWNlU2NhbGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0
LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24p
OwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAgICAgU3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmcobV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHls
ZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5
bGUoKS5mb250Q2FzY2FkZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IGFzY2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwpAQCAtNDQzLDkgKzQ0Myw5IEBAIHZv
aWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0ZXh0V2lk
dGggPSBmb250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgICAgIGlmIChlcnJvclBpY3R1
cmVEcmF3bikgewogICAgICAgICAgICAgICAgICAgICBpZiAodXNhYmxlV2lkdGggPj0gdGV4dFdp
ZHRoICYmIGZvbnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0LmhlaWdodCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYWx0
VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZv
bnQsIHRleHRSdW4sIGFsdFRleHRPZmZzZXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
dXNhYmxlV2lkdGggPj0gdGV4dFdpZHRoICYmIHVzYWJsZUhlaWdodCA+PSBmb250TWV0cmljcy5o
ZWlnaHQoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4
dFJ1biwgYWx0VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1Rl
eHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpICYmIGNXaWR0aCA+
IDAgJiYgY0hlaWdodCA+IDApIHsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJlbmRlckltYWdl
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZgogICAgICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QgPSB0aGlzLT5y
ZXBsYWNlZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7CiAgICAgICAgIHJlcGxhY2VkQ29u
dGVudFJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICAgICAgYm9vbCBjbGlwID0gIWNvbnRl
bnRCb3hSZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXApOworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcCk7CiAgICAg
ICAgIGlmIChjbGlwKQotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50Qm94UmVjdCk7
CisgICAgICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudEJveFJlY3QpOwogCiAgICAgICAgIHBh
aW50SW50b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRl
bnRSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAKQEAgLTQ5NSw3ICs0OTUsNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYg
cGFpbnRJbmZvKQogICAgIGlmIChkb2N1bWVudCgpLnByaW50aW5nKCkgfHwgIWZyYW1lKCkuc2Vs
ZWN0aW9uKCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhcGFpbnRJbmZv
LmNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250
ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8uY29udGV4dCgpLnVwZGF0aW5n
Q29udHJvbFRpbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRF
bGVtZW50ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwpAQCAtNTIwLDcgKzUyMCw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBw
YWludEluZm8pCiAgICAgaWYgKCFvdXRsaW5lV2lkdGgpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBhaW50SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIG91dGxpbmVXaWR0aCwKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdpZHRoLAog
ICAgICAgICBhcmVhRWxlbWVudFN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksCiAgICAgICAgIGFyZWFF
bGVtZW50U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xv
cikpOwogI2VuZGlmCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6YXJlYUVs
ZW1lbnRGb2N1c0NoYW5nZWQoSFRNTEFyZWFFbGVtZW50KiBlbGVtZW50KQogICAgIHJlcGFpbnQo
KTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7CiAgICAgaWYgKCFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8fCBpbWFnZVJlc291cmNl
KCkuZXJyb3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8IHJlY3QuaGVpZ2h0KCkg
PD0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRh
dGlvbkRlc2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmll
bnRhdGlvbigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZVJlc291cmNl
KCkuaW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xv
clNwYWNlKCksIHJlY3QsCisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VSZXNvdXJjZSgpLmlt
YWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFj
ZSgpLCByZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5
U2NhbGluZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4
IDkwZjNlMjZiZTQ4MTIwOWJjZmY2Zjg4NzVjMTRlZmQ4NzNiNjYzZDQuLjY3ZGVkMTc2ZDZhMzE3
YjZkYmM0ZjYxYmNmNTgxYzQzYjYxZGU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHAKaW5kZXggNDlkNDUyMDVjMGE5YzhiMWQ2MTQ1MDI1NjJlNTViZjBhODM0NjNjNS4uZmU4OGU3
NmM4ZTExOWJjMjAwZDVkZTgzY2QxZWM1YTBmM2U4YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcklubGluZS5jcHAKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgaWYgKGhhc091dGxpbmVBbm5vdGF0aW9uKCkgJiYgIXN0eWxlVG9V
c2Uub3V0bGluZVN0eWxlSXNBdXRvKCkgJiYgIXRoZW1lKCkuc3VwcG9ydHNGb2N1c1Jpbmcoc3R5
bGVUb1VzZSkpCiAgICAgICAgIGFkZFBERlVSTFJlY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7
CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0OwotICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Cisg
ICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlVG9V
c2Uub3V0bGluZVN0eWxlKCkgPT0gQk5PTkUpCkBAIC0xNTgxLDcgKzE1ODEsNyBAQCB2b2lkIFJl
bmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZgogICAgIENvbG9yIG91dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2Uudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKICAgICBib29sIHVz
ZVRyYW5zcGFyZW5jeUxheWVyID0gb3V0bGluZUNvbG9yLmhhc0FscGhhKCk7CiAgICAgaWYgKHVz
ZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8g
MjU1KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgIG91
dGxpbmVDb2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0bGluZUNvbG9yLmdyZWVu
KCksIG91dGxpbmVDb2xvci5ibHVlKCkpOwogICAgIH0KIApAQCAtMTU4OSwxMCArMTU4OSwxMCBA
QCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludE91dGxpbmVGb3JMaW5lKGdy
YXBoaWNzQ29udGV4dCwgcGFpbnRPZmZzZXQsIHJlY3RzLmF0KGkgLSAxKSwgcmVjdHMuYXQoaSks
IHJlY3RzLmF0KGkgKyAxKSwgb3V0bGluZUNvbG9yKTsKIAogICAgIGlmICh1c2VUcmFuc3BhcmVu
Y3lMYXllcikKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigp
OworICAgICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAot
dm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKK3ZvaWQgUmVu
ZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBsYXN0bGluZSwgY29uc3Qg
TGF5b3V0UmVjdCYgdGhpc2xpbmUsIGNvbnN0IExheW91dFJlY3QmIG5leHRsaW5lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3Igb3V0bGluZUNvbG9y
KQogewpAQCAtMTYxNCw3ICsxNjE0LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGlu
ZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBJ
bnRSZWN0IHBpeGVsU25hcHBlZE5leHRMaW5lID0gc25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQu
eCgpICsgbmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAgICAKICAgICAv
LyBsZWZ0IGVkZ2UKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBGbG9hdFJlY3Qo
RmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICBw
aXhlbFNuYXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS54KCkg
PCBsYXN0bGluZS54KCkgfHwgKGxhc3RsaW5lLm1heFgoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/
IG91dGxpbmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gu
eCgpLApAQCAtMTYyNiw3ICsxNjI2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGlu
ZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAg
ICAgYW50aWFsaWFzKTsKICAgICAKICAgICAvLyByaWdodCBlZGdlCi0gICAgZHJhd0xpbmVGb3JC
b3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNz
Q29udGV4dCwKICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1h
eFgoKSwKICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIChsYXN0bGluZS5pc0VtcHR5KCkg
fHwgbGFzdGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgpIHx8ICh0aGlzbGluZS5tYXhYKCkg
LSAxKSA8PSBsYXN0bGluZS54KCkgPyBvdXRsaW5lV2lkdGggOiAwKSksCiAgICAgICAgIEZsb2F0
UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2MzgsNyAr
MTYzOCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAgIGFudGlhbGlhcyk7CiAg
ICAgLy8gdXBwZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkpCi0g
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZs
b2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAg
IHBpeGVsU25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgpLAogICAgICAgICAgICAgRmxvYXRQ
b2ludChzdGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAobGFz
dGxpbmUuaXNFbXB0eSgpID8gMTAwMDAwMCA6IHBpeGVsU25hcHBlZExhc3RMaW5lLngoKSkpLApA
QCAtMTY0OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAg
IGFudGlhbGlhcyk7CiAgICAgCiAgICAgaWYgKGxhc3RsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1h
eFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAg
ICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9h
dFJlY3QoRmxvYXRQb2ludChzdGQ6Om1heChsYXN0bGluZS5pc0VtcHR5KCkgPyAtMTAwMDAwMCA6
IHBpeGVsU25hcHBlZExhc3RMaW5lLm1heFgoKSwgcGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxp
bmVXaWR0aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gb3V0bGluZVdpZHRo
KSwKICAgICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxp
bmVXaWR0aCwKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91
dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAg
ICAgICAgICAgICBvdXRsaW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUu
eCgpID09IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFw
aGljc0NvbnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQs
CiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0g
b3V0bGluZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVX
aWR0aCksCiAgICAgICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBv
dXRsaW5lV2lkdGgsCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFp
bnRPdXRsaW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
TAogCiAgICAgLy8gbG93ZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBuZXh0bGluZS54
KCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAg
ICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChz
dGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAhbmV4dGxpbmUu
aXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUueCgpICsgMSA6IDEwMDAwMDApLApAQCAt
MTY4Miw3ICsxNjgyLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFu
dGlhbGlhcyk7CiAgICAgCiAgICAgaWYgKG5leHRsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgo
KSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJl
Y3QoRmxvYXRQb2ludChzdGQ6Om1heCghbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVk
TmV4dExpbmUubWF4WCgpIDogLTEwMDAwMDAsIHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5l
V2lkdGgpLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAg
ICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCkBAIC0x
NjkyLDcgKzE2OTIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgb3V0
bGluZVdpZHRoLCBhbnRpYWxpYXMpOwogCiAgICAgaWYgKHRoaXNsaW5lLngoKSA9PSB0aGlzbGlu
ZS5tYXhYKCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAor
ICAgICAgICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAg
RmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwK
ICAgICAgICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQ
b2ludChwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IDkyYmNlYjViNmVlNDcyMTlkNzQ5YTU2MThj
YmE4MTQ3MzBiMjVkZTUuLjQ1MGJiMGY5OTU2ODZmMWVlZmYxM2RlNWM2ZTFkNDc3ZDBhNDg5N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE3Myw3ICsxNzMs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+IGNsb25lKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwgY29uc3QgTGF5
b3V0UmVjdCYgdGhpc0xpbmUsCisgICAgdm9pZCBwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgcHJldkxpbmUs
IGNvbnN0IExheW91dFJlY3QmIHRoaXNMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBMYXlvdXRSZWN0JiBuZXh0TGluZSwgY29uc3QgQ29sb3IpOwogICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0KiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGls
ZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdkZWRl
NzFjYzRkNDM0MTRlODNhOWY4YTcxNzU5NjI5YWI3ZGFkNzMuLjc0MzA5ZmRjMjgxZmY4MmE2MWM5
NTUyMWU3NzA2ODIyYzg1ZjRjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcApAQCAtMTc4Nyw5ICsxNzg3LDkgQEAgc3RhdGljIExheW91dFJlY3QgcGFpbnRpbmdF
eHRlbnQoY29uc3QgUmVuZGVyTGF5ZXImIGN1cnJlbnRMYXllciwgY29uc3QgUmVuZGVyTGEKICAg
ICByZXR1cm4gaW50ZXJzZWN0aW9uKHRyYW5zcGFyZW5jeUNsaXBCb3goY3VycmVudExheWVyLCBy
b290TGF5ZXIsIFBhaW50aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCwgUm9vdE9mVHJhbnNwYXJlbmN5
Q2xpcEJveCwgcGFpbnRCZWhhdmlvciksIHBhaW50RGlydHlSZWN0KTsKIH0KIAotdm9pZCBSZW5k
ZXJMYXllcjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRSZWN0
JiBkaXJ0eVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGlu
Z0luZm8sIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5m
by5wYWludEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQorICAgIGlmIChjb250ZXh0
LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0lu
Zm8ucGFpbnRCZWhhdmlvcikgJiYgbV91c2VkVHJhbnNwYXJlbmN5KSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yID0gdHJhbnNwYXJlbnRQYWludGluZ0FuY2Vz
dG9yKCk7CkBAIC0xNzk4LDIyICsxNzk4LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQCiAg
ICAgCiAgICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBhaW50QmVo
YXZpb3IpKSB7CiAgICAgICAgIG1fdXNlZFRyYW5zcGFyZW5jeSA9IHRydWU7Ci0gICAgICAgIGNv
bnRleHQtPnNhdmUoKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIExheW91dFJl
Y3QgYWRqdXN0ZWRDbGlwUmVjdCA9IHBhaW50aW5nRXh0ZW50KCp0aGlzLCBwYWludGluZ0luZm8u
cm9vdExheWVyLCBkaXJ0eVJlY3QsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAg
ICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlv
bik7CiAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRDbGlwUmVjdCA9IHNuYXBSZWN0VG9E
ZXZpY2VQaXhlbHMoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpOwotICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZENsaXBS
ZWN0KTsKKyAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsKIAogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAg
ICAgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3Np
dGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKCkp
OwogI2VuZGlmCiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5k
ZXJlcigpLm9wYWNpdHkoKSk7CisgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXll
cihyZW5kZXJlcigpLm9wYWNpdHkoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQog
ICAgICAgICBpZiAoaGFzQmxlbmRNb2RlKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRDb21w
b3NpdGVPcGVyYXRpb24oY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5v
cm1hbCk7CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0
LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwogI2VuZGlmCiAKICNpZmRl
ZiBSRVZFQUxfVFJBTlNQQVJFTkNZX0xBWUVSUwpAQCAtMzU0MSw3ICszNTQxLDcgQEAgYm9vbCBS
ZW5kZXJMYXllcjo6c2hvd3NPdmVyZmxvd0NvbnRyb2xzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBi
b29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5n
IGlmIHdlIGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc092ZXJmbG93
Q2xpcCgpKQpAQCAtMzYwNSw3ICszNjA1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVy
Zmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQKICAg
ICBwYWludFJlc2l6ZXIoY29udGV4dCwgYWRqdXN0ZWRQYWludE9mZnNldCwgZGFtYWdlUmVjdCk7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAg
ICBBU1NFUlQoYm94KTsKQEAgLTM2MTUsNyArMzYxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQm
IHBhCiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAg
aWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3Jv
bGxDb3JuZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzYyOCwxMCArMzYy
OCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
cGFpbnQgd2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9sbGJhcnMsIHNpbmNlIHdlIG5lZWQK
ICAgICAvLyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAgICAgaWYgKCFoYXNPdmVybGF5U2Ny
b2xsYmFycygpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hp
dGUsIGJveC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0
KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KQordm9pZCBS
ZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCiB7CiAgICAgUmVmUHRy
PEltYWdlPiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNp
emU7CkBAIC0zNjQ3LDE4ICszNjQ3LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9y
bVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAg
fQogCiAgICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9u
U2Nyb2xsYmFyT25Mb2dpY2FsTGVmdCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAg
ICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNvcm5lclJl
c2l6ZXJTaXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJDb3JuZXJS
ZWN0LmhlaWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwotICAgICAgICBjb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJ
bWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3Bh
Y2UoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKLSAgICAg
ICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNp
emUud2lkdGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVp
Z2h0KCkgLSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKC0xLjAsIDEuMCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNp
emVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKKyAgICAgICAgY29udGV4
dC5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVj
dC5tYXhYTWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXpl
KSwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRl
eHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgp
LmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVD
b3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VS
ZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucmVz
aXplKCkgPT0gUkVTSVpFX05PTkUpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NzEsNyArMzY3MSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMo
ZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT51cGRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMo
KSkgewogICAgICAgICB1cGRhdGVSZXNpemVyU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTM2ODYsMTQgKzM2ODYsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAv
LyBEcmF3IGEgZnJhbWUgYXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3JleSBsaW5lKSBpZiB0aGVy
ZSBhcmUgYW55IHNjcm9sbGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlwcGluZyB3aWxsIGV4Y2x1
ZGUgdGhlIHJpZ2h0IGFuZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFtZS4KICAgICBpZiAoIWhh
c092ZXJsYXlTY3JvbGxiYXJzKCkgJiYgKG1fdkJhciB8fCBtX2hCYXIpKSB7Ci0gICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNv
bnRleHQtPmNsaXAoYWJzUmVjdCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAg
ICAgICBMYXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNv
cm5lci5zZXRTaXplKExheW91dFNpemUobGFyZ2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0
Ojpmcm9tUGl4ZWwoMSksIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21Q
aXhlbCgxKSkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdC
KDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRl
eHQtPmRyYXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxhcmdlckNvcm5lcikpOworICAgICAgICBjb250
ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7
CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3Qo
bGFyZ2VyQ29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNzYxLDcgKzM3NjEsNyBAQCBib29sIFJl
bmRlckxheWVyOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKGRpcmVj
dGlvbiwgZ3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJl
Y3QsIGNvbnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9y
IHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXll
ckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNp
emUmIHN1YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3Mp
CiB7CiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKQEAg
LTM3NzIsNyArMzc3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwKICAgICAgICAgd2lkZ2V0
LT5zZXRPdmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50T3ZlcmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1h
Z2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdCkKIHsKICAgICBpZiAoIW1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJz
KQogICAgICAgICByZXR1cm47CkBAIC0zNzk3LDE4ICszNzk3LDE4IEBAIHN0YXRpYyBib29sIGlu
Q29udGFpbmluZ0Jsb2NrQ2hhaW4oUmVuZGVyTGF5ZXIqIHN0YXJ0TGF5ZXIsIFJlbmRlckxheWVy
KiBlbmRMYXllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpjbGlw
VG9SZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0LCBCb3JkZXJSYWRpdXNDbGlw
cGluZ1J1bGUgcnVsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBDbGlwUmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSBydWxlKQogewog
ICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCk7CiAKICAgICBib29sIG5lZWRzQ2xpcHBpbmcgPSBjbGlwUmVjdC5yZWN0
KCkgIT0gcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgIGlmIChuZWVkc0NsaXBwaW5n
IHx8IGNsaXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkKLSAgICAgICAgY29udGV4dC0+c2F2ZSgp
OworICAgICAgICBjb250ZXh0LnNhdmUoKTsKIAogICAgIGlmIChuZWVkc0NsaXBwaW5nKSB7CiAg
ICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBSZWN0LnJlY3QoKTsKICAg
ICAgICAgYWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxh
dGlvbik7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoc25hcFJlY3RUb0RldmljZVBpeGVscyhhZGp1
c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICBjb250ZXh0LmNsaXAo
c25hcFJlY3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3Rv
cikpOwogICAgIH0KIAogICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAg
LTM4MTksNyArMzgxOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250CiAgICAgICAgICAgICBp
ZiAobGF5ZXItPnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXItPnJlbmRlcmVy
KCkuc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSAmJiBpbkNvbnRhaW5pbmdCbG9ja0NoYWluKHRo
aXMsIGxheWVyKSkgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVj
dCA9IExheW91dFJlY3QodG9MYXlvdXRQb2ludChsYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yKHBh
aW50aW5nSW5mby5yb290TGF5ZXIpKSwgbGF5ZXItPnNpemUoKSk7CiAgICAgICAgICAgICAgICAg
YWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJl
cigpLnN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3QpLnBp
eGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChsYXllci0+cmVuZGVyZXIoKS5z
dHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihhZGp1c3RlZENsaXBSZWN0KS5waXhlbFNu
YXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXllciA9PSBwYWludGluZ0lu
Zm8ucm9vdExheWVyKQpAQCAtMzgyOCwxMCArMzgyOCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpj
bGlwVG9SZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNz
Q29udAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3Qg
Q2xpcFJlY3QmIGNsaXBSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29u
c3QgQ2xpcFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChjbGlwUmVjdC5yZWN0KCkgIT0gcGFp
bnREaXJ0eVJlY3QgfHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250
ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBzdGF0aWMg
dm9pZCBwZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBUZXN0UmVxdWVzdE1hcCYgb3ZlcmxhcFRl
c3RSZXF1ZXN0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgUmVuZGVyTGF5
ZXIqIGxheWVyKQpAQCAtMzg3NSwxMiArMzg3NSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFp
bnRGb3JGaXhlZFJvb3RCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVy
TAogICAgIHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5pc1Jvb3QoKSAmJiAocGFpbnRGbGFncyAm
IFJlbmRlckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpOwogfQog
Ci12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBh
aW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXll
ckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAg
IC8vIFRoZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdo
IGNvbXBvc2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRo
YXQgd2UgZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290
IGluIHRoaXMgY2FzZS4KLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkgfHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5D
b21wb3NpdGluZ0xheWVycykpCisgICAgICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRp
bnRzKCkgfHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycykpCiAgICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5
ZXJUZW1wb3JhcnlDbGlwUmVjdHM7CiAgICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50
c0ludG9XaW5kb3coKQogICAgICAgICAgICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBv
c2l0ZWRBbmNlc3RvcigpCkBAIC0zOTY0LDcgKzM5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpw
YWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mCiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCBwYWludGlu
Z0luZm8sIHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29u
dGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5n
TGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTM5ODIs
OSArMzk4Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxl
Y3Rpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcGFpbnRMYXllckNvbnRl
bnRzKGNvbnRleHQsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKIH0KIAotYm9vbCBS
ZW5kZXJMYXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKQorYm9vbCBSZW5kZXJMYXllcjo6c2V0
dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29s
JiBkaWRRdWFudGl6ZUZvbnRzKQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBib29sIHNjcm9sbGluZ09uTWFpblRocmVhZCA9IHRydWU7CkBAIC00MDAy
LDggKzQwMDIsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXph
dGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGJvb2wmCiAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSByZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpKQogICAgICAgICBpc1pvb21pbmcgPSAhcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkuaGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaWYgKHNj
cm9sbGluZ09uTWFpblRocmVhZCB8fCBjb250ZW50c1Njcm9sbEJ5UGFpbnRpbmcgfHwgaXNab29t
aW5nKSB7Ci0gICAgICAgIGRpZFF1YW50aXplRm9udHMgPSBjb250ZXh0LT5zaG91bGRTdWJwaXhl
bFF1YW50aXplRm9udHMoKTsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzKGZhbHNlKTsKKyAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQuc2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCk7CisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNzIsOSArNDA3Miw5IEBAIFBhdGggUmVuZGVyTGF5ZXI6
OmNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0
UmVjdCYKICAgICByZXR1cm4gUGF0aCgpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjpzZXR1cENs
aXBQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJl
Y3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
Citib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYg
cm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpLmhhc0Ns
aXBQYXRoKCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghcmVuZGVy
ZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKSB7
CkBAIC00MDg4LDggKzQwODgsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgICAgICBX
aW5kUnVsZSB3aW5kUnVsZTsKICAgICAgICAgTGF5b3V0U2l6ZSBwYWludGluZ09mZnNldEZyb21S
b290ID0gTGF5b3V0U2l6ZShzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwob2Zmc2V0RnJvbVJvb3QgKyBw
YWludGluZ0luZm8uc3VicGl4ZWxBY2N1bXVsYXRpb24sIExheW91dFBvaW50KCksIHJlbmRlcmVy
KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIFBhdGggcGF0aCA9
IGNvbXB1dGVDbGlwUGF0aChwYWludGluZ09mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3Vu
ZHMsIHdpbmRSdWxlKTsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBjb250ZXh0
LT5jbGlwUGF0aChwYXRoLCB3aW5kUnVsZSk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAg
ICAgICBjb250ZXh0LmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC00MDk4LDcgKzQwOTgsNyBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1
cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
ZgogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmdldEVs
ZW1lbnRCeUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFnbWVudCgpKTsKICAgICAg
ICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhU
YWcpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCB1c2UgYSBzYWZlciBjYXN0IHN1Y2ggYXMgdG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lcigpLgotICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC0+
c2F2ZSgpIGFuZCByZXR1cm4gdHJ1ZSBzbyB3ZSByZXN0b3JlIHRoZSBjb250ZXh0PworICAgICAg
ICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC5zYXZlKCkgYW5kIHJldHVy
biB0cnVlIHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5yZW5kZXJlcigpKS0+YXBwbHlD
bGlwcGluZ1RvQ29udGV4dChyZW5kZXJlcigpLCByb290UmVsYXRpdmVCb3VuZHMsIHBhaW50aW5n
SW5mby5wYWludERpcnR5UmVjdCwgY29udGV4dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MTA2
LDkgKzQxMDYsOSBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotYm9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKK2Jvb2wg
UmVuZGVyTGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwYWludEZsYWdzICYgUGFpbnRM
YXllclBhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpCkBAIC00MTI2LDcgKzQxMjYsNyBAQCBib29s
IFJlbmRlckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFBhaW50TGF5ZXJGbAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZv
LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJv
bVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZl
Qm91bmRzQ29tcHV0ZWQpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBM
YXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFn
cywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxh
dGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7CiAgICAgaWYg
KCFoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhjb250ZXh0LCBwYWludEZsYWdzKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC00MTYzLDcgKzQxNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhp
Y3NDbwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRlckxh
eWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50
ZXIsIEdyYXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYg
cGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCitHcmFwaGljc0Nv
bnRleHQmIFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxw
ZXIqIGZpbHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBMYXll
clBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVu
dHMpCiB7CiAgICAgQVNTRVJUKGZpbHRlclBhaW50ZXItPmhhc1N0YXJ0ZWRGaWx0ZXJFZmZlY3Qo
KSk7CiAgICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgY2xpcHBpbmcgKGllLiBvdmVyZmxvdzogaGlk
ZGVuKS4KQEAgLTQxODUsNyArNDE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlWklu
ZGV4KFJlbmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIqIHNlY29uZCkKIC8vIFRoZXNlIGxh
eWVycyBzaG91bGQgbm90IGJlIHBhaW50ZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgb3RoZXIg
ZWxlbWVudHMgY29sbGVjdGVkIGluCiAvLyBuYW1lZCBmbG93cyAtIHJlZ2lvbnMgLT4gbmFtZWQg
Zmxvd3MgLSBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIGNsaXBwZWQgdG8gdGhlCiAv
LyByZWdpb25zIHZpZXdwb3J0Lgotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0lu
TmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJG
bGFncyBwYWludEZsYWdzKQogewogICAgIGlmICghaXNSb290TGF5ZXIoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNDIwNiw3ICs0MjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExh
eWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEwKICAgICAg
ICAgZml4ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50Rmxh
Z3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQ
YWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAg
ICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRl
c2NlbmRhbnQoKSk7CiAKQEAgLTQyNDgsMjQgKzQyNDgsMjUgQEAgdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZGlzYWJsZSBzdWJwaXhl
bCBxdWFudGl6YXRpb24gZm9yIG92ZXJmbG93IGNsaXBzIG9yIHN1YmZyYW1lcyBvbmNlIHdlIHNj
cm9sbCB0aG9zZQogICAgIC8vIHRoaW5ncyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4KICAgICBi
b29sIGRpZFF1YW50aXplRm9udHMgPSB0cnVlOwotICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4
ZWxRdWFudGl6YXRpb24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LCBk
aWRRdWFudGl6ZUZvbnRzKTsKKyAgICBib29sIG5lZWRUb0FkanVzdFN1YnBpeGVsUXVhbnRpemF0
aW9uID0gc2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24ob3JpZ2luYWxDb250ZXh0LCBkaWRR
dWFudGl6ZUZvbnRzKTsKIAogICAgIC8vIEFwcGx5IGNsaXAtcGF0aCB0byBjb250ZXh0LgogICAg
IExheW91dFNpemUgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IG9mZnNldEZyb21Sb290Owot
ICAgIGlmIChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSAmJiAocmVuZGVy
ZXIoKS5oYXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBh
aW50RmxhZ3MpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2Nr
KCkgJiYgKHJlbmRlcmVyKCkuaGFzQ2xpcFBhdGgoKSB8fCBoYXNGaWx0ZXJUaGF0SXNQYWludGlu
ZyhvcmlnaW5hbENvbnRleHQsIHBhaW50RmxhZ3MpKSkKICAgICAgICAgY29sdW1uQXdhcmVPZmZz
ZXRGcm9tUm9vdCA9IHRvTGF5b3V0U2l6ZShjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0lu
Zm8ucm9vdExheWVyLCBMYXlvdXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1bW5zKSk7CiAKICAgICBi
b29sIGhhc0NsaXBQYXRoID0gZmFsc2U7CiAgICAgaWYgKHNob3VsZEFwcGx5Q2xpcFBhdGgocGFp
bnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpCi0gICAgICAgIGhhc0Ns
aXBQYXRoID0gc2V0dXBDbGlwUGF0aChjb250ZXh0LCBwYWludGluZ0luZm8sIGNvbHVtbkF3YXJl
T2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29t
cHV0ZWQpOworICAgICAgICBoYXNDbGlwUGF0aCA9IHNldHVwQ2xpcFBhdGgob3JpZ2luYWxDb250
ZXh0LCBwYWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2
ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogCiAgICAgTGF5ZXJQYWludGlu
Z0luZm8gbG9jYWxQYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCogdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0gY29udGV4dDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZp
bHRlcnMoY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIGNvbHVtbkF3YXJl
T2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29t
cHV0ZWQpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7
CisgICAgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBvcmlnaW5h
bENvbnRleHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVy
PiBmaWx0ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgcGFpbnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91
bmRzLCByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgaWYgKGZpbHRlclBhaW50ZXIp
IHsKICAgICAgICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXItPmZpbHRlckNvbnRleHQoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQgIT0gdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFu
c3BhcmVuY3kpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgIT0gJnRyYW5zcGFyZW5jeUxheWVyQ29u
dGV4dCAmJiBoYXZlVHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEg
ZmlsdGVyIGFuZCB0cmFuc3BhcmVuY3ksIHdlIGhhdmUgdG8gZWFnZXJseSBzdGFydCBhIHRyYW5z
cGFyZW5jeSBsYXllciBoZXJlLCByYXRoZXIgdGhhbiByaXNrIGEgY2hpbGQgbGF5ZXIgbGF6aWx5
IHN0YXJ0cyBvbmUgd2l0aCB0aGUgd3JvbmcgY29udGV4dC4KICAgICAgICAgICAgIGJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXJzKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCk7CiAgICAgICAgIH0KQEAgLTQzMTEsNjMg
KzQzMTIsNjMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBpZiAoaXNQYWludGluZ0Nv
bXBvc2l0ZWRCYWNrZ3JvdW5kKSB7CiAgICAgICAgIC8vIFBhaW50IG9ubHkgdGhlIGJhY2tncm91
bmRzIGZvciBhbGwgb2YgdGhlIGZyYWdtZW50cyBvZiB0aGUgbGF5ZXIuCiAgICAgICAgIGlmIChz
aG91bGRQYWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpCi0gICAgICAgICAgICBwYWludEJh
Y2tncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIHRyYW5zcGFyZW5j
eUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJl
bmN5LAorICAgICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21l
bnRzLCAqY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFp
bnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAgICAgICAgICAgbG9jYWxQYWlu
dGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAg
ICAgfQogCiAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGgg
bmVnYXRpdmUgei1pbmRpY2VzLgogICAgIGlmICgoaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQg
JiYgaXNQYWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0Nv
bnRlbnQgJiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFpbnRM
aXN0KG5lZ1pPcmRlckxpc3QoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFp
bnRGbGFncyk7CisgICAgICAgIHBhaW50TGlzdChuZWdaT3JkZXJMaXN0KCksICpjb250ZXh0LCBs
b2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAKICAgICBpZiAoaXNQYWlu
dGluZ0NvbXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRl
bnQpCi0gICAgICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVu
dHMsIGNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50
RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5k
Rm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJD
b250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAg
ICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlciwgc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRCYWNrZ3Jv
dW5kc09ubHkpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCi0gICAgICAg
IHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQ
YWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7
CisgICAgICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRl
eHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9y
UmVuZGVyZXIpOwogCiAgICAgaWYgKGlzUGFpbnRpbmdDb21wb3NpdGVkRm9yZWdyb3VuZCkgewog
ICAgICAgICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2ZSBvdmVyZmxvdy4KLSAg
ICAgICAgcGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCksIGNvbnRleHQsIGxvY2FsUGFp
bnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWludExpc3QobV9ub3JtYWxG
bG93TGlzdC5nZXQoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50Rmxh
Z3MpOwogICAgIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRy
ZW4gd2l0aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50TGlzdChwb3NaT3JkZXJM
aXN0KCksIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAg
ICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIGxvY2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGZpeGVkIGVsZW1l
bnRzIGZyb20gZmxvdyB0aHJlYWRzLgotICAgICAgICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZs
b3dzKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAg
ICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgbG9jYWxQYWludEZsYWdzKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBy
ZWdpb24sIHBhaW50IGl0cyBjb250ZW50cyB2aWEgdGhlIGZsb3cgdGhyZWFkJ3MgbGF5ZXIuCiAg
ICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQpCi0gICAgICAgICAgICBwYWludEZsb3dUaHJl
YWRJZlJlZ2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWlu
dGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJ
ZlJlZ2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIH0KIAogICAgIGlmIChpc1BhaW50aW5nT3Zl
cmxheVNjcm9sbGJhcnMgJiYgaGFzU2Nyb2xsYmFycygpKQotICAgICAgICBwYWludE92ZXJmbG93
Q29udHJvbHNGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRp
bmdJbmZvKTsKKyAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGxheWVy
RnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOwogCiAgICAgaWYgKGZpbHRl
clBhaW50ZXIpIHsKLSAgICAgICAgY29udGV4dCA9IGFwcGx5RmlsdGVycyhmaWx0ZXJQYWludGVy
LmdldCgpLCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsYXll
ckZyYWdtZW50cyk7CisgICAgICAgIGNvbnRleHQgPSAmYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50
ZXIuZ2V0KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxh
eWVyRnJhZ21lbnRzKTsKICAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51bGxwdHI7CiAgICAgfQog
ICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1c2UgdGhlIG9yaWdpbmFsIHRyYW5z
cGFyZW5jeSBjb250ZXh0LgotICAgIEFTU0VSVCh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0g
Y29udGV4dCk7CisgICAgQVNTRVJUKCZ0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4
dCk7CiAKICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBz
ZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludE1h
c2socGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAg
ICAgICAgIC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAgICAgICAg
cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50
aW5nSW5mbywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50
TWFza0ZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCEocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNl
KSAmJiAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQ
aGFzZSkpIHsKICAgICAgICAgICAgIC8vIFJlLXVzZSBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9y
RnJhZ21lbnRzIHRvIHBhaW50IGJsYWNrIGZvciB0aGUgY29tcG9zaXRpbmcgY2xpcHBpbmcgbWFz
ay4KLSAgICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJG
cmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9y
UmVuZGVyZXIpOworICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50
cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFp
bnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoKGxv
Y2FsUGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2Up
KSB7CiAgICAgICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyIHJhZGl1cyBtYXNrIGZvciB0aGUg
ZnJhZ21lbnRzLgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50
cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWlu
dFJvb3RGb3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9y
RnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1
YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzODYs
NyArNDM4Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFu
c2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYg
cGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6
ZSYgdHJhbnNsYXRpb25PZmZzZXQpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBs
eWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRp
bmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBM
YXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCkKIHsKICAgICAvLyBUaGlzIGludm9sdmVzIHN1
YnRyYWN0aW5nIG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVyIGluIG91ciBjdXJyZW50IGNv
b3JkaW5hdGUgc3BhY2UsIGJ1dCBwcmVzZXJ2aW5nCiAgICAgLy8gdGhlIGFjY3VtdWxhdGVkIGVy
cm9yIGZvciBzdWItcGl4ZWwgbGF5b3V0LgpAQCAtNDQwMiw4ICs0NDAzLDggQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ3JhcGhpY3MgY29udGV4dCB0byB0
aGUgc25hcHBpbmcgcG9zaXRpb24gdG8gYXZvaWQgb2ZmLWRldmljZS1waXhlbCBwb3NpdGluZy4K
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9y
VGhpc0xheWVyLndpZHRoKCksIGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllci5o
ZWlnaHQoKSk7CiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybS4KLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNvbmNhdENU
TSh0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuY29uY2F0Q1RNKHRyYW5z
Zm9ybS50b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGgg
dGhlIHJvb3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVk
U3VicGl4ZWxBY2N1bXVsYXRpb24gPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRl
dmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7CkBAIC00NDEyLDcgKzQ0MTMsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVj
dGlvbihjb250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxh
Z3MgcGFpbnRGbGFncykKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1
OTcsNyArNDU5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckZy
YWdtZW50cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAgICAgfQogfQogCi12b2lk
IFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5z
Zm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCiB7CiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50czsK
ICAgICBMYXlvdXRTaXplIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CkBAIC00NjI5
LDcgKzQ2MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRv
RnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYwogICAgIH0KIH0KIAotdm9pZCBS
ZW5kZXJMYXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21l
bnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0Nv
bnRleHQqIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
QmFja2dyb3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVu
dHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVu
Y3lMYXllckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnRE
aXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IGxvY2FsUGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVu
ZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CkBAIC00NjU3LDcgKzQ2
NTgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQq
IHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdy
b3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXll
ckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJl
Y3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGJvb2wgc2VsZWN0aW9uT25seSkKIHsK
QEAgLTQ3MTQsNyArNDcxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgICAgIHJl
c3RvcmVDbGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBjbGlw
cGVkUmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdt
ZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMYXllckZyYWdtZW50cyYgbGF5
ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBj
b25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwKICAgICBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIFBh
aW50QmVoYXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIpCiB7CiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8u
Y2xpcFRvRGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA+IDE7CkBAIC00NzM2LDcg
KzQ3MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNX
aXRoUGhhc2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgIH0KIH0KIAotdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxp
bmVGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50
aW5nSW5mbywKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCog
c3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewogICAgIGZvciAoY29uc3QgYXV0byYgZnJh
Z21lbnQgOiBsYXllckZyYWdtZW50cykgewpAQCAtNDc1MSw3ICs0NzUyLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVy
RnJhZ21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCiAgICAgUmVuZGVyT2JqZWN0
KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBm
cmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzcxLDcgKzQ3NzIsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxh
eWVyRnJhZ21lbnRzLCBHcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGls
ZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
IGxvY2FsUGFpbnRpbmdJbmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5n
TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFp
bnRpbmdJbmZvLAogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVy
KQogewogICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgewpA
QCAtNDc5MCw3ICs0NzkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5n
TWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXIKICAgICB9CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25z
dCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJh
Z21lbnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCiB7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBmcmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAgIGlmIChmcmFnbWVudC5i
YWNrZ3JvdW5kUmVjdC5pc0VtcHR5KCkpCkBAIC02OTE4LDcgKzY5MTksNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQogICAgIHJlbmRlcmVyKCkucmVwYWludCgpOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24s
IExheW91dFJlY3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWlu
dEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9uLCBMYXlvdXRS
ZWN0IHBhaW50RGlydHlSZWN0LCBMYXlvdXRQb2ludCBwYWludE9mZnNldCwgUGFpbnRCZWhhdmlv
ciBwYWludEJlaGF2aW9yLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBMYXlv
dXRSZWN0IHJlZ2lvbkNvbnRlbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlZ2lvbi0+bGF5
ZXJPd25lcigpKS5jb250ZW50Qm94UmVjdCgpOwogICAgIEN1cnJlbnRSZW5kZXJSZWdpb25NYWlu
dGFpbmVyIHJlZ2lvbk1haW50YWluZXIoKnJlZ2lvbik7CkBAIC02OTI2LDE3ICs2OTI3LDE3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgUmVuCiAKICAgICBMYXlvdXRTaXplIG1vdmVPZmZzZXQgPSBy
ZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uTG9jYXRpb24oKSAtIChwYWludE9mZnNldCArIHJlZ2lv
bkNvbnRlbnRCb3gubG9jYXRpb24oKSkgKyByZWdpb24tPmZyYWdtZW50Q29udGFpbmVyKCkuc2Ny
b2xsZWRDb250ZW50T2Zmc2V0KCk7CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0
ID0gcm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQobW92ZU9mZnNldCksIHJl
bmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0LT5z
YXZlKCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwg
LWFkanVzdGVkUGFpbnRPZmZzZXQueSgpKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250
ZXh0LnRyYW5zbGF0ZSgtYWRqdXN0ZWRQYWludE9mZnNldC54KCksIC1hZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSk7CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVsQWNjdW11bGF0aW9uID0gbW92ZU9m
ZnNldCAtIHRvTGF5b3V0U2l6ZShMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSk7CiAg
ICAgcGFpbnREaXJ0eVJlY3QubW92ZShtb3ZlT2Zmc2V0KTsKICAgICBwYWludChjb250ZXh0LCBw
YWludERpcnR5UmVjdCwgTGF5b3V0U2l6ZSgtc3VicGl4ZWxBY2N1bXVsYXRpb24ud2lkdGgoKSwg
LXN1YnBpeGVsQWNjdW11bGF0aW9uLmhlaWdodCgpKSwgcGFpbnRCZWhhdmlvciwgbnVsbHB0ciwg
cGFpbnRGbGFncyB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwogICAgIHJlZ2lvbi0+
cmVzdG9yZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKCk7Ci0gICAgY29udGV4dC0+cmVzdG9y
ZSgpOworICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWlu
dEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgZnJh
Z21lbnRzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFn
bWVudHMmIGZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsK
ICAgICBpZiAoIXJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmlu
ZGV4IGI2YTEyOGNhOGVmOTQ1ZDAwNmUxOGI3OTA5YWM5MTc1YzdjMmFiNDMuLmVkMWI0MDAyNDY3
NDgxN2IyN2U3YjQ3MTc2YTA2M2UxNmYyZTJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGl0VGVz
dE92ZXJmbG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50JiBsb2NhbFBv
aW50KTsKICAgICBJbnRTaXplIG9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50UG9pbnQm
IGFic29sdXRlUG9pbnQpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzID0gZmFsc2UpOwotICAgIHZvaWQgcGFp
bnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KTsKLSAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOwor
ICAgIHZvaWQgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBwYWludGluZ092ZXJsYXlD
b250cm9scyA9IGZhbHNlKTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAg
dm9pZCBwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0KCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHB1YmxpYzoKICAgICAvLyBw
YWludHMgdGhlIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZGFtYWdlIHJlY3QgZnJvbSBiYWNr
IHRvCiAgICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2
ZW50cyBieSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBm
cm9tIGZyb250IHRvIGJhY2suCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3Vt
dWxhdGlvbiA9IExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3Jt
YWwsCisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlvbiA9IExheW91
dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCiAgICAgICAgIFJl
bmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFBhaW50TGF5ZXJGbGFncyA9
IDApOwogICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmKTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAgdm9pZCBwYWludE92ZXJsYXlTY3Jv
bGxiYXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBh
aW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOwor
ICAgIHZvaWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRy
ZWVQYWludFJvb3QgPSBudWxscHRyKTsKIAotICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJ
bnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBM
YXlvdXRSZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3Jt
YWwsIFBhaW50TGF5ZXJGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJ
bnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBM
YXlvdXRSZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3Jt
YWwsIFBhaW50TGF5ZXJGbGFncyA9IDApOwogCiAgICAgc3RydWN0IENsaXBSZWN0c0NvbnRleHQg
ewogICAgICAgICBDbGlwUmVjdHNDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyKiBpblJvb3RMYXll
ciwgQ2xpcFJlY3RzVHlwZSBpbkNsaXBSZWN0c1R5cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Ny
b2xsYmFyU2l6ZSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCBpblJlc3BlY3RPdmVyZmxvd0Ns
aXAgPSBSZXNwZWN0T3ZlcmZsb3dDbGlwKQpAQCAtNzE3LDggKzcxNyw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21wdXRlUmVwYWludFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKICAgICB2
b2lkIGNsZWFyUmVwYWludFJlY3RzKCk7CiAKLSAgICB2b2lkIGNsaXBUb1JlY3QoY29uc3QgTGF5
ZXJQYWludGluZ0luZm8mLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBDbGlwUmVjdCYsIEJvcmRl
clJhZGl1c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKLSAgICB2
b2lkIHJlc3RvcmVDbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHBhaW50
RGlydHlSZWN0LCBjb25zdCBDbGlwUmVjdCYpOworICAgIHZvaWQgY2xpcFRvUmVjdChjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IENsaXBSZWN0JiwgQm9y
ZGVyUmFkaXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOworICAg
IHZvaWQgcmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcGFp
bnREaXJ0eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CiAKICAgICBib29sIHNob3VsZFJlcGFpbnRB
ZnRlckxheW91dCgpIGNvbnN0OwogCkBAIC03NjgsNDIgKzc2OCw0MiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpOwogCi0gICAg
Ym9vbCBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQqLCBib29s
JiBkaWRRdWFudGl6ZUZvbnRzKTsKKyAgICBib29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0
aW9uKEdyYXBoaWNzQ29udGV4dCYsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgUGF0
aCBjb21wdXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91
dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgV2luZFJ1bGUmKSBjb25zdDsKIAotICAgIGJvb2wg
c2V0dXBDbGlwUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYs
IGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRp
dmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBib29sIHNl
dHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZl
Qm91bmRzLCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKLSAgICBib29sIGhh
c0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCosIFBhaW50TGF5ZXJGbGFncykg
Y29uc3Q7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBz
ZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExh
eWVyRmxhZ3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiBy
b290UmVsYXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBl
ciosIEdyYXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYs
IExheWVyRnJhZ21lbnRzJik7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFw
aGljc0NvbnRleHQmLCBQYWludExheWVyRmxhZ3MpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4
dCYsIExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXpl
JiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiBy
b290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBhcHBseUZp
bHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFwaGljc0NvbnRleHQmIG9yaWdp
bmFsQ29udGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZyYWdtZW50cyYpOwogCi0gICAg
dm9pZCBwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiwgUGFpbnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxv
d3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVy
RmxhZ3MpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7Ci0g
ICAgdm9pZCBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6
ZSYgdHJhbnNsYXRpb25PZmZzZXQgPSBMYXlvdXRTaXplKCkpOwotICAgIHZvaWQgcGFpbnRMYXll
ckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPios
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZs
YWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRGaXhlZExheWVy
c0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYs
IFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0
aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXll
ckZsYWdzKTsKKyAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25z
dCBMYXlvdXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7CisgICAgdm9p
ZCBwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5k
ZXJMYXllcio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQ
YWludExheWVyRmxhZ3MpOwogCiAgICAgdm9pZCBjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21l
bnRzJiwgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgZGly
dHlSZWN0LAogICAgICAgICBQYWdpbmF0aW9uSW5jbHVzaW9uTW9kZSwKICAgICAgICAgQ2xpcFJl
Y3RzVHlwZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFy
U2l6ZVJlbGV2YW5jeSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCwgY29uc3QgTGF5b3V0U2l6
ZSYgb2Zmc2V0RnJvbVJvb3QsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QqIGxheWVyQm91bmRp
bmdCb3ggPSBudWxscHRyLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyA9IElnbm9y
ZVJvb3RPZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRlUGFpbnRpbmdJbmZvRm9y
RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWlu
dExheWVyRmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQqIHRy
YW5zcGFyZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29u
dGV4dCYgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0
JiB0cmFuc3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRp
bmdSb290Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRz
KGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0
KiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsCisgICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGlj
c0NvbnRleHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKICAgICAgICAgY29uc3QgTGF5b3V0
UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBh
aW50aW5nUm9vdEZvclJlbmRlcmVyLAogICAgICAgICBib29sIHNlbGVjdGlvbk9ubHkpOwotICAg
IHZvaWQgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UsIGNv
bnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRl
cmVyKTsKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdt
ZW50cyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRC
ZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9p
ZCBwYWludE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYpOwotICAgIHZvaWQg
cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9v
dEZvclJlbmRlcmVyKTsKLSAgICB2b2lkIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVu
dHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwotICAg
IHZvaWQgcGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBw
YWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSwgY29uc3QgTGF5
ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYs
IFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwor
ICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9y
LCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50
T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7CisgICAgdm9pZCBwYWludE1h
c2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVu
ZGVyZXIpOworICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25z
dCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJ
bmZvJiwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CisgICAgdm9pZCBw
YWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKIAogICAgIFJlbmRlckxheWVy
KiB0cmFuc3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKLSAgICB2b2lkIGJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29u
c3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KTsKKyAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXJzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5
b3V0UmVjdCYgZGlydHlSZWN0KTsKIAogICAgIFJlbmRlckxheWVyKiBoaXRUZXN0TGF5ZXIoUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxheWVyLCBjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LAogICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgYm9v
bCBhcHBsaWVkVHJhbnNmb3JtLApAQCAtOTM4LDcgKzkzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCB1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzaXplclN0eWxl
KCk7CiAKLSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCk7CisgICAgdm9pZCBkcmF3UGxh
dGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcmVz
aXplckNvcm5lclJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVQYWdpbmF0aW9uKCk7CiAKQEAgLTk4
Miw3ICs5ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiwKICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
KiwgZG91YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsCiAgICAgICAgIGRvdWJsZSogek9mZnNl
dCwgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0
YXRlLCBib29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKLSAgICB2b2lkIHBhaW50Rmxvd1RocmVh
ZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZv
aWQgcGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVu
dHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5
ZXJGbGFncyk7CiAgICAgYm9vbCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVy
KENsaXBSZWN0cyYpIGNvbnN0OwogCiAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGN1cnJl
bnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA1MDY0YzRmOGNmODZlZjNlNzBh
M2VlNzdkYjIyYzEyNTY2ZWI0N2Y5Li4zOTA0MWE3OTk1ZThkNmY2ZjE5ZWExN2Y2NDEzM2M5ZmVl
MzgxMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNl
dENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBH
cmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCit2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGNvbnN0IElu
dFJlY3QmIHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9mIHJvb3RMYXllci4KICAg
ICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNl
IHBhaW50aW5nUGhhc2UpCiB7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVy
LCBHcmFwaAogICAgICAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0
KGNvbXBvc2l0ZWRCb3VuZHNJbmNsdWRpbmdNYXJnaW4oKSkpOwogCiAgICAgICAgIC8vIFdlIGhh
dmUgdG8gdXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNlIGJvdGgg
bWV0aG9kcyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgotICAgICAgICBwYWludElu
dG9MYXllcihncmFwaGljc0xheWVyLCAmY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9y
Tm9ybWFsLCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NM
YXllciwgY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1Bo
YXNlKTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KCZyZW5k
ZXJlcigpLCBkaXJ0eVJlY3QpOwogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXll
ckZvckhvcml6b250YWxTY3JvbGxiYXIoKSkgewpAQCAtMjM1NCw4ICsyMzU0LDggQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3Jh
cGhpY3NMYXllciwgR3JhcGgKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5l
ckFuZFJlc2l6ZXIueCgpLCAtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci55KCkpOwogICAgICAgICBM
YXlvdXRSZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91dFJlY3QoY2xpcCk7CiAgICAgICAgIHRy
YW5zZm9ybWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKTsK
LSAgICAgICAgbV9vd25pbmdMYXllci5wYWludFNjcm9sbENvcm5lcigmY29udGV4dCwgSW50UG9p
bnQoKSwgc25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7Ci0gICAgICAgIG1fb3duaW5n
TGF5ZXIucGFpbnRSZXNpemVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXAp
OworICAgICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIEludFBv
aW50KCksIHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOworICAgICAgICBtX293bmlu
Z0xheWVyLnBhaW50UmVzaXplcihjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXAp
OwogICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDI0ZWIy
YmJkYmIxNDIxNWYzMjQwZTk3ZjUzZTA1ZGU5ZWI0ODY0OTEuLmQ2NmZiODIxNTQ4MWI1OTVlZWNh
MTkzM2IyYmViZGYzNDU2YjAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aGFzVGlsZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gKG1fY2hpbGRD
b250YWlubWVudExheWVyICYmIG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpOyB9CiAgICAgR3JhcGhp
Y3NMYXllciogdGlsZUNhY2hlRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV91c2lu
Z1RpbGVkQ2FjaGVMYXllciA/IG1fY2hpbGRDb250YWlubWVudExheWVyLmdldCgpIDogbnVsbHB0
cjsgfQogCi0gICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZp
b3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVy
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBw
YWludERpcnR5UmVjdCwgUGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2Up
OwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB1cGRhdGVHZW9tZXRyeS4KICAgICB2b2lk
IGFkanVzdEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3Qm
IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGlu
Z0FuY2VzdG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggODk1NTZlMzFjM2ExM2ZhNTc0MzRkNzhjNmUyZjE4
Y2EyMzRkNWY4ZC4uNmY0NWU5Njc4NWVmYzNiZjAxOTYzNjZjZmQwYTJmNzZmZmMwZmZjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTI4NjYsNyArMjg2Niw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29u
dGV4dC50cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QueCgpLCAtc2Nyb2xsYmFyUmVjdC55KCkpOwog
ICAgIEludFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICB0cmFuc2Zvcm1lZENsaXAu
bW92ZUJ5KHNjcm9sbGJhclJlY3QubG9jYXRpb24oKSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWludCgm
Y29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKKyAgICBzY3JvbGxiYXItPnBhaW50KGNvbnRleHQs
IHRyYW5zZm9ybWVkQ2xpcCk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKQEAgLTI4ODMs
NyArMjg4Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKC1zY3JvbGxDb3JuZXIueCgpLCAtc2Nyb2xsQ29ybmVyLnkoKSk7CiAgICAgICAgIElu
dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRp
b25lZEl0ZW1zOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lci5s
b2NhdGlvbigpKTsKLSAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBhaW50U2Nyb2xs
Q29ybmVyKCZjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgICAgICBtX3JlbmRlclZpZXcu
ZnJhbWVWaWV3KCkucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsK
ICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDQwZjVlMzJjZjUwMmNiYmRlMGJmNTNjNDBj
MzNhMjQxZjQ2NWEzNzcuLmUzY2I3OTZiZmY0NzM2ZjQ3ZGM2YTExNjZlOGU0NDJlYjBmNDYwN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0NSw3
ICszNDUsNyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICAgICAgbV92QmFyLT53
aWR0aCgpLAogICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0
b20oKSkpOwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAg
ICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRJ
bmZvLnJlY3QpKTsKKyAgICAgICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBz
bmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogICAgIH0KIH0KIApAQCAtMzk3LDcgKzM5
Nyw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgfQogCiAgICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludEluZm8uY29udGV4
dC0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgY29sb3JTcGFjZSk7CisgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKIAogICAgIFRleHRS
dW4gdGV4dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0
eWxlLmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1
ZSwgVGV4dFJ1bjo6Tm9Sb3VuZGluZyk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHls
ZSgpLmZvbnRDYXNjYWRlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94
OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYKICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBpdGVtIHRleHQKLSAgICBwYWludEluZm8u
Y29udGV4dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCByb3VuZGVkSW50UG9pbnQo
ci5sb2NhdGlvbigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3QmlkaVRleHQoaXRl
bUZvbnQsIHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChyLmxvY2F0aW9uKCkpKTsKIH0KIAogdm9p
ZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGludCBsaXN0SW5kZXgpCkBAIC00MzUs
NyArNDM1LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBj
b2xvclNwYWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBp
dGVtUmVjdCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAg
ICAgICAgIGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1S
ZWN0KSwgYmFja0NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5maWxsUmVjdChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29sb3JTcGFj
ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKaW5kZXggYTg1NWE0OGU1Mjg4MDhiMjRjZjk1YzgxNzIwZTBjOTkxYzRiNTg2MC4u
OGJhMGQ2ZDMyMTRmNGRjNTZhY2IwMTQ4NjQ2MTg2NDA0ZjdlNWFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTE5NCwxNCArMTE5NCwx
NCBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEZsb2F0UmVjdCBtYXJrZXIgPSBnZXRS
ZWxhdGl2ZU1hcmtlclJlY3QoKTsKICAgICBtYXJrZXIubW92ZUJ5KGJveE9yaWdpbik7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgaWYgKGlz
SW1hZ2UoKSkgewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhp
cywgbWFya2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOwor
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6
ZSgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CiAgICAgICAgIGlmIChz
ZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJl
Y3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5t
b3ZlQnkoYm94T3JpZ2luKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJ
bnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBz
dHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBw
ZWRJbnRSZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
LCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTEyMDksMjYgKzEyMDksMjYgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBp
ZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIExheW91dFJl
Y3Qgc2VsUmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxSZWN0Lm1vdmVC
eShib3hPcmlnaW4pOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChz
ZWxSZWN0KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNl
bFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0
U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cygxLjBmKTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAgY29udGV4dC5zZXRGaWxsQ29s
b3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5
cGUgPSBzdHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAg
ICAgY2FzZSBEaXNjOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsK
KyAgICAgICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdFbGxpcHNlKG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
ICAgICAgICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KG1h
cmtlcik7CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEzMTcsMjIgKzEzMTcsMjIgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBj
b25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKICAgICBUZXh0
UnVuIHRleHRSdW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBt
X3RleHQsIHN0eWxlKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBpZiAoIXN0eWxlKCkuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSkgewogICAgICAgICBtYXJrZXIubW92ZUJ5KC1ib3hPcmlnaW4pOwogICAgICAg
ICBtYXJrZXIgPSBtYXJrZXIudHJhbnNwb3NlZFJlY3QoKTsKICAgICAgICAgbWFya2VyLm1vdmVC
eShGbG9hdFBvaW50KGJveC54KCksIGJveC55KCkgLSBsb2dpY2FsSGVpZ2h0KCkpKTsKICAgICAg
ICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShtYXJrZXIu
eCgpLCBtYXJrZXIubWF4WSgpKTsKLSAgICAgICAgY29udGV4dC0+cm90YXRlKHN0YXRpY19jYXN0
PGZsb2F0PihkZWcycmFkKDkwLikpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1tYXJr
ZXIueCgpLCAtbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG1hcmtl
ci54KCksIG1hcmtlci5tYXhZKCkpOworICAgICAgICBjb250ZXh0LnJvdGF0ZShzdGF0aWNfY2Fz
dDxmbG9hdD4oZGVnMnJhZCg5MC4pKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1tYXJr
ZXIueCgpLCAtbWFya2VyLm1heFkoKSk7CiAgICAgfQogCiAgICAgRmxvYXRQb2ludCB0ZXh0T3Jp
Z2luID0gRmxvYXRQb2ludChtYXJrZXIueCgpLCBtYXJrZXIueSgpICsgc3R5bGUoKS5mb250TWV0
cmljcygpLmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQb2ludFRvRGV2aWNlUGl4
ZWxzKExheW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCksIHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKIAogICAgIGlmICh0eXBlID09
IEFzdGVyaXNrcyB8fCB0eXBlID09IEZvb3Rub3RlcykKLSAgICAgICAgY29udGV4dC0+ZHJhd1Rl
eHQoZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQo
Zm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IFVD
aGFyIHN1ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsK
IApAQCAtMTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAg
fQogICAgICAgICB0ZXh0UnVuLnNldFRleHQoU3RyaW5nVmlldyh0b0RyYXcpKTsKIAotICAgICAg
ICBjb250ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAg
Y29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcApp
bmRleCAyMTcxMzg4ZWFmZThhOGMyM2JkMzE1OTZhYzBjZWU5NDgyOGI4YjFhLi5iNTJhNmM5YjRj
ZGRiNjkwMTMwY2ZiOTFiZTdmOGRmMmI2NGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCkBAIC05MSw5ICs5MSw5IEBAIHN0YXRp
YyBGbG9hdFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQoY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBjCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAg
IHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7
CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8g
em9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21l
ZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54
KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwog
ICAgIH0KICAgICByZXR1cm4gdW56b29tZWRSZWN0OwogfQpAQCAtMTI4LDc2ICsxMjgsNzYgQEAg
dm9pZCBSZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAKIGJvb2wgUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNv
bnRyb2xzUGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBwYXJ0LCBjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8u
Y29udGV4dCgpKTsKIAogICAgIHN3aXRjaCAocGFydCkgewogICAgIGNhc2UgTWVkaWFFbnRlckZ1
bGxzY3JlZW5CdXR0b246CiAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uOgogICAg
ICAgICBpZiAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRp
Y19jYXN0PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7
CiAgICAgICAgICAgICBib29sIGVudGVyQnV0dG9uID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1l
ZGlhRW50ZXJGdWxsc2NyZWVuQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
ZW50ZXJCdXR0b24gPyBXS01lZGlhVUlQYXJ0RnVsbHNjcmVlbkJ1dHRvbiA6IFdLTWVkaWFVSVBh
cnRFeGl0RnVsbHNjcmVlbkJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFy
dChlbnRlckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tNZWRpYVVJ
UGFydEV4aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbjoKICAgICBjYXNlIE1lZGlh
SGlkZUNsb3NlZENhcHRpb25zQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KiBidG4gPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRy
b2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAg
ICAgICAgIGJvb2wgY2FwdGlvbnNWaXNpYmxlID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlh
SGlkZUNsb3NlZENhcHRpb25zQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
Y2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6
IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAg
d2tEcmF3TWVkaWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9z
ZWRDYXB0aW9uc0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24s
IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRl
KG8pKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRv
bjoKICAgICBjYXNlIE1lZGlhVW5NdXRlQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9s
TXV0ZUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbE11dGVCdXR0
b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGF1ZGlvRW5hYmxlZCA9
IGJ0bi0+ZGlzcGxheVR5cGUoKSA9PSBNZWRpYU11dGVCdXR0b247Ci0gICAgICAgICAgICB3a0Ry
YXdNZWRpYVVJUGFydChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdL
TWVkaWFVSVBhcnRVbk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBh
cnQoYXVkaW9FbmFibGVkID8gV0tNZWRpYVVJUGFydE11dGVCdXR0b24gOiBXS01lZGlhVUlQYXJ0
VW5NdXRlQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVBhdXNlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFQbGF5QnV0dG9uOgogICAgICAgICBpZiAo
TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29u
dHJvbFBsYXlCdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGNh
blBsYXkgPSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFQbGF5QnV0dG9uOwotICAgICAgICAg
ICAgd2tEcmF3TWVkaWFVSVBhcnQoY2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDog
V0tNZWRpYVVJUGFydFBhdXNlQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQ
YXJ0KGNhblBsYXkgPyBXS01lZGlhVUlQYXJ0UGxheUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRQYXVz
ZUJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJt
aW5lU3RhdGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFS
ZXdpbmRCdXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRSZXdp
bmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJt
aW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0UmV3
aW5kQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRl
cm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXR1cm5Ub1Jl
YWx0aW1lQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vl
a1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0U2Vla1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVNlZWtCYWNrQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVNlZWtGb3J3YXJkQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChX
S01lZGlhVUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVNsaWRlcjogewogICAgICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50ID0gcGFyZW50TWVkaWFFbGVtZW50KG8pKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3Qg
dW56b29tZWRSZWN0ID0gZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQobywg
cGFpbnRJbmZvLCByKTsKLSAgICAgICAgICAgIHdrRHJhd01lZGlhU2xpZGVyVHJhY2socGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVu
dC0+cGVyY2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1l
bnQtPmN1cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3Rh
dGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayhwYWludEluZm8uY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykp
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1lZGlhU2xpZGVy
VGh1bWI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRUaW1lbGluZVNs
aWRlclRodW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVy
bWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRp
bWVsaW5lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVZv
bHVtZVNsaWRlckNvbnRhaW5lcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJ
UGFydFZvbHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXJDb250YWluZXIsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQo
V0tNZWRpYVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRWb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVZvbHVtZVNsaWRlclRodW1iOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFy
dChXS01lZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXI6Ci0gICAgICAgIHdrRHJhd01lZGlh
VUlQYXJ0KFdLTWVkaWFVSVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAg
d2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBh
aW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8p
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJU
aHVtYjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5W
b2x1bWVTbGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFV
SVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxh
dGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFy
dChXS01lZGlhVUlQYXJ0QmFja2dyb3VuZCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWVkaWFDdXJyZW50VGltZURpc3BsYXk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAK
aW5kZXggN2UxZmQ1YjRjNGY2N2Y4MzYxNzZhMjVkMTFkNDk5OWM3ZWY3OGIyYi4uNTljNjNjMGEw
YmMyZjVkMTJiZjFjMjRhMjVjNzY0OGY2NThkMjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAg
TGF5b3V0UmVjdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Zmxvd1RocmVhZFBvcnRpb25PdmVyZmxv
d1JlY3QoY29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFp
bnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhy
ZWFkID0gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG8KICAgICBpZiAoY29sQ291bnQgPD0gMSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8u
Y29udGV4dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWlu
dEluZm8uY29udGV4dCgpKTsKIAogICAgIGlmIChmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzSW5s
aW5lKCkpIHsKICAgICAgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpIF4gZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CkBAIC02
MTcsNyArNjE3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxl
cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZz
ZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBy
dWxlTG9naWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7CiAgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBydWxlQm90dG9tID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IHJ1bGVUb3AgKyBjb250ZW50SGVpZ2h0KCkgOiBydWxlVG9wICsgcnVsZVRoaWNrbmVzczsKICAg
ICAgICAgICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gc25hcHBlZEludFJl
Y3QocnVsZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCAtIHJ1bGVMZWZ0LCBydWxlQm90dG9tIC0g
cnVsZVRvcCk7Ci0gICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8u
Y29udGV4dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0
eWxlLCAwLCAwLCBhbnRpYWxpYXMpOworICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lk
ZShwYWludEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVs
ZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCA9IGN1cnJMb2dpY2FsTGVmdE9m
ZnNldDsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWlu
dENvbHVtblJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgY29sQ291bnQ7IGkrKykgewogICAgICAgICAgICAg
cnVsZVJlY3QubW92ZShzdGVwKTsKICAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVs
ZVJlY3QgPSBzbmFwcGVkSW50UmVjdChydWxlUmVjdCk7Ci0gICAgICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoKnBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lk
ZSwgcnVsZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICBk
cmF3TGluZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcGl4ZWxTbmFwcGVkUnVsZVJl
Y3QsIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cAppbmRleCA5NzllOWNmZjczYzJiZWQ5ZDA5NzM2YjhiYmM2YTE3NzBmZDMyNDdkLi5jODA1MWQ5
MWEzZmExMmFlYWJhYWFlNmJhYzU2NGE5ZWZlNjYyMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjphZGRQREZVUkxSZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gZG93bmNhc3Q8RWxlbWVu
dD4oKm5vZGUpLmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChu
b2RlLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0
KSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRVUkxGb3JSZWN0KG5vZGUtPmRvY3VtZW50
KCkuY29tcGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsYWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCmluZGV4IDhjOThiYmE4NTQ2MzYwZmEwMmVkNWNiNWFhNzdlMjU0YTBhZWYyOWQuLmZkMjA1
MDRlYzNkNWNjZTgxYWI2MTRhYTYyZDU1YmQ3MDcxNDM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc4LDEwICsxNzgsMTAgQEAgdm9pZCBS
ZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIGNvbXBsZXRlbHlDbGlwcGVkT3V0ID0gdHJ1
ZTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZl
IGEgYm9yZGVyIHJhZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBj
b250ZW50IHRoYXQgZ2V0cyBwYWludGVkLgotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNhdmUoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAg
ICAgICAgRmxvYXRSb3VuZGVkUmVjdCByb3VuZGVkSW5uZXJSZWN0ID0gRmxvYXRSb3VuZGVkUmVj
dChzdHlsZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsCiAgICAgICAgICAg
ICAgICAgcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdCb3R0b20oKSArIGJvcmRl
ckJvdHRvbSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBwYWRkaW5nUmlnaHQoKSAr
IGJvcmRlclJpZ2h0KCksIHRydWUsIHRydWUpKTsKLSAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5u
ZXJSZWN0KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOwor
ICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFp
bnRSZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg5LDcg
KzE4OSw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIHBhaW50UmVwbGFjZWQo
cGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAogICAgICAgICBpZiAoc3R5bGUoKS5o
YXNCb3JkZXJSYWRpdXMoKSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3Jl
KCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAg
ICAgICAgIAogICAgIC8vIFRoZSBzZWxlY3Rpb24gdGludCBuZXZlciBnZXRzIGNsaXBwZWQgYnkg
Ym9yZGVyLXJhZGl1cyByb3VuZGluZywgc2luY2Ugd2Ugd2FudCBpdCB0byBydW4gcmlnaHQgdXAg
dG8gdGhlIGVkZ2VzIG9mCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6
cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNl
dCkKICAgICBpZiAoZHJhd1NlbGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25QYWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0
aW9uUGFpbnRpbmdSZWN0Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5n
UmVjdCksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2Vs
ZWN0aW9uUGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZXBsaWNhLmNwcAppbmRleCAzNzcyMGZlMzg5YzE5MzZjOGRlMjY1ZGM2ZWM0YTFmYmNkMjA3
MzNmLi42MWQwYTE3YjM4YTE5OGQyZmNkZjBlMDZkYWI0MjdlMjYyMTJkOWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZv
aWQgUmVuZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgUmVuZGVyTGF5ZXIqIHJvb3RQYWludGluZ0xh
eWVyID0gbGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJlbnQoKSA6IGxheWVyKCkt
PmVuY2xvc2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKICAgICAgICAgUmVuZGVyTGF5ZXI6Okxh
eWVyUGFpbnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFpbnRpbmdMYXllciwgcGFpbnRJbmZv
LnJlY3QsIFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNpemUoKSwgMCk7CiAgICAgICAgIFJl
bmRlckxheWVyOjpQYWludExheWVyRmxhZ3MgZmxhZ3MgPSBSZW5kZXJMYXllcjo6UGFpbnRMYXll
ckhhdmVUcmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zv
cm0gfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyB8IFJlbmRlckxh
eWVyOjpQYWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uOwotICAgICAgICBsYXllcigpLT5wYXJl
bnQoKS0+cGFpbnRMYXllcihwYWludEluZm8uY29udGV4dCwgcGFpbnRpbmdJbmZvLCBmbGFncyk7
CisgICAgICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0
KCksIHBhaW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VNYXNrKQogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHAKaW5kZXggYzM2NDEwZDU3MjA1MjJlMWRiOWYyNGY4MDA4OTM2MDgwNTU5OTg0Ny4u
Mjc3ZGFjOGRmYTRjYzNhMzNlZWFkZDI3ZTFmMWU4MzYyYjNjNjAyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTEwMiw5ICsxMDIsOSBAQCB2
b2lkIFJlbmRlclNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJQ
YXJ0cygpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJTY3JvbGxi
YXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgeworICAg
IGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgdXBkYXRlU2Ny
b2xsYmFyUGFydHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1Miw3ICsyNTIsNyBA
QCB2b2lkIFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydChTY3JvbGxiYXJQYXJ0
IHBhcnRUeXBlKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQoR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcGFydFJlbmRl
cmVyID0gbV9wYXJ0cy5nZXQocGFydFR5cGUpOwogICAgIGlmICghcGFydFJlbmRlcmVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGY2Yzg1Yzk3N2Mw
YjRiZmQzZWZiNjk4YWRiYmFjZGQwMDA3OTdkNDYuLmYyN2VjMDNiYmIwOTA3ODBkNDJlMzQ3YjZj
MjNhYTRkNmQ4YzA0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBvd25pbmdS
ZW5kZXJlcigpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludFBhcnQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyUGFydCwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRQYXJ0KEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIEludFJl
Y3QgYnV0dG9uUmVjdChTY3JvbGxiYXJQYXJ0KTsKICAgICBJbnRSZWN0IHRyYWNrUmVjdChpbnQg
c3RhcnRMZW5ndGgsIGludCBlbmRMZW5ndGgpOwpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVk
UGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc3Nl
ZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWQ3MWE4OWIxY2NkOTg1ZDI2M2Zj
MmUyYTBlNTM4Nzc4OTI1MzkwMy4uMGNiZWMwZmM5MzRmMTZlZGVmMTQ1MGQ4NTA0NzQwNTJhN2Rm
MDk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcApAQCAtMTU1LDIzICsxNTUsMjMgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpp
bWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWMKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWlu
dEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gTWFr
ZSBzdXJlIG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0LgogICAgIHNldExvY2F0aW9uKHJl
Y3QubG9jYXRpb24oKSAtIHRvTGF5b3V0U2l6ZShwYWludE9mZnNldCkpOwogICAgIHNldFdpZHRo
KHJlY3Qud2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpOwogCi0gICAgaWYg
KGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZSgpLm9wYWNpdHko
KSkKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUo
KS5vcGFjaXR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBSZW5k
ZXJMYXllcnMgZm9yIHNjcm9sbGJhciBwYXJ0cywgc28gd2UgbmVlZCB0byBoYW5kbGUgb3BhY2l0
eSBoZXJlLgogICAgIC8vIE9wYWNpdHkgZm9yIFNjcm9sbGJhckJHUGFydCBpcyBoYW5kbGVkIGJ5
IFJlbmRlclNjcm9sbGJhclRoZW1lOjp3aWxsUGFpbnRTY3JvbGxiYXIoKS4KICAgICBib29sIG5l
ZWRzVHJhbnNwYXJlbmN5TGF5ZXIgPSBtX3BhcnQgIT0gU2Nyb2xsYmFyQkdQYXJ0ICYmIHN0eWxl
KCkub3BhY2l0eSgpIDwgMTsKICAgICBpZiAobmVlZHNUcmFuc3BhcmVuY3lMYXllcikgewotICAg
ICAgICBncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5j
bGlwKHJlY3QpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoc3R5bGUoKS5vcGFjaXR5KCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5bGUoKS5vcGFjaXR5KCkpOwogICAgIH0KICAg
ICAKICAgICAvLyBOb3cgZG8gdGhlIHBhaW50LgpAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QKICAgICBwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAg
IGlmIChuZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3Jl
KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggN2E3MWZhNzM5Zjhk
ODUxMWM0OTRhMDA0YTQzOTMzNzJmMTM0MzFjYS4uODY1OTkxNDJhOWZjYmFlMmM1OGU4NWIwZDBk
YjE4MjdkYWQ5YWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgTGF5b3V0UmVjdCYpOwogCiAgICAgLy8gU2Nyb2xsYmFyIHBhcnRzIG5lZWRzIHRvIGJl
IHJlbmRlcmVkIGF0IGRldmljZSBwaXhlbCBib3VuZGFyaWVzLgogICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZSht
X21hcmdpbkJveC50b3AoKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gudG9wKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDA5
ZDk2NTIxOGU4NzVlZDY3NGE0YmNhMzcyZjhiOWI1ZWEyODM3OGEuLmRiNTI4OGZkYzVlNTUyNmE0
M2YwYWJlZmI5N2Q5NmNmZDRkMDg2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI1LDM1ICsxMjUsMzUgQEAgdm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBTY3JvbGxiYXIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpw
YWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0g
ICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9s
bGJhciYgc2Nyb2xsYmFyKQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xs
YmFyKS5wYWludFBhcnQoJmNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1l
UmVjdCgpKTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQ
YXJ0KGNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgpKTsKIH0K
IAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQ
YXJ0KCZjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Ny
b2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7
CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CisgICAgZG93bmNh
c3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCBy
ZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJh
cj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJlY3QpOworICAgIGRvd25j
YXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgcGFydCwg
cmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQ
YXJ0KCZjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9s
bGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0K
IAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5k
ZXggNDdmMGY4MDMzZWIwOTRjMDRkMTk0M2FlZjY3ODQxZWY5NjQxODIwOC4uZjdlNDE5ZDA1YTFi
NDMxNDc3Y2Q1NTUyZjhjNmRjMzBkYzllOWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNj
cm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxi
YXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZl
bnQpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCA0NTVmY2U4OTI5ZDA1ZjJlYTEwMTNmNzNlN2ZlM2Vi
YjdkOTQ5OThlLi5iZDFhOWQ1MWQyNWIzZDg5YzQxYTA5MTAyOWE4OTM0ZTFkZDY0NTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpw
YWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlm
ICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZShjV2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9
IGxvY2F0aW9uKCkgKyBwYWludE9mZnNldDsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRl
clNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3Jp
ZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdl
T3JpZW50YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3Jp
ZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0
LmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGluZykpOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46Omdl
dEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3Ip
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBjNzBh
NGQxMjAwN2E4NDI3YzI5YzI1NDYyNTdkMzVhMzA1NzMyMGE2Li40ODU1OTVhMWI4MDY0YTYzMmY5
Zjg1MzQ0ZDljZTFmOGQ2Mzk2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKQEAgLTc0OSw3ICs3NDksNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcAogICAg
IExheW91dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBzdWJ0cmFjdENhcHRp
b25SZWN0KHJlY3QpOwogCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRh
bmNlID0gZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1p
bmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYg
KCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5sb2NhdGlvbigpLCBi
bGVlZEF2b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcmVjdCwg
c3R5bGUoKSwgTm9ybWFsKTsKICAgICBwYWludEJhY2tncm91bmQocGFpbnRJbmZvLCByZWN0LCBi
bGVlZEF2b2lkYW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCmluZGV4IDE3ZTVhYzQ1NDBiNDczYmFlNmZhNmY5YjU3NTM2ZTRjNDM0ZDg2NTcuLjEx
NWZmYzc5NzQ4NmI3OWE5ZmNjNDhjOGI3YzA4NjljNmM3Y2Q4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjAxLDggKzEyMDEsOCBAQCB2
b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChwYWludFJlY3QubWF4WSgpICsgdGFibGUo
KS0+b3V0ZXJCb3JkZXJCb3R0b20oKSA8PSBsb2NhbFJlcGFpbnRSZWN0LnkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dDsKLSAgICBpZiAoIXRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpIHx8IGdy
YXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYg
Z3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoIXRhYmxlKCkt
PmN1cnJlbnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZUZvckNl
bGxGbG93ID0gdGhpcy0+c3R5bGVGb3JDZWxsRmxvdygpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAg
dm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAKICAgICBmb3IgKENvbGxhcHNlZEJvcmRlciog
Ym9yZGVyID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7IGJvcmRlcjsgYm9yZGVyID0gYm9yZGVycy5u
ZXh0Qm9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJvcmRlci0+Ym9yZGVyVmFsdWUuaXNTYW1lSWdu
b3JpbmdDb2xvcigqdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkpKQotICAgICAgICAgICAg
ZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50
KGJvcmRlci0+eDEsIGJvcmRlci0+eTEpLCBGbG9hdFBvaW50KGJvcmRlci0+eDIsIGJvcmRlci0+
eTIpKSwgYm9yZGVyLT5zaWRlLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBo
aWNzQ29udGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm9yZGVyLT54MSwgYm9yZGVyLT55MSks
IEZsb2F0UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55MikpLCBib3JkZXItPnNpZGUsCiAgICAg
ICAgICAgICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAw
LCAwLCBhbnRpYWxpYXMpOwogICAgIH0KIH0KQEAgLTEyNzUsMTEgKzEyNzUsMTEgQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXkKICAgICAgICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVz
ZSB0aGUgYmFja2dyb3VuZCB3b3VsZCBwYWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJv
cmRlcnMgb3RoZXJ3aXNlLiAgVGhpcyBvbmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgog
ICAgICAgICBib29sIHNob3VsZENsaXAgPSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYm
IChiYWNrZ3JvdW5kT2JqZWN0ID09IHRoaXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQo
KSkgJiYgdGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpOwotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBzaG91bGRDbGlwKTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCksIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRl
ckxlZnQoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSwKICAgICAgICAg
ICAgICAgICB3aWR0aCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKSwgaGVpZ2h0KCkg
LSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcChjbGlwUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50
SW5mbywgYywgYmdMYXllciwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzbmFwcGVk
SW50UmVjdChmcmFtZVJlY3QoKSkuc2l6ZSgpKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9z
aXRlU291cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBjOTEwYWI2ZjZhYjA2
OWJhNGI2MzI1MjI0ZmVhMDAxMmM0NmY3ZTUzLi4zZTlkOGE1ZmIxY2FiYzkxMGQyODRkYTE1ZjNk
ZDcwZTRjNmFjOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rp
b246OnBhaW50Um93R3JvdXBCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGJvb2wg
YW4KICAgICByZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAgICAgaWYgKHJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludElu
Zm8uY29udGV4dCwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm9y
ZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICBkcmF3TGluZUZv
ckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoYm9yZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFz
KTsKIH0KIAogaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6b2Zmc2V0TGVmdEZvclJvd0dyb3VwQm9y
ZGVyKFJlbmRlclRhYmxlQ2VsbCogY2VsbCwgY29uc3QgTGF5b3V0UmVjdCYgcm93R3JvdXBSZWN0
LCB1bnNpZ25lZCByb3cpCkBAIC0xMTY5LDExICsxMTY5LDExIEBAIHZvaWQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpwYWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZChjb25zdCBQYWludEluZm8mIHBh
aW50SW5mCiB7CiAgICAgaWYgKHRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpLT5wcmVjZWRl
bmNlKCkgPiBCUk9XR1JPVVApCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRB
bnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBz
aG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCgpKTsKICAgICBMYXlvdXRSZWN0
IHJvd0dyb3VwUmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgcm93
R3JvdXBSZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQob3V0ZXJCb3JkZXJMZWZ0KCZzdHlsZSksIChi
b3JkZXJTaWRlID09IEJTUmlnaHQpID8gMCA6IG91dGVyQm9yZGVyVG9wKCZzdHlsZSkpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggN2EyYjk3NmNkNjk5
MmJlNTJiNjAwZjYwYmRiNDA2ZjVmZTY0YzEwYy4uZGNhYzRmYTczMTZlYzM1YjBlNjFiYzIwMGQ4
MjIxZWE2MDIzZTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CkBAIC0yNjcsMTIgKzI2NywxMiBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5k
ZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIC8vIElm
IHBhaW50aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJlbid0IHVwZGF0aW5nIGNvbnRyb2wgdGlu
dHMsIHRoZW4ganVzdCBiYWlsLgogICAgIC8vIElmIHdlIGFyZSB1cGRhdGluZyBjb250cm9sIHRp
bnRzLCBqdXN0IHNjaGVkdWxlIGEgcmVwYWludCBpZiB0aGUgdGhlbWUgc3VwcG9ydHMgdGludGlu
ZwogICAgIC8vIGZvciB0aGF0IGNvbnRyb2wuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkudXBk
YXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICBpZiAoY29udHJvbFN1cHBvcnRzVGludHMo
Ym94KSkKICAgICAgICAgICAgIGJveC5yZXBhaW50KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFy
YW5jZSgpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0
IFJlbmRlckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAg
Y2FzZSBCdXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAg
dXBkYXRlQ29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAg
ICAgIG1fdGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhp
Y3NDb250ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBi
b3guc3R5bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgbV90aGVtZS0+cGFpbnQo
cGFydCwgY29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFw
cGVkUmVjdCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZp
ZXcoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQxMSw3ICs0MTEsNyBA
QCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0
YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogCiBib29sIFJlbmRlclRoZW1lOjpwYWludEJvcmRl
ck9ubHkoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
NDY1LDcgKzQ2NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seShjb25zdCBS
ZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluCiAKIGJvb2wgUmVuZGVyVGhl
bWU6OnBhaW50RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50
UmVjdCBpbnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7CkBAIC0xMDUz
LDggKzEwNTMsOCBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICB0aWNrUmVnaW9u
V2lkdGggPSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0K
ICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRl
eHQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVt
KGkpOyBpKyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkp
OwogICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhU
TUxPcHRpb25FbGVtZW50Pigqbm9kZSk7CkBAIC0xMDY5LDcgKzEwNjksNyBAQCB2b2lkIFJlbmRl
clRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFp
bnRJbmZvJiBwYWludAogICAgICAgICAgICAgdGlja1JlY3Quc2V0WCh0aWNrUG9zaXRpb24pOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRZKHRpY2tQb3NpdGlvbik7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aWNrUmVjdCk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwogICAgIH0KIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggZDBmY2Fk
Njk2MjM0YjNkZGVlNzI0NWNkOTg0ZGIwZTQ2OGFjNzlhYi4uYmFjMWQ2ZjIxMDBhNTk1N2YzMTAw
MzRmOTM3NWM5Y2E2NDY5ZjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVFZmwuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFp
bnRUaGVtZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGMK
ICAgICBlZGplX29iamVjdF9tZXNzYWdlX3NpZ25hbF9wcm9jZXNzKGVudHJ5LT5lZGplKCkpOwog
ICAgIGV2YXNfcmVuZGVyKGVjb3JlX2V2YXNfZ2V0KGVudHJ5LT5jYW52YXMoKSkpOwogCi0gICAg
Y2Fpcm9fdCogY2Fpcm8gPSBpbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwor
ICAgIGNhaXJvX3QqIGNhaXJvID0gaW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgQVNTRVJUKGNhaXJvKTsKIAogICAgIGNhaXJvX3NhdmUoY2Fpcm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMTg2Yjc2MDE0OWU2
YWVlNjBjMGRhY2I3NDIyZTkwNTc0Mjg3NjFiMS4uZmVmYmIyNGI1NjQ4MjRlMzQ2MzljNTE5MDll
ZDNmMDZjN2QzOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwCkBAIC01MjYsMTYgKzUyNiwxNiBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZShjb25z
dCBSZW5kZXJUaGVtZUd0ayogdGhlbWUsIEdUeXBlIHdpZGdldFR5cGUsIGNvbnN0IFJlbgogICAg
IGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0
ZUZsYWdzPihmbGFncykpOwogCiAgICAgaWYgKHdpZGdldFR5cGUgPT0gR1RLX1RZUEVfQ0hFQ0tf
QlVUVE9OKQotICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQs
IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBlbHNlCi0gICAgICAg
IGd0a19yZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX29wdGlvbihjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5k
ZXJPYmplY3QpKSB7CiAgICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdChyZWN0KTsKICAgICAg
ICAgZ2ludCBpbmRpY2F0b3JTcGFjaW5nOwogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRf
c3R5bGUoY29udGV4dCwgImluZGljYXRvci1zcGFjaW5nIiwgJmluZGljYXRvclNwYWNpbmcsIG51
bGxwdHIpOwogICAgICAgICBpbmRpY2F0b3JSZWN0LmluZmxhdGUoaW5kaWNhdG9yU3BhY2luZyk7
Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5kaWNhdG9yUmVjdC55
KCksCisgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaW5kaWNhdG9yUmVjdC54KCksIGluZGljYXRvclJl
Y3QueSgpLAogICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC53aWR0aCgpLCBpbmRpY2F0b3JSZWN0
LmhlaWdodCgpKTsKICAgICB9CiAKQEAgLTU5NCw4ICs1OTQsOCBAQCBzdGF0aWMgdm9pZCByZW5k
ZXJCdXR0b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFJlbgogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RL
X1NUWUxFX0NMQVNTX0RFRkFVTFQpOwogICAgIH0KIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3Vu
ZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1
dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25S
ZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5j
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJl
Y3QueSgpLCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0
a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJl
Y3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShj
b250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0
b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVj
dC5oZWlnaHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmplY3QpKSB7
CiAgICAgICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7CkBAIC02MjcsNyArNjI3LDcgQEAg
c3RhdGljIHZvaWQgcmVuZGVyQnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBSZW4KICAgICAgICAgICAgIGJ1dHRvblJlY3QubW92ZShjaGls
ZERpc3BsYWNlbWVudFgsIGNoaWxkRGlzcGxhY2VtZW50WSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0
LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2ZvY3Vz
KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1
dHRvblJlY3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25S
ZWN0LmhlaWdodCgpKTsKICAgICB9CiB9CiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludEJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC03NDQsNyArNzQ0LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVj
dCwgY29uc3QgUGFpbnQKICAgICAvLyBGSVhNRTogYWRvcHQgc3VicGl4ZWwgdGhlbWVzLgogICAg
IEludFJlY3QgcmVjdCA9IEludFJlY3Qocik7CiAKLSAgICBjYWlyb190KiBjYWlyb0NvbnRleHQg
PSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9f
dCogY2Fpcm9Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKTsKICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PEd0a1Rl
eHREaXJlY3Rpb24+KGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0
aW9uKCkpKTsKIAogICAgIC8vIFBhaW50IHRoZSBidXR0b24uCkBAIC04ODAsOCArODgwLDggQEAg
Ym9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJPYmplY3QsIGNvbnN0IFBhaW4KICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdf
Rk9DVVNFRDsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGlj
X2Nhc3Q8R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3Vu
ZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJl
Y3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtf
cmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRl
ck9iamVjdCkgJiYgaXNFbmFibGVkKHJlbmRlck9iamVjdCkpIHsKICAgICAgICAgZ2Jvb2xlYW4g
aW50ZXJpb3JGb2N1czsKQEAgLTg5MCw3ICs4OTAsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFp
bgogICAgICAgICBpZiAoIWludGVyaW9yRm9jdXMpIHsKICAgICAgICAgICAgIEludFJlY3QgZm9j
dXNSZWN0KHJlY3QpOwogICAgICAgICAgICAgZm9jdXNSZWN0LmluZmxhdGUoZm9jdXNXaWR0aCAr
IGZvY3VzUGFkKTsKLSAgICAgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1
c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAg
ICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgZm9jdXNSZWN0LngoKSwgZm9jdXNSZWN0LnkoKSwgZm9jdXNS
ZWN0LndpZHRoKCksIGZvY3VzUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTkwNCw3ICs5MDQsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjbwogICAgIHJldHVybiBwYWlu
dFRleHRGaWVsZChvLCBpLCByKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJl
Y3QmIGljb25SZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGljb25SZWN0
KQogewogICAgIEludFNpemUgaWNvblNpemUoZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgoaWNvbiksIGdk
a19waXhidWZfZ2V0X2hlaWdodChpY29uKSk7CiAgICAgR1JlZlB0cjxHZGtQaXhidWY+IHNjYWxl
ZEljb247CkBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnMKICAgICAg
ICAgaWNvbiA9IHNjYWxlZEljb24uZ2V0KCk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZ2Rr
X2NhaXJvX3NldF9zb3VyY2VfcGl4YnVmKGNyLCBpY29uLCBpY29uUmVjdC54KCksIGljb25SZWN0
LnkoKSk7CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25z
dCBSZW5kZXJPYmplY3QmIHIKICAgICAgICAgZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Qu
c3R5bGUoKS5kaXJlY3Rpb24oKSksCiAgICAgICAgIGd0a0ljb25TdGF0ZSh0aGlzLCByZW5kZXJP
YmplY3QpLAogICAgICAgICBnZXRJY29uU2l6ZUZvclBpeGVsU2l6ZShyZWN0LmhlaWdodCgpKSk7
Ci0gICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25S
ZWN0KTsKKyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgp
LCBpY29uUmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDI3LDcgKzEwMjcsNyBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZQogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRl
ck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMs
IHJlbmRlck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQo
KSwgaWNvblJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGlj
b24uZ2V0KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwNDcsNyAr
MTA0Nyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29u
c3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiB7CiAgICAgLy8gVGhlIG90aGVyIHBh
aW50IG1ldGhvZHMgZG9uJ3QgbmVlZCB0byBjaGVjayB3aGV0aGVyIHBhaW50aW5nIGlzIGRpc2Fi
bGVkIGJlY2F1c2UgUmVuZGVyVGhlbWUgYWxyZWFkeSBjaGVja3MgaXQKICAgICAvLyBiZWZvcmUg
Y2FsbGluZyB0aGVtLCBidXQgcGFpbnRDYXBzTG9ja0luZGljYXRvcigpIGlzIGNhbGxlZCBieSBS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUgd2hpY2ggZG9lc24ndCBjaGVjayBpdC4KLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaW50IGljb25TaXplID0gc3RkOjptaW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KTsKQEAgLTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xv
Y2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiAgICAgICAg
IHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gaWNvblNpemUsCiAgICAgICAgIHJlY3QueSgpICsg
KHJlY3QuaGVpZ2h0KCkgLSBpY29uU2l6ZSkgLyAyLAogICAgICAgICBpY29uU2l6ZSwgaWNvblNp
emUpOwotICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBp
Y29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5n
ZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTAyLDE1ICsxMTAy
LDE1IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVy
T2JqZWN0KSkKICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIEdU
S19TVEFURV9GTEFHX0lOU0VOU0lUSVZFKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChj
b250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3Qu
eCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVu
ZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwor
ICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9i
amVjdCkpIHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKICAgICAgICAgZ3Rr
X3N0eWxlX2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsICJmb2N1cy1saW5lLXdpZHRoIiwgJmZv
Y3VzV2lkdGgsICJmb2N1cy1wYWRkaW5nIiwgJmZvY3VzUGFkLCBudWxscHRyKTsKICAgICAgICAg
SW50UmVjdCBmb2N1c1JlY3QocmVjdCk7CiAgICAgICAgIGZvY3VzUmVjdC5pbmZsYXRlKGZvY3Vz
V2lkdGggKyBmb2N1c1BhZCk7Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBm
b2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAg
ICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1Jl
Y3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICB9CiAKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9i
amVjdCwgY29uc3QgUGEKICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOwog
ICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtT
dGF0ZUZsYWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9zbGlkZXIoY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55
KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAgICBndGtfcmVuZGVyX3NsaWRlcihj
b250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKICAgICAgICAgcGFy
dCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwgOiBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRf
cmVzdG9yZShjb250ZXh0KTsKQEAgLTExNzQsOCArMTE3NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVH
dGs6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNv
bnN0IFBhCiAKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NU
WUxFX0NMQVNTX1RST1VHSCk7CiAKLSAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwg
cGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVj
dC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3RrX3JlbmRlcl9mcmFt
ZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJl
Y3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtf
cmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpOworICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250
ZXh0KTsKIApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAg
ICBwcm9ncmVzc1JlY3QgPSBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KHJl
bmRlck9iamVjdCwgcHJvZ3Jlc3NSZWN0KTsKIAogICAgIGlmICghcHJvZ3Jlc3NSZWN0LmlzRW1w
dHkoKSkKLSAgICAgICAgZ3RrX3JlbmRlcl9hY3Rpdml0eShjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNz
UmVjdC55KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOwor
ICAgICAgICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55
KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOwogCiAgICAg
Z3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xMjU2LDggKzEyNTYsOCBAQCBzdGF0aWMgdm9pZCBwYWludFNwaW5BcnJvd0J1dHRvbihSZW5k
ZXJUaGVtZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgYwogICAgIGJ1dHRvblJl
Y3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyAyKTsKICAgICBndGtfc3R5bGVfY29udGV4dF9z
ZXRfanVuY3Rpb25fc2lkZXMoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrSnVuY3Rpb25TaWRlcz4o
anVuY3Rpb24pKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludElu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0
b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKLSAg
ICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0
LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3Vu
ZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBi
dXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9u
UmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9u
UmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAKICAg
ICAvLyBQYWludCBhcnJvdyBjZW50ZXJlZCBpbnNpZGUgYnV0dG9uLgogICAgIC8vIFRoaXMgY29k
ZSBpcyBiYXNlZCBvbiBndGtzcGluYnV0dG9uLmMgY29kZS4KQEAgLTEyODMsNyArMTI4Myw3IEBA
IHN0YXRpYyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3Rr
U3R5bGVDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgZ2ludCBoZWlnaHQgPSAod2lkdGggKyAxKSAv
IDI7CiAKICAgICBhcnJvd1JlY3QubW92ZSgoYXJyb3dSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAy
LCAoYXJyb3dSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDIpOwotICAgIGd0a19yZW5kZXJfYXJy
b3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBh
bmdsZSwgYXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgpOworICAgIGd0a19yZW5k
ZXJfYXJyb3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+
Y3IoKSwgYW5nbGUsIGFycm93UmVjdC54KCksIGFycm93UmVjdC55KCksIHdpZHRoKTsKIAogICAg
IGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiB9CkBAIC0xNDE3LDcgKzE0MTcs
NyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKQog
fQogI2VuZGlmCiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFCdXR0b24oY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgY2hhciogc3ltYm9saWNJY29uTmFtZSwgY29uc3QgY2hh
ciogZmFsbGJhY2tTdG9ja0ljb25OYW1lKQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRp
YUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25O
YW1lLCBjb25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCiB7CiAgICAgSW50UmVjdCBp
Y29uUmVjdCgKICAgICAgICAgcmVjdC54KCkgKyAocmVjdC53aWR0aCgpIC0gbV9tZWRpYUljb25T
aXplKSAvIDIsCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpoYXNP
d25EaXNhYmxlZFN0YXRlSGFuZGxpbmdGb3IoQ29udHJvbFBhcnQgcGFydCkgY29uc3QKIAogYm9v
bCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVj
dCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsICJ2aWV3LWZ1bGxzY3JlZW4tc3ltYm9saWMiLCBH
VEtfU1RPQ0tfRlVMTFNDUkVFTik7CisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVy
T2JqZWN0LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCAidmlldy1mdWxsc2NyZWVuLXN5bWJv
bGljIiwgR1RLX1NUT0NLX0ZVTExTQ1JFRU4pOwogfQogCiBib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludE1lZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xNDQ2LDcg
KzE0NDYsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBib29sIG11dGVkID0gbWVkaWFFbGVtZW50LT5tdXRlZCgpOwotICAgIHJldHVybiBw
YWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsCisg
ICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4
dCgpLCByZWN0LAogICAgICAgICBtdXRlZCA/ICJhdWRpby12b2x1bWUtbXV0ZWQtc3ltYm9saWMi
IDogImF1ZGlvLXZvbHVtZS1oaWdoLXN5bWJvbGljIiwKICAgICAgICAgbXV0ZWQgPyAiYXVkaW8t
dm9sdW1lLW11dGVkIiA6ICJhdWRpby12b2x1bWUtaGlnaCIpOwogfQpAQCAtMTQ2MSwxOSArMTQ2
MSwxOSBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxheUJ1dHRvbihjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgYm9vbCBzaG93UGxheUJ1dHRvbiA9IG5vZGVIYXNDbGFzcyhub2RlLCAicGF1c2VkIik7CiAK
LSAgICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250
ZXh0LCByZWN0LAorICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFp
bnRJbmZvLmNvbnRleHQoKSwgcmVjdCwKICAgICAgICAgc2hvd1BsYXlCdXR0b24gPyAibWVkaWEt
cGxheWJhY2stc3RhcnQtc3ltYm9saWMiIDogIm1lZGlhLXBsYXliYWNrLXBhdXNlLXN5bWJvbGlj
IiwKICAgICAgICAgc2hvd1BsYXlCdXR0b24gPyBHVEtfU1RPQ0tfTUVESUFfUExBWSA6IEdUS19T
VE9DS19NRURJQV9QQVVTRSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFT
ZWVrQmFja0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBh
aW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1l
ZGlhLXNlZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfUkVXSU5EKTsKKyAg
ICByZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0
KCksIHJlY3QsICJtZWRpYS1zZWVrLWJhY2t3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElB
X1JFV0lORCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrRm9yd2Fy
ZEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVk
aWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNl
ZWstZm9yd2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9GT1JXQVJEKTsKKyAgICByZXR1
cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJl
Y3QsICJtZWRpYS1zZWVrLWZvcndhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfRk9SV0FS
RCk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBi
b29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24o
Y29uc3QgUmVuZGVyT2JqZWN0JiByZQogICAgICAgICBpY29uID0gZ2V0U3RvY2tTeW1ib2xpY0lj
b25Gb3JXaWRnZXRUeXBlKEdUS19UWVBFX0NPTlRBSU5FUiwgInVzZXItaW52aXNpYmxlLXN5bWJv
bGljIiwgR1RLX1NUT0NLX0pVU1RJRllfRklMTCwKICAgICAgICAgICAgIGd0a1RleHREaXJlY3Rp
b24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLCBndGtJY29uU3RhdGUodGhpcywg
cmVuZGVyT2JqZWN0KSwgaWNvblJlY3Qud2lkdGgoKSk7CiAgICAgfQotICAgIHBhaW50R2RrUGl4
YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRH
ZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAg
IHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC0xNTA3LDkgKzE1MDcsOSBAQCBib29sIFJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZgogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsK
LSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJv
a2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7
CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9r
ZSk7CiAKICAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigp
OwogICAgIGZsb2F0IHRvdGFsVHJhY2tXaWR0aCA9IHIud2lkdGgoKTsKQEAgLTE1MjcsMTcgKzE1
MjcsMTcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmYKICAgICAgICAgcmFuZ2VSZWN0LnNldFdp
ZHRoKGxlbmd0aFJhdGlvICogdG90YWxUcmFja1dpZHRoKTsKICAgICAgICAgaWYgKGluZGV4KQog
ICAgICAgICAgICAgcmFuZ2VSZWN0Lm1vdmUoc3RhcnRSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCwg
MCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJh
bmdlUmVjdCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAg
ICBjb250ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9y
ZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAotICAgIGNvbnRl
eHQtPnJlc3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByKQogewogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IG8uc3R5bGUoKTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFk
aWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCku
ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUo
c3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBz
dHlsZS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTU1Niw5ICsx
NTU2LDkgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNr
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICBpZiAoIXZvbHVtZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dDsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoTm9TdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCk7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VT
dHlsZShOb1N0cm9rZSk7CiAKICAgICBpbnQgcmVjdEhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CiAg
ICAgZmxvYXQgdHJhY2tIZWlnaHQgPSByZWN0SGVpZ2h0ICogdm9sdW1lOwpAQCAtMTU2Nyw5ICsx
NTY3LDkgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNr
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICB2b2x1bWVSZWN0Lm1vdmUoMCwg
cmVjdEhlaWdodCAtIHRyYWNrSGVpZ2h0KTsKICAgICB2b2x1bWVSZWN0LnNldEhlaWdodChjZWls
KHRyYWNrSGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLAorICAgIGNv
bnRleHQuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9sdW1lUmVjdCwgYm9yZGVy
UmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAogICAgIHJldHVybiBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5kZXggNGFjZDBh
NmU0ZDUzZGMzOTQ0NDI5YWI4MDUzZTFiMTJmYjU1MWU1OC4uMWI5YzBiMzM4YmQyNmJmZWQxZDA5
NjdhNjdjNDkwODkxOTY5MmVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgflJlbmRl
clRoZW1lSU9TKCkgeyB9CiAKICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdDsK
LSAgICBGbG9hdFJlY3QgYWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBi
b3gsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBGbG9hdFJlY3QgYWRk
Um91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoQ1NT
VmFsdWVJRCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQppbmRleCBlYzcyYWUzMzlhNjJlN2RkOTUwMjA3MjlhMWRiMmRmZjQxMDQz
NzBmLi43MDQ3ZjNkNDNiZDFmZjZkNjI1M2I1MzIxNWZjOGFiZThkYWMwZmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAg
Y29uc3QgQ29sb3ImIFJlbmRlclRoZW1lSU9TOjpzaGFkb3dDb2xvcigpIGNvbnN0CiAgICAgcmV0
dXJuIGNvbG9yOwogfQogCi1GbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRCb3Jk
ZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCitGbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5k
ZWRCb3JkZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gVG8gZml4IGlubmVyIGJvcmRl
ciBibGVlZGluZyBpc3N1ZXMgPHJkYXI6Ly9wcm9ibGVtLzk4MTI1MDc+LCB3ZSBjbGlwIHRvIHRo
ZSBvdXRlciBib3JkZXIgYW5kIGFzc2VydCB0aGF0CiAgICAgLy8gdGhlIGJvcmRlciBpcyBvcGFx
dWUgb3IgdHJhbnNwYXJlbnQsIHVubGVzcyB3ZSdyZSBjaGVja2VkIGJlY2F1c2UgY2hlY2tlZCBy
YWRpby9jaGVja2JveGVzIHNob3cgbm8gYmxlZWRpbmcuCkBAIC0zMzIsOSArMzMyLDkgQEAgRmxv
YXRSZWN0IFJlbmRlclRoZW1lSU9TOjphZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJP
YmplY3QmIGJveCwgR3JhcGhpY3MKICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0NoZWNrZWQo
Ym94KSA/IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZWN0KSA6IHN0eWxlLmdldFJv
dW5kZWRCb3JkZXJGb3IocmVjdCk7CiAKICAgICBpZiAoYm9yZGVyLmlzUm91bmRlZCgpKQotICAg
ICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpKTsK
KyAgICAgICAgY29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIp
KTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPmNsaXAoYm9yZGVyLnJlY3QoKSk7CisgICAg
ICAgIGNvbnRleHQuY2xpcChib3JkZXIucmVjdCgpKTsKIAogICAgIGlmIChpc0NoZWNrZWQoYm94
KSkgewogICAgICAgICBBU1NFUlQoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wQ29sb3IpLmFscGhhKCkgJSAyNTUgPT0gMCk7CkBAIC0zNjcsMTMgKzM2Nywx
MyBAQCBzdGF0aWMgQ0dQb2ludCBzaG9ydGVuZWQoQ0dQb2ludCBzdGFydCwgQ0dQb2ludCBlbmQs
IGZsb2F0IHdpZHRoKQogCiBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBjbGlwID0gYWRk
Um91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwor
ICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8u
Y29udGV4dCgpLCByZWN0KTsKIAogICAgIGZsb2F0IHdpZHRoID0gY2xpcC53aWR0aCgpOwogICAg
IGZsb2F0IGhlaWdodCA9IGNsaXAuaGVpZ2h0KCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250
ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4
dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwog
ICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0Nv
bnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29uY2F2ZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigp
LCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24p
OwogCkBAIC0zOTgsMTUgKzM5OCwxNSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNr
Ym94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaQogICAgICAg
ICAgICAgc2hvcnRlbmVkKGxpbmVbMl0sIGxpbmVbMV0sIGxpbmVXaWR0aCAvIDQuMGYpCiAgICAg
ICAgIH07CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhs
aW5lV2lkdGgpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYs
IDAuMGYsIDAuN2YpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+ZHJhd0pvaW5lZExpbmVzKHNoYWRvdywgMywgdHJ1ZSwga0NHTGluZUNhcFNxdWFy
ZSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0pvaW5lZExpbmVzKHNoYWRvdywg
MywgdHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcyhzdGQ6Om1pbihjbGlwLndpZHRoKCksIGNsaXAuaGVpZ2h0KCkp
ICogdGhpY2tuZXNzUmF0aW8pOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBmKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KHN0ZDo6bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwg
MS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMobGluZSwgMywgdHJ1ZSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgRmxvYXRQb2ludCBib3R0b21DZW50ZXIoY2xpcC54KCkg
KyBjbGlwLndpZHRoKCkgLyAyLjBmLCBjbGlwLm1heFkoKSk7CiAgICAgICAgIGRyYXdBeGlhbEdy
YWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50KSwgY2xpcC5s
b2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVy
cG9sYXRpb24pOwpAQCAtNDUwLDEwICs0NTAsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRq
dXN0UmFkaW9TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW4K
IAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0RlY29yYXRpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlw
KGJveCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBGbG9hdFJlY3QgY2xp
cCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7
CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewogICAg
ICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29uY2F2
ZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1h
eFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwogCkBAIC00NjUsMTAgKzQ2NSwxMCBAQCBib29s
IFJlbmRlclRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIGNvbnN0IFBhaW50SQogICAgICAgICBjbGlwLmluZmxhdGVYKC1jbGlwLndpZHRoKCkg
KiBJbm5lckludmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAuaW5mbGF0ZVkoLWNsaXAuaGVpZ2h0
KCkgKiBJbm5lckludmVyc2VSYXRpbyk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRy
YXdSYWlzZWRFbGxpcHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
c2hhZG93Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAg
ICBGbG9hdFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVpZ2h0KCkgLyAy
LjBmKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNs
aXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIH0KICAgICBGbG9hdFBv
aW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMCwgY2xpcC5tYXhZ
KCkpOwogICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShT
aGFkZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlw
Lm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwpAQCAtNDgxLDE1ICs0ODEsMTUgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRUZXh0RmllbGREZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJP
YmplY3QmIGJveCwgY29uc3QgUGEKICAgICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBib3guc3R5bGUo
KTsKICAgICBGbG9hdFBvaW50IHBvaW50KHJlY3QueCgpICsgc3R5bGUuYm9yZGVyTGVmdFdpZHRo
KCksIHJlY3QueSgpICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAK
LSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlLmdldFJvdW5kZWRC
b3JkZXJGb3IoTGF5b3V0UmVjdChyZWN0KSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWlu
dGluZyhib3guZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlv
dXRSZWN0KHJlY3QpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIC8vIFRoaXMgZ3JhZGllbnQgZ2V0
cyBkcmF3biBibGFjayB3aGVuIHByaW50aW5nLgogICAgIC8vIERvIG5vdCBkcmF3IHRoZSBncmFk
aWVudCBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRvcCBib3JkZXIuCiAgICAgYm9vbCB0b3BCb3Jk
ZXJJc0ludmlzaWJsZSA9ICFzdHlsZS5oYXNCb3JkZXIoKSB8fCAhc3R5bGUuYm9yZGVyVG9wV2lk
dGgoKSB8fCBzdHlsZS5ib3JkZXJUb3BJc1RyYW5zcGFyZW50KCk7CiAgICAgaWYgKCFib3gudmll
dygpLnByaW50aW5nKCkgJiYgIXRvcEJvcmRlcklzSW52aXNpYmxlKQotICAgICAgICBkcmF3QXhp
YWxHcmFkaWVudChwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGdyYWRpZW50
V2l0aE5hbWUoSW5zZXRHcmFkaWVudCksIHBvaW50LCBGbG9hdFBvaW50KENHUG9pbnRNYWtlKHBv
aW50LngoKSwgcG9pbnQueSgpICsgMy4wZikpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKKyAgICAg
ICAgZHJhd0F4aWFsR3JhZGllbnQocGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSwgZ3JhZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwgcG9pbnQsIEZsb2F0UG9pbnQoQ0dQ
b2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBmKSksIExpbmVhckludGVycG9sYXRp
b24pOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJC
b3gmIGJveCwgY29uc3QKICAgICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBib3guc3R5bGUoKTsKICAg
ICBmbG9hdCBib3JkZXJUb3BXaWR0aCA9IHN0eWxlLmJvcmRlclRvcFdpZHRoKCk7CiAgICAgRmxv
YXRSZWN0IGNsaXAocmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkg
KyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpLCByZWN0LndpZHRoKCkgLSBzdHlsZS5ib3JkZXJMZWZ0
V2lkdGgoKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgcmVjdC5oZWlnaHQoKSAtIHN0eWxl
LmJvcmRlclRvcFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwogCiAgICAgZmxvYXQgYWRqdXN0TGVmdCA9IDAuNTsKICAgICBmbG9hdCBh
ZGp1c3RSaWdodCA9IDAuNTsKQEAgLTYyOSw5ICs2MjksOSBAQCBib29sIFJlbmRlclRoZW1lSU9T
OjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNv
bnN0CiAgICAgewogICAgICAgICBGbG9hdFJlY3QgdGl0bGVDbGlwKGNsaXAueCgpIC0gYWRqdXN0
TGVmdCwgY2xpcC55KCkgLSBhZGp1c3RUb3AsIGNsaXAud2lkdGgoKSAtIE1lbnVMaXN0QnV0dG9u
UGFkZGluZ1JpZ2h0ICsgYWRqdXN0TGVmdCwgY2xpcC5oZWlnaHQoKSArIGFkanVzdFRvcCArIGFk
anVzdEJvdHRvbSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVDbGlwLAorICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KHRpdGxlQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJUb3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRl
ckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCku
aGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksIEZsb2F0
U2l6ZSgwLCAwKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5i
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJv
cmRlckxlZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFk
aXVzKCkuaGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgo
KSksIEZsb2F0U2l6ZSgwLCAwKSkpOwogCkBAIC02NDMsMTkgKzY0MywxOSBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94
JiBib3gsIGNvbnN0CiAKICAgICBmbG9hdCBzZXBhcmF0b3IgPSBjbGlwLm1heFgoKSAtIE1lbnVM
aXN0QnV0dG9uUGFkZGluZ1JpZ2h0OwogCi0gICAgYm94LmRyYXdMaW5lRm9yQm94U2lkZSgqcGFp
bnRJbmZvLmNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KHNlcGFyYXRvciAtIGJvcmRlclRv
cFdpZHRoLCBjbGlwLnkoKSksIEZsb2F0UG9pbnQoc2VwYXJhdG9yLCBjbGlwLm1heFkoKSkpLCBC
U1JpZ2h0LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvciksIHN0eWxlLmJvcmRlclRvcFN0eWxlKCksIDAsIDApOworICAgIGJveC5kcmF3TGluZUZv
ckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoc2VwYXJh
dG9yIC0gYm9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQb2ludChzZXBhcmF0b3IsIGNs
aXAubWF4WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5bGUoKSwgMCwgMCk7CiAKICAg
ICBGbG9hdFJlY3QgYnV0dG9uQ2xpcChzZXBhcmF0b3IgLSBhZGp1c3RUb3AsIGNsaXAueSgpIC0g
YWRqdXN0VG9wLCBNZW51TGlzdEJ1dHRvblBhZGRpbmdSaWdodCArIGFkanVzdFRvcCArIGFkanVz
dFJpZ2h0LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsgYWRqdXN0Qm90dG9tKTsKIAogICAg
IC8vIE5vdyBwYWludCB0aGUgYnV0dG9uIHBvcnRpb24uCiAgICAgewotICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0
KCkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChidXR0b25DbGlwLAorICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCiAgICAgICAgICAgICBGbG9h
dFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdo
dFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCks
IHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksCiAgICAgICAgICAgICBG
bG9hdFNpemUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdo
dFdpZHRoKCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCku
aGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSkpKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUu
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5j
b2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KGJ1dHRv
bkNsaXAsIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChj
Z0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoaXNGb2N1c2VkKGJveCkgJiYgIWlzUmVhZE9ubHlD
b250cm9sKGJveCkgPyBDb25jYXZlR3JhZGllbnQgOiBDb252ZXhHcmFkaWVudCksIGJ1dHRvbkNs
aXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChidXR0b25DbGlwLngoKSwgYnV0dG9uQ2xpcC5tYXhZ
KCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICB9CkBAIC02NzAsNyArNjcwLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJl
bmRlckJveCYgYm94LCBjb25zdAogICAgICAgICBGbG9hdFJlY3QgZWxsaXBzZShidXR0b25DbGlw
LngoKSArIChidXR0b25DbGlwLndpZHRoKCkgLSBjb3VudCAqIChzaXplICsgcGFkZGluZykgKyBw
YWRkaW5nKSAvIDIuMCwgYnV0dG9uQ2xpcC5tYXhZKCkgLSAxMC4wLCBzaXplLCBzaXplKTsKIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1Jh
aXNlZEVsbGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBD
b2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAg
ICAgICAgICBlbGxpcHNlLm1vdmUoc2l6ZSArIHBhZGRpbmcsIDApOwogICAgICAgICB9CiAgICAg
fSAgZWxzZSB7CkBAIC02ODksMTMgKzY4OSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAg
ICAgICAgIHNoYWRvd1syXSA9IEZsb2F0UG9pbnQoYXJyb3dbMl0ueCgpLCBhcnJvd1syXS55KCkg
KyAxLjBmKTsKIAogICAgICAgICBmbG9hdCBvcGFjaXR5ID0gaXNSZWFkT25seUNvbnRyb2woYm94
KSA/IDAuMiA6IDAuNTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBm
LCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBzaGFkb3csIHRydWUpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQ
b2x5Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5Z29u
KDMsIGFycm93LCB0cnVlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFy
cm93LCB0cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC03NTksMTMgKzc1OSwx
MyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9i
amVjdCYgYm94LCBjb25zdCBQYWludEluZm8mCiAKICAgICAvLyBEcmF3IHRoZSB0cmFjayBncmFk
aWVudC4KICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAgSW50U2l6ZSBjb3Ju
ZXJTaXplKGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwogICAgICAgICBGbG9hdFJvdW5kZWRS
ZWN0IGlubmVyQm9yZGVyKHRyYWNrQ2xpcCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVy
U2l6ZSwgY29ybmVyU2l6ZSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRl
ZFJlY3QoaW5uZXJCb3JkZXIpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3Vu
ZGVkUmVjdChpbm5lckJvcmRlcik7CiAKLSAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgICAgIElPU0dyYWRpZW50UmVmIGdyYWRpZW50ID0gcmVhZG9ubHkgPyBncmFkaWVudFdpdGhO
YW1lKFJlYWRvbmx5U2xpZGVyVHJhY2tHcmFkaWVudCkgOiBncmFkaWVudFdpdGhOYW1lKFNsaWRl
clRyYWNrR3JhZGllbnQpOwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQogICAgICAgICAgICAg
ZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudCwgdHJhY2tDbGlwLmxvY2F0aW9u
KCksIEZsb2F0UG9pbnQodHJhY2tDbGlwLngoKSwgdHJhY2tDbGlwLm1heFkoKSksIExpbmVhcklu
dGVycG9sYXRpb24pOwpAQCAtNzc1LDEzICs3NzUsMTMgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZv
JgogCiAgICAgLy8gRHJhdyB0aGUgdHJhY2sgYm9yZGVyLgogICAgIHsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4
dCgpKTsKIAotICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgaWYgKHJlYWRv
bmx5KQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KDE3OCwgMTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoNzYsIDc2LCA3NiksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xv
cig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAgICAgUmV0YWluUHRy
PENHTXV0YWJsZVBhdGhSZWY+IHJvdW5kZWRSZWN0UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRl
TXV0YWJsZSgpKTsKICAgICAgICAgQ0dQYXRoQWRkUm91bmRlZFJlY3Qocm91bmRlZFJlY3RQYXRo
LmdldCgpLCAwLCB0cmFja0NsaXAsIGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwpAQCAtODEy
LDEwICs4MTIsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2xpZGVyVGh1bWJTaXpl
KFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50U2xpZGVyVGh1bWJEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwg
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7
Ci0gICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5m
by5jb250ZXh0LCByZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVk
Qm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogCi0gICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
KyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9y
bUNvbnRleHQoKTsKICAgICBGbG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAu
d2lkdGgoKSAvIDIuMGYsIGNsaXAubWF4WSgpKTsKICAgICBpZiAoaXNQcmVzc2VkKGJveCkpCiAg
ICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTbGlk
ZXJUaHVtYk9wYXF1ZVByZXNzZWRHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2lu
dChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKQEAgLTg0NSwx
OCArODQ1LDE4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29uc3QgaW50IHByb2dy
ZXNzQmFySGVpZ2h0ID0gOTsKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbE9mZnNldCA9IChyZWN0
LmhlaWdodCgpIC0gcHJvZ3Jlc3NCYXJIZWlnaHQpIC8gMi4wOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
IGlmIChyZWN0LndpZHRoKCkgPCAxMCB8fCByZWN0LmhlaWdodCgpIDwgOSkgewogICAgICAgICAv
LyBUaGUgcmVjdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0YW5kYXJkIHByb2dyZXNzIGJhci4gV2Ug
Y2xpcCB0byB0aGUgZWxlbWVudCdzIHJlY3QgdG8gYXZvaWQKICAgICAgICAgLy8gbGVha2luZyBw
aXhlbHMgb3V0c2lkZSB0aGUgcmVwYWludCByZWN0LgotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+Y2xpcChyZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKHJlY3QpOwog
ICAgIH0KIAogICAgIC8vIDEpIERyYXcgdGhlIHByb2dyZXNzIGJhciB0cmFjay4KICAgICAvLyAx
LjEpIERyYXcgdGhlIHdoaXRlIGJhY2tncm91bmQgd2l0aCBncmV5IGdyYWRpZW50IGJvcmRlci4K
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBj
b250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMC42OCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMC42OCk7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9h
dCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsK
ICAgICBSZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShG
bG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0
IC0gMSkpOwpAQCAtODY0LDI4ICs4NjQsMjggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAg
ICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4
ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDB4ZWUs
IDB4ZWUsIDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29s
b3IoMHg4ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KHN0
cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlR3Jh
ZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBDb2xvclNwYWNl
IGNvbG9yU3BhY2UgPSByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0
LT5zZXRGaWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSksIGNvbG9yU3BhY2UpOworICAgIGNv
bnRleHQuc2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpLCBjb2xvclNwYWNlKTsKIAog
ICAgIFBhdGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0cmFja1JlY3QocmVjdC54KCkgKyAw
LjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgcmVjdC53aWR0aCgpIC0gMC41
LCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7CiAgICAgRmxvYXRTaXplIHJvdW5kZWRDb3JuZXJS
YWRpdXMoNSwgNCk7CiAgICAgdHJhY2tQYXRoLmFkZFJvdW5kZWRSZWN0KHRyYWNrUmVjdCwgcm91
bmRlZENvcm5lclJhZGl1cyk7Ci0gICAgY29udGV4dC0+ZHJhd1BhdGgodHJhY2tQYXRoKTsKKyAg
ICBjb250ZXh0LmRyYXdQYXRoKHRyYWNrUGF0aCk7CiAKICAgICAvLyAxLjIpIERyYXcgdG9wIGdy
YWRpZW50IG9uIHRoZSB1cHBlciBoYWxmLiBJdCBpcyBzdXBwb3NlZCB0byBvdmVybGF5IHRoZSBm
aWxsIGZyb20gdGhlIGJhY2tncm91bmQgYW5kIGRhcmtlciB0aGUgc3Ryb2tlZCBwYXRoLgogICAg
IEZsb2F0UmVjdCBib3JkZXIocmVjdC54KCksIHJlY3QueSgpICsgdmVydGljYWxPZmZzZXQsIHJl
Y3Qud2lkdGgoKSwgcHJvZ3Jlc3NCYXJIZWlnaHQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRp
dXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3Ju
ZXJSYWRpdXMpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9h
dFJvdW5kZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJh
ZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAg
ZmxvYXQgdXBwZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47CiAgICAg
UmVmUHRyPEdyYWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWln
aHQgLSAxLjUpKTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcigx
MzMsIDEzMywgMTMzLCAxODgpKTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4w
LCBDb2xvcigxOCwgMTgsIDE4LCA1MSkpOwotICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCh1
cHBlckdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRp
ZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICBjb250ZXh0LT5maWxs
UmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qu
d2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxv
YXRSZWN0KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uLCByZWN0LndpZHRoKCks
IHVwcGVyR3JhZGllbnRIZWlnaHQpKTsKIAogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNz
ID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlcmVyKTsKICAgICBpZiAocmVuZGVyUHJv
Z3Jlc3MuaXNEZXRlcm1pbmF0ZSgpKSB7CkBAIC04OTksMTMgKzg5OSwxMyBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIs
IGNvbnN0IFBhaW50SQogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENv
bG9yKDM2LCAxMTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAu
NTUsIENvbG9yKDM2LCAxMTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKDEuMCwgQ29sb3IoNTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxH
cmFkaWVudChiYXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5z
ZXRGaWxsR3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAg
UmVmUHRyPEdyYWRpZW50PiBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxv
YXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9y
KDk1LCAxMDcsIDE4MykpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KDAuNSwgQ29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGll
bnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAxMDQsIDE2NikpOwotICAgICAgICBjb250
ZXh0LT5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgp
KTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5y
ZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBQYXRoIGJhclBhdGg7CiAgICAgICAgIGludCBs
ZWZ0ID0gcmVjdC54KCk7CkBAIC05MTMsNyArOTEzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6
cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWlu
dEkKICAgICAgICAgICAgIGxlZnQgPSByZWN0Lm1heFgoKSAtIGJhcldpZHRoOwogICAgICAgICBG
bG9hdFJlY3QgYmFyUmVjdChsZWZ0ICsgMC4yNSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IDAuMjUsIHN0ZDo6bWF4KGJhcldpZHRoIC0gMC41LCAwLjApLCBwcm9ncmVzc0JhckhlaWdodCAt
IDAuNSk7CiAgICAgICAgIGJhclBhdGguYWRkUm91bmRlZFJlY3QoYmFyUmVjdCwgcm91bmRlZENv
cm5lclJhZGl1cyk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdQYXRoKGJhclBhdGgpOworICAgICAg
ICBjb250ZXh0LmRyYXdQYXRoKGJhclBhdGgpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsK
QEAgLTk4NCwxMCArOTg0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50QnV0dG9uRGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50CiAKIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50UHVzaEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVj
dCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5j
b250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwg
cGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBGbG9hdFJlY3QgY2xpcCA9IGFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7CiAKLSAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChib3guc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlzRGFyaygpKQogICAgICAgICBkcmF3
QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29udmV4R3JhZGllbnQp
LCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGlu
ZWFySW50ZXJwb2xhdGlvbik7CiAgICAgZWxzZSB7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBjb25z
dCBpbnQga011bHRpcGxlVGh1bWJuYWlsU2hyaW5rU2l6ZSA9IDI7CiAKIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBSZW5kZXJPYmplY3QmIGJ1dHRvblJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgSWNvbiogaWNvbiwgRmlsZVVwbG9hZERlY29y
YXRpb25zIGZpbGVVcGxvYWREZWNvcmF0aW9ucykKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBJbnRT
aXplIGNvcm5lclNpemUoa1RodW1ibmFpbEJvcmRlckNvcm5lclJhZGl1cywga1RodW1ibmFpbEJv
cmRlckNvcm5lclJhZGl1cyk7CiAgICAgQ29sb3IgcGljdHVyZUZyYW1lQ29sb3IgPSBidXR0b25S
ZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRv
cENvbG9yKTsKQEAgLTEwMzEsMTIgKzEwMzEsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRGaWxlVXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIK
IAogICAgICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3Jv
dW5kIGljb24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENv
bG9yIGJhY2tncm91bmRJbWFnZUNvbG9yID0gQ29sb3IoYnV0dG9uUmVuZGVyZXIuc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNv
cm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0
LCBiYWNrZ3JvdW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJu
YWlsUGljdHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwg
Y29ybmVyU2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3Jv
dW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5jb250
ZXh0KTsKLSAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+
Y2xpcCh0aHVtYm5haWxSZWN0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcjIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgICAgICAgICBDR0NvbnRl
eHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsK
KyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcCh0aHVtYm5haWxSZWN0KTsKICAg
ICAgICAgICAgIGlmIChiYWNrZ3JvdW5kSW1hZ2VDb2xvci5pc0RhcmsoKSkKICAgICAgICAgICAg
ICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29udmV4
R3JhZGllbnQpLCB0aHVtYm5haWxSZWN0LmxvY2F0aW9uKCksIEZsb2F0UG9pbnQodGh1bWJuYWls
UmVjdC54KCksIHRodW1ibmFpbFJlY3QubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAg
ICAgICAgICAgICBlbHNlIHsKQEAgLTEwNTIsOCArMTA1Miw4IEBAIGJvb2wgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBSCiAgICAgfQogCiAgICAgLy8gRm9yZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29u
LgotICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwotICAgIGljb24tPnBhaW50KCpwYWludEluZm8uY29udGV4dCwgdGh1bWJuYWlsUmVjdCk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHRodW1ibmFpbFJlY3Qp
OwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCmluZGV4IGRlMjJkMDBjODY3ZTQ0MDBkZTQ2ODMxMDZmNGY0NzYyMjNlMGZm
YTIuLmZiNGU0YzgwYzg2MjkwZGNlMTZhY2FhMTlkYmZiN2QyZmEzNmU5MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTg1MCwxMSArODUwLDExIEBA
IE5TQ29udHJvbFNpemUgUmVuZGVyVGhlbWVNYWM6OmNvbnRyb2xTaXplRm9yU3lzdGVtRm9udChS
ZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4
dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgTlNUZXh0
RmllbGRDZWxsICp0ZXh0RmllbGQgPSB0aGlzLT50ZXh0RmllbGQoKTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
IAogICAgIFt0ZXh0RmllbGQgc2V0RW5hYmxlZDooaXNFbmFibGVkKG8pICYmICFpc1JlYWRPbmx5
Q29udHJvbChvKSldOwogICAgIFt0ZXh0RmllbGQgZHJhd1dpdGhGcmFtZTpOU1JlY3QocikgaW5W
aWV3OmRvY3VtZW50Vmlld0ZvcihvKV07CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBSZW5kZXJU
aGVtZU1hYzo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCoKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0QXJlYShjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChw
YWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2Fs
Q29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICB3a0RyYXdCZXplbGVkVGV4dEFyZWEo
ciwgaXNFbmFibGVkKG8pICYmICFpc1JlYWRPbmx5Q29udHJvbChvKSk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtOTA5LDcgKzkwOSw3IEBAIGNvbnN0IGludCogUmVuZGVyVGhlbWVNYWM6OnBv
cHVwQnV0dG9uUGFkZGluZyhOU0NvbnRyb2xTaXplIHNpemUpIGNvbnN0CiAKIGJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5m
by5jb250ZXh0KCkpOwogICAgIHNldFBvcHVwQnV0dG9uQ2VsbFN0YXRlKHJlbmRlcmVyLCBJbnRT
aXplKHJlY3Quc2l6ZSgpKSk7CiAKICAgICBOU1BvcFVwQnV0dG9uQ2VsbCogcG9wdXBCdXR0b24g
PSB0aGlzLT5wb3B1cEJ1dHRvbigpOwpAQCAtOTI0LDE5ICs5MjQsMTkgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25z
dCBQYWludEluZm8KICAgICBpZiAocmVjdC53aWR0aCgpID49IG1pbmltdW1NZW51TGlzdFNpemUo
cmVuZGVyZXIuc3R5bGUoKSkpCiAgICAgICAgIGluZmxhdGVkUmVjdCA9IGluZmxhdGVSZWN0KHJl
Y3QsIHNpemUsIHBvcHVwQnV0dG9uTWFyZ2lucygpLCB6b29tTGV2ZWwpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogCiAgICAgLy8gQmVmb3JlIFlvc2VtaXRlIHdlIGRpZCBub3Qgd2FudCB0aGUgY2VsbCB0byBl
dmVyIGRyYXcgb3V0c2lkZSB0aGUgZ2l2ZW4gcmVjdGFuZ2xlLgogI2lmIF9fTUFDX09TX1hfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEwMDAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChp
bmZsYXRlZFJlY3QpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChpbmZsYXRlZFJlY3Qp
OwogI2VuZGlmCiAKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgaW5mbGF0
ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAg
ICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2
ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54
KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5m
bGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRT
aXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgfQog
CiAgICAgcGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnRJZk5lY2Vzc2Fy
eShwb3B1cEJ1dHRvbiwgcmVuZGVyZXIsIHBhaW50SW5mbywgaW5mbGF0ZWRSZWN0KTsKQEAgLTk2
NCwxMCArOTY0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mCiAgICAgaWYgKCFpczxSZW5k
ZXJNZXRlcj4ocmVuZGVyT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsK
KyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5j
b250ZXh0KCkpOwogCiAgICAgTlNMZXZlbEluZGljYXRvckNlbGwqIGNlbGwgPSBsZXZlbEluZGlj
YXRvckZvcihkb3duY2FzdDxSZW5kZXJNZXRlcj4ocmVuZGVyT2JqZWN0KSk7Ci0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogCiAgICAgW2NlbGwgZHJhd1dpdGhGcmFtZTpyZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3Io
cmVuZGVyT2JqZWN0KV07CiAgICAgW2NlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKQEAgLTExMzQs
NyArMTEzNCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgdHJhY2tJbmZvLnJlc2Vy
dmVkID0gMDsKICAgICB0cmFja0luZm8uZmlsbGVyMSA9IDA7CiAKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHBhaW50SW5mby5jb250ZXh0LCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHBhaW50SW5mby5jb250ZXh0KCksIHRydWUpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMTQyLDE0ICsxMTQyLDE0IEBAIGJv
b2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNnQ29u
dGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAgSElUaGVtZURyYXdUcmFjaygmdHJhY2tJbmZv
LCAwLCBjZ0NvbnRleHQsIGtISVRoZW1lT3JpZW50YXRpb25Ob3JtYWwpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogCiAgICAgaWYgKCFyZW5kZXJQcm9ncmVzcy5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkgewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKDIgKiBpbmZsYXRl
ZFJlY3QueCgpICsgaW5mbGF0ZWRSZWN0LndpZHRoKCksIDApOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+c2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkudHJhbnNsYXRlKDIgKiBpbmZsYXRlZFJlY3QueCgpICsgaW5mbGF0ZWRSZWN0LndpZHRo
KCksIDApOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgtMSwg
MSkpOwogICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlv
bigpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZl
ci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTIxMCwxMCArMTIxMCwxMCBAQCB2b2lkIFJlbmRl
clRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUAogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ29udGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWluZXIocGFpbnRJbmZvLmNvbnRleHQp
OworICAgIENvbnRleHRDb250YWluZXIgY2dDb250ZXh0Q29udGFpbmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNv
bnRleHQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYm9yZGVyID0g
RmxvYXRSb3VuZGVkUmVjdChvLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihyKSk7CiAgICAg
aW50IHJhZGl1cyA9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpOwpAQCAtMTIzOSwz
MyArMTIzOSwzMyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3Jh
ZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIFJldGFpblB0cjxDR1No
YWRpbmdSZWY+IHJpZ2h0U2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3Nw
YWNlLCBDR1BvaW50TWFrZShyLm1heFgoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5tYXhYKCkg
LSByYWRpdXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAog
ICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWlu
dEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChj
b250ZXh0LCByKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChi
b3JkZXIpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3Jk
ZXIpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAg
ICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwog
ICAgIH0KIAogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdy
YWRpZW50KSwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdo
dCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3Jh
ZGllbnQpLCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0
KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRD
b250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0
LCB0b3BTaGFkaW5nLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50Lmlz
RW1wdHkoKSkgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9S
ZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9t
R3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVm
dCgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVj
dChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5i
b3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgY29u
dGV4dCA9IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERy
YXdTaGFkaW5nKGNvbnRleHQsIGJvdHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgIH0KIAogICAgIHsK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8u
Y29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
YWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0
LCByKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOwog
ICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAg
Q0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgICAg
ICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCByaWdodFNoYWRpbmcuZ2V0KCkpOwpAQCAt
MTI5MiwxMCArMTI5MiwxMCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIGlmIChib3Vu
ZHMud2lkdGgoKSA8IGFycm93V2lkdGggKyBhcnJvd1BhZGRpbmdMZWZ0ICogcmVuZGVyZXIuc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgp
KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHJlbmRlcmVy
LnN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCByZW5kZXJl
ci5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJv
a2VTdHlsZShOb1N0cm9rZSk7CiAKICAgICBGbG9hdFBvaW50IGFycm93MVszXTsKICAgICBhcnJv
dzFbMF0gPSBGbG9hdFBvaW50KGxlZnRFZGdlLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dz
IC8gMi4wZik7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwog
ICAgIGFycm93MVsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwg
Y2VudGVyWSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgLSBhcnJvd0hlaWdodCk7CiAKICAg
ICAvLyBEcmF3IHRoZSB0b3AgYXJyb3cKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZl
eFBvbHlnb24oMywgYXJyb3cxLCB0cnVlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdD
b252ZXhQb2x5Z29uKDMsIGFycm93MSwgdHJ1ZSk7CiAKICAgICBGbG9hdFBvaW50IGFycm93Mlsz
XTsKICAgICBhcnJvdzJbMF0gPSBGbG9hdFBvaW50KGxlZnRFZGdlLCBjZW50ZXJZICsgc3BhY2VC
ZXR3ZWVuQXJyb3dzIC8gMi4wZik7CkBAIC0xMzExLDcgKzEzMTEsNyBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJlciwgYwogICAgIGFycm93MlsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dp
ZHRoIC8gMi4wZiwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgKyBhcnJvd0hl
aWdodCk7CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gYXJyb3cKLSAgICBwYWludEluZm8uY29u
dGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0cnVlKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MiwgdHJ1ZSk7CiAKICAgICBDb2xv
ciBsZWZ0U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwogICAgIENvbG9yIHJpZ2h0U2VwYXJh
dG9yQ29sb3IoMjU1LCAyNTUsIDI1NSwgNDApOwpAQCAtMTMyMSwxNCArMTMyMSwxNCBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlciwgYwogICAgIGludCBsZWZ0RWRnZU9mU2VwYXJhdG9yID0gc3RhdGlj
X2Nhc3Q8aW50PihsZWZ0RWRnZSAtIGFycm93UGFkZGluZ0xlZnQgKiByZW5kZXJlci5zdHlsZSgp
LmVmZmVjdGl2ZVpvb20oKSk7IC8vIEZJWE1FOiBSb3VuZD8KIAogICAgIC8vIERyYXcgdGhlIHNl
cGFyYXRvciB0byB0aGUgbGVmdCBvZiB0aGUgYXJyb3dzCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZVRoaWNrbmVzcygxKTsgLy8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5j
ZSBpdCBsb29rcyBuaWNlciBpZiBpdCBzdGF5cyB0aGluLgotICAgIHBhaW50SW5mby5jb250ZXh0
LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0g
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0
b3IsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tu
ZXNzKDEpOyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2Vy
IGlmIGl0IHN0YXlzIHRoaW4uCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihs
ZWZ0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLnko
KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZT
ZXBhcmF0b3IsIGJvdW5kcy5tYXhZKCkpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAg
ICBwYWludEluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRv
ciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNl
cGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNw
YWNlLCBib3VuZHMubWF4WSgpKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTQ1NCw3ICsx
NDU0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1l
bnROZWVkc1JlcGFpbnRJZk5lY2Vzc2FyeShOU0NlbGwKICAgICBib29sIHNob3VsZERyYXdGb2N1
c1JpbmcgPSBpc0ZvY3VzZWQocmVuZGVyZXIpICYmIHJlbmRlcmVyLnN0eWxlKCkub3V0bGluZVN0
eWxlSXNBdXRvKCk7CiAgICAgYm9vbCBzaG91bGRVc2VJbWFnZUJ1ZmZlciA9IHJlbmRlcmVyLnN0
eWxlKCkuZWZmZWN0aXZlWm9vbSgpICE9IDEgfHwgcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgIT0g
MTsKICAgICBib29sIHNob3VsZERyYXdDZWxsID0gdHJ1ZTsKLSAgICBpZiAoVGhlbWVNYWM6OmRy
YXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KGNlbGwsIHBhaW50SW5mby5jb250
ZXh0LCByZWN0LCBkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpLCBzaG91bGREcmF3Q2VsbCwgc2hv
dWxkRHJhd0ZvY3VzUmluZywgc2hvdWxkVXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpKQorICAgIGlmIChUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgZG9jdW1lbnRWaWV3
Rm9yKHJlbmRlcmVyKSwgc2hvdWxkRHJhd0NlbGwsIHNob3VsZERyYXdGb2N1c1JpbmcsIHNob3Vs
ZFVzZUltYWdlQnVmZmVyLCBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKSkKICAgICAgICAgcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsKIH0K
IApAQCAtMTQ5MSw3ICsxNDkxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJU
cmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAg
Ym91bmRzLnNldFgoci54KCkgKyByLndpZHRoKCkgLyAyIC0gem9vbWVkVHJhY2tXaWR0aCAvIDIp
OwogICAgIH0KIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
cGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQg
PSBsb2NhbENvbnRleHQuY2dDb250ZXh0KCk7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9
IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIApAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNv
bnN0IFBhaW50SW5mbyYgcGEKICAgICBwYWludFNsaWRlclRpY2tzKG8sIHBhaW50SW5mbywgcik7
CiAjZW5kaWYKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQs
IGJvdW5kcyk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tz
ID0geyAwLCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKQEAgLTE1MTEsNyArMTUx
MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAgICAgICAgIG1haW5TaGFkaW5nID0gYWRv
cHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54KCks
ICBib3VuZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRzLm1heFkoKSksIG1h
aW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0
cmFja1JhZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMs
IHJhZGl1cykpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKICAg
ICBjb250ZXh0ID0gbG9jYWxDb250ZXh0LmNnQ29udGV4dCgpOwogICAgIENHQ29udGV4dERyYXdT
aGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKIApAQCAtMTUzMiw3ICsxNTMyLDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgPyBzbGlkZXJUaHVtYlZlcnRpY2Fs
KCkKICAgICAgICAgOiBzbGlkZXJUaHVtYkhvcml6b250YWwoKTsKIAotICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAKICAgICAvLyBVcGRhdGUgdGhlIHZhcmlvdXMgc3RhdGVzIHdlIHJlc3BvbmQgdG8uCiAg
ICAgdXBkYXRlRW5hYmxlZFN0YXRlKHNsaWRlclRodW1iQ2VsbCwgbyk7CkBAIC0xNTY4LDE2ICsx
NTY4LDE2IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAgICAgaWYgKG8uc3R5bGUoKS5hcHBl
YXJhbmNlKCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpCiAgICAgICAgIGJvdW5kcy5zZXRI
ZWlnaHQoYm91bmRzLmhlaWdodCgpICsgdmVydGljYWxTbGlkZXJIZWlnaHRQYWRkaW5nICogby5z
dHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgZmxvYXQgem9vbUxl
dmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIEZsb2F0UmVjdCB1bnpvb21l
ZFJlY3QgPSBib3VuZHM7CiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVu
em9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAg
ICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9v
bUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJl
Y3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCks
IHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZs
b2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAg
IH0KIAogICAgIFtzbGlkZXJUaHVtYkNlbGwgZHJhd0tub2I6dW56b29tZWRSZWN0XTsKQEAgLTE1
ODgsMTIgKzE1ODgsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKIAogYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewotICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQo
KSk7CiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwogCiAg
ICAgc2V0U2VhcmNoQ2VsbFN0YXRlKG8sIHIpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgZmxvYXQg
em9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtMTYwMiw5ICsxNjAy
LDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYp
IHsKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8g
em9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3Qu
aGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNs
YXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpv
b21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56
b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRS
ZWN0LnkoKSk7CiAgICAgfQogCiAgICAgLy8gU2V0IHRoZSBzZWFyY2ggYnV0dG9uIHRvIG5pbCBi
ZWZvcmUgZHJhd2luZy4gIFRoZW4gcmVzZXQgaXQgc28gd2UgY2FuIGRyYXcgaXQgbGF0ZXIuCkBA
IC0xNjg1LDcgKzE2ODUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGlmICghaW5w
dXQtPnJlbmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExv
Y2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQp
OworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZv
LmNvbnRleHQoKSk7CiAgICAgc2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVuZGVyZXIoKSwg
cik7CiAKICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CkBA
IC0xNjk1LDcgKzE2OTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGVsc2UgaWYg
KFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGlzSGlnaGxpZ2h0ZWRdKQogICAgICAgICBbW3Nl
YXJjaCBjYW5jZWxCdXR0b25DZWxsXSBzZXRIaWdobGlnaHRlZDpOT107CiAKLSAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7
CiAKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCkBA
IC0xNzA2LDkgKzE3MDYsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGlmICh6b29t
TGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRS
ZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0
KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29t
TGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29tZWRS
ZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54
KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBbW3NlYXJjaCBjYW5jZWxCdXR0
b25DZWxsXSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9y
KG8pXTsKQEAgLTE3NjYsNyArMTc2Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvCiAgICAg
aWYgKCFpbnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8u
Y29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChw
YWludEluZm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUoKmlucHV0LT5yZW5k
ZXJlcigpLCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFy
Y2goKTsKQEAgLTE3OTksNyArMTc5OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKICAgICBp
ZiAoIWlucHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5j
b250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBh
aW50SW5mby5jb250ZXh0KCkpOwogICAgIHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRl
cmVyKCksIHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJj
aCgpOwpAQCAtMTgwNyw3ICsxODA3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlm
ICghW3NlYXJjaCBzZWFyY2hNZW51VGVtcGxhdGVdKQogICAgICAgICBbc2VhcmNoIHNldFNlYXJj
aE1lbnVUZW1wbGF0ZTpzZWFyY2hNZW51VGVtcGxhdGUoKV07CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
ZmxvYXQgem9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIEZsb2F0
UmVjdCBsb2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1Jl
Y3Qoc25hcHBlZEludFJlY3QoaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50Qm94UmVjdCgpKSld
OwpAQCAtMTgxNyw5ICsxODE3LDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlmICh6
b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29t
ZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVp
Z2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6
b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29t
ZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2
ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVj
dC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBbW3NlYXJjaCBzZWFyY2hC
dXR0b25DZWxsXSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRWaWV3
Rm9yKG8pXTsKQEAgLTE4NDMsNyArMTg0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAg
ICAgaWYgKCFjb250ZW50V2lkdGggfHwgIWNvbnRlbnRIZWlnaHQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7
CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAog
ICAgIExheW91dFNpemUgY29udGVudFNpemUoY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsK
ICAgICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRpb24gPSByZW5kZXJCbG9jay5sb2NhdGlvbigp
OwpAQCAtMTg5OSw3ICsxODk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hv
dHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAo
YWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdo
dCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29udGV4dC0+ZHJhd0ltYWdl
KHNuYXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBs
dWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHNu
YXBzaG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdp
blJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
MjA2MywxMCArMjA2MywxMCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJv
bHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29ucwogI2lmIEhBVkUoQVBQ
S0lUX1NFUlZJQ0VfQ09OVFJPTFNfU1VQUE9SVCkKICAgICBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0
b25DZWxsICpjZWxsID0gc2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwoKTsKIAotICAgIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRl
eHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJ
bmZvLmNvbnRleHQoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0
ZShyZWN0LngoKSwgcmVjdC55KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRl
KHJlY3QueCgpLCByZWN0LnkoKSk7CiAKICAgICBJbnRSZWN0IGlubmVyRnJhbWUoSW50UG9pbnQo
KSwgcmVjdC5zaXplKCkpOwogICAgIFtjZWxsIGRyYXdXaXRoRnJhbWU6aW5uZXJGcmFtZSBpblZp
ZXc6ZG9jdW1lbnRWaWV3Rm9yKHJlbmRlcmVyKV07CkBAIC0yNDYyLDggKzI0NjIsOCBAQCBib29s
IFJlbmRlclRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgY29uc3QgUGFpbnRJbgogCiAgICAgQXR0YWNobWVudExheW91dCBsYXlvdXQoYXR0YWNo
bWVudCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRl
eHQ7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmY29udGV4
dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsK
KyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CiAKICAgICBjb250
ZXh0LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShwYWludFJlY3QubG9jYXRpb24oKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggNTVjMDhk
NTY1MjNlOTVmZGU3MjU2M2VjZTI0ODgxYWYxMDA5MDNjYS4uNDc3MTkzYzEzZWU1ZmE5NjNhOTZk
MTVhOGZiMjA0ODg3OGRkNTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVTYWZhcmkuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGEKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gY29udHJvbFNpemVGb3JGb250
KG8uc3R5bGUoKSk7CiAKICAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IGluZmxhdGVSZWN0KHIs
IGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV0sIGNoZWNrYm94TWFyZ2lucyhjb250cm9sU2l6
ZSkpOyAgCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OkNoZWNrYm94UGFydCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xT
aXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6
OkNoZWNrYm94UGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgaW5m
bGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwogCiAgICAgcmV0dXJu
IGZhbHNlOwogfQpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAg
ICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChvLnN0eWxl
KCkpOwogIAogICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QociwgcmFkaW9T
aXplcygpW2NvbnRyb2xTaXplXSwgcmFkaW9NYXJnaW5zKGNvbnRyb2xTaXplKSk7ICAgIAotICAg
IHBhaW50VGhlbWVQYXJ0KFJhZGlvQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CisgICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01NzcsNyArNTc3LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBv
LCBjb25zdCBQYWludEluZm8mIHBhaW4KICAgICB9IGVsc2UKICAgICAgICAgcGFydCA9IFNhZmFy
aVRoZW1lOjpTcXVhcmVCdXR0b25QYXJ0OwogCi0gICAgcGFpbnRUaGVtZVBhcnQocGFydCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xT
aXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQocGFydCwgcGFpbnRJ
bmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6
ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTg1LDcg
KzU4NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEZpZWxkKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRo
ZW1lTGlicmFyeSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpUZXh0Rmll
bGRQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRy
b2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0ZSk7CisgICAgcGFpbnRU
aGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8p
ICYgfkZvY3VzZWRTdGF0ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01OTgsMTAgKzU5
OCwxMCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludENhcHNMb2NrSW5kaWNhdG9yKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbgogI2lmIGRlZmluZWQoU0FGQVJJX1RIRU1F
X1ZFUlNJT04pICYmIFNBRkFSSV9USEVNRV9WRVJTSU9OID49IDEKICAgICBBU1NFUlQoU2FmYXJp
VGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rp
c2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KENhcHNMb2NrUGFy
dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6
ZSkwLCAoVGhlbWVDb250cm9sU3RhdGUpMCk7CisgICAgcGFpbnRUaGVtZVBhcnQoQ2Fwc0xvY2tQ
YXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9s
U2l6ZSkwLCAoVGhlbWVDb250cm9sU3RhdGUpMCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiAjZWxz
ZQpAQCAtNjEzLDcgKzYxMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFy
ZWEoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiB7CiAgICAgQVNT
RVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpUZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsK
KyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4dEFyZWFQYXJ0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRlcm1p
bmVTdGF0ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
NjYyLDcgKzY2Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QoY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGluCiAgICAgaWYgKHIud2lkdGgo
KSA+PSBtaW5pbXVtTWVudUxpc3RTaXplKG8uc3R5bGUoKSkpCiAgICAgICAgIGluZmxhdGVkUmVj
dCA9IGluZmxhdGVSZWN0KGluZmxhdGVkUmVjdCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJnaW5zKGNv
bnRyb2xTaXplKSk7CiAKLSAgICBwYWludFRoZW1lUGFydChEcm9wRG93bkJ1dHRvblBhcnQsIGlu
Zm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUs
IGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChEcm9wRG93bkJ1dHRvblBh
cnQsIGluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRy
b2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC03
MjMsOSArNzIzLDkgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRv
bkdyYWRpZW50cyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnMKICAgICBpZiAoci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIHBhaW50SW5m
by5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAKICAg
ICBGbG9hdFJvdW5kZWRSZWN0IGJvdW5kID0gRmxvYXRSb3VuZGVkUmVjdChvLnN0eWxlKCkuZ2V0
Um91bmRlZEJvcmRlckZvcihyKSk7CiAgICAgaW50IHJhZGl1cyA9IGJvdW5kLnJhZGlpKCkudG9w
TGVmdCgpLndpZHRoKCk7CkBAIC03NDksMzQgKzc0OSwzNCBAQCB2b2lkIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29ucwogICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGxlZnRTaGFkaW5nID0gYWRvcHRDRihD
R1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIueCgpLCAgci55KCkpLCBD
R1BvaW50TWFrZShyLngoKSArIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZh
bHNlLCBmYWxzZSkpOwogCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5n
ID0gYWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4
WCgpLCAgci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWlu
RnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xp
cFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJvdW5kKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3Vu
ZCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5yZXN0b3JlKCk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4
dCwgdG9wR3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm91bmQucmFk
aWkoKS50b3BMZWZ0KCksIGJvdW5kLnJhZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRT
aXplKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRv
cExlZnQoKSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkp
OwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5yZXN0b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgICAgICBwYWludEluZm8uY29udGV4
dCgpLnNhdmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21H
cmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgp
LCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3VuZC5yYWRpaSgpLmJv
dHRvbVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50
U2l6ZSgpLCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3VuZC5yYWRp
aSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4
dCwgYm90dG9tU2hhZGluZy5nZXQoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KIAot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
YXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludElu
Zm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLmNsaXBSb3VuZGVkUmVjdChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29u
dGV4dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRl
eHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIHBhaW50SW5mby5j
b250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiB9
CiAKIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNzk4LDEwICs3OTgsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGUKICAgICBpZiAoYm91bmRzLndpZHRoKCkgPCBhcnJvd1dpZHRoICsgYXJy
b3dQYWRkaW5nTGVmdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIu
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoTm9T
dHJva2UsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgRmxvYXRQb2ludCBhcnJvd1szXTsK
ICAgICBhcnJvd1swXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgLSBhcnJvd0hlaWdo
dCAvIDIuMGYpOwpAQCAtODA5LDcgKzgwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlCiAg
ICAgYXJyb3dbMl0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dXaWR0aCAvIDIuMGYsIGNl
bnRlclkgKyBhcnJvd0hlaWdodCAvIDIuMGYpOwogCiAgICAgLy8gRHJhdyB0aGUgYXJyb3cKLSAg
ICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOwor
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUp
OwogCiAgICAgQ29sb3IgbGVmdFNlcGFyYXRvckNvbG9yKDAsIDAsIDAsIDQwKTsKICAgICBDb2xv
ciByaWdodFNlcGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUsIDQwKTsKQEAgLTgxOSwxNyArODE5
LDE3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlCiAgICAgaW50IGxlZnRFZGdlT2ZTZXBhcmF0
b3IgPSBzdGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJyb3dQYWRkaW5nTGVmdCk7IC8vIEZJ
WE1FOiBSb3VuZD8KIAogICAgIC8vIERyYXcgdGhlIHNlcGFyYXRvciB0byB0aGUgbGVmdCBvZiB0
aGUgYXJyb3dzCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxKTsK
LSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3IsIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQ
b2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9y
LCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQo
bGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRn
ZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsg
c2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0
LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC05MzUsMTAgKzkzNSwxMCBAQCBib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJ
bmZvJgogICAgIGVsc2UgaWYgKG8uc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGlj
YWxQYXJ0KQogICAgICAgICBib3VuZHMuc2V0UmVjdChJbnRSZWN0KHIueCgpICsgci53aWR0aCgp
IC8gMiAtIHRyYWNrV2lkdGggLyAyLCByLnkoKSwgdHJhY2tXaWR0aCwgci5oZWlnaHQoKSkpOwog
Ci0gICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VS
R0JDb2xvclNwYWNlUmVmKCk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29u
dGV4dCwgYm91bmRzLnJlY3QoKSk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBt
YWluQ2FsbGJhY2tzID0geyAwLCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKQEAg
LTk0OSw5ICs5NDksOSBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNr
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJgogICAgIGVsc2UKICAgICAg
ICAgbWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQ
b2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMucmVjdCgpLnkoKSksIENHUG9pbnRN
YWtlKGJvdW5kcy5yZWN0KCkueCgpLCBib3VuZHMucmVjdCgpLm1heFkoKSksIG1haW5GdW5jdGlv
bi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJv
dW5kZWRSZWN0KGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJl
Y3QoYm91bmRzKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGlu
Zy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC05
NjcsNyArOTY3LDcgQEAgY29uc3QgZmxvYXQgdmVydGljYWxTbGlkZXJIZWlnaHRQYWRkaW5nID0g
MC4xZjsKIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYg
cikKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwotICAgIHBhaW50VGhlbWVQ
YXJ0KFNsaWRlclRodW1iUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBOU1NtYWxsQ29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRo
ZW1lUGFydChTbGlkZXJUaHVtYlBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIE5TU21hbGxDb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtOTkwLDcgKzk5MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZh
cmk6OnBhaW50U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludElu
Zm8mCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKIAotICAgIHBhaW50VGhl
bWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSwgciwgY29udHJvbFNpemVGcm9tUmVjdChyLCBzZWFyY2hGaWVsZFNp
emVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhl
bWU6OlNlYXJjaEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgY29udHJvbFNpemVGcm9tUmVjdChyLCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDUxLDcgKzEwNTEsNyBA
QCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29ucwogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVu
ZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAg
ICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRy
b2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5l
U3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHNl
YXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXpl
cygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTEw
Niw3ICsxMTA2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJl
c3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QKIAogICAgIEludFJlY3Qgc2Vh
cmNoUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNm
b3JtcygpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVz
dWx0c0RlY29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHNlYXJjaFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRT
aXplcygpKSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQo
KS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFy
Y2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBib29sIFJlbmRlclRoZW1lU2Fm
YXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbgogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRp
bmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1lUGFydChTYWZh
cmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJj
aFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWlu
dFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwgcGFp
bnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNp
emVGcm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcAppbmRleCAxNjM1YTc0ZTU4OGI1OGNkOWQ0OTE0MTRmMWNmYzg3
YjNlZWJiY2E1Li43MTQ3ODg5YjVjODg2NTA2YjI5ZjkwOTZjMGQwZGI5Y2UyMGM4MjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTYyMiw3ICs2
MjIsNyBAQCBUaGVtZURhdGEgUmVuZGVyVGhlbWVXaW46OmdldFRoZW1lRGF0YShjb25zdCBSZW5k
ZXJPYmplY3QmIG8sIENvbnRyb2xTdWJQYXJ0IHN1YgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXN0YXRpYyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
UmVuZGVyT2JqZWN0JiBvLCBIQU5ETEUgdGhlbWUsIGNvbnN0IFRoZW1lRGF0YSYgdGhlbWVEYXRh
LCBjb25zdCBJbnRSZWN0JiByKQorc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0aGVtZSwgY29uc3Qg
VGhlbWVEYXRhJiB0aGVtZURhdGEsIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgYm9vbCBhbHBo
YUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHRoZW1lKQpAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRp
YyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBIQU5ETEUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghYWxwaGFCbGVu
ZCAmJiAhY29udGV4dC0+aXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCisgICAgaWYgKCFhbHBoYUJs
ZW5kICYmICFjb250ZXh0LmlzSW5UcmFuc3BhcmVuY3lMYXllcigpKQogICAgICAgICBESUJQaXhl
bERhdGE6OnNldFJHQkFCaXRtYXBBbHBoYSh3aW5kb3dzQ29udGV4dC5oZGMoKSwgciwgMjU1KTsK
IH0KIApAQCAtNzQ2LDcgKzc0Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVudUxp
c3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvCiAgICAgICAg
IHBhcnQgPSBURlBfVEVYVEZJRUxEOwogICAgIH0KIAotICAgIGRyYXdDb250cm9sKHBhaW50SW5m
by5jb250ZXh0LCByZW5kZXJlciwgdGhlbWUsIFRoZW1lRGF0YShwYXJ0LCBkZXRlcm1pbmVTdGF0
ZShyZW5kZXJlcikpLCBJbnRSZWN0KHJlY3QpKTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8u
Y29udGV4dCgpLCByZW5kZXJlciwgdGhlbWUsIFRoZW1lRGF0YShwYXJ0LCBkZXRlcm1pbmVTdGF0
ZShyZW5kZXJlcikpLCBJbnRSZWN0KHJlY3QpKTsKICAgICAKICAgICByZXR1cm4gcGFpbnRNZW51
TGlzdEJ1dHRvbkRlY29yYXRpb25zKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpLCBwYWlu
dEluZm8sIEZsb2F0UmVjdChyZWN0KSk7CiB9CkBAIC04MDgsNyArODA4LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJv
eCYgcmVuZGVyZXIsIGMKICAgICAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChidXR0b25SZWN0Lndp
ZHRoKCkgKyB2aXN0YU1lbnVMaXN0QnV0dG9uT3V0c2V0KTsKICAgICB9CiAKLSAgICBkcmF3Q29u
dHJvbChwYWludEluZm8uY29udGV4dCwgcmVuZGVyZXIsIG1lbnVMaXN0VGhlbWUoKSwgZ2V0VGhl
bWVEYXRhKHJlbmRlcmVyKSwgYnV0dG9uUmVjdCk7CisgICAgZHJhd0NvbnRyb2wocGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVuZGVyZXIsIG1lbnVMaXN0VGhlbWUoKSwgZ2V0VGhlbWVEYXRhKHJlbmRl
cmVyKSwgYnV0dG9uUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC04OTIsNyArODky
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFAKIAogICAgIHN0YXRpYyBJbWFnZSogY2FuY2Vs
SW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbCIpLmxlYWtS
ZWYoKTsKICAgICBzdGF0aWMgSW1hZ2UqIGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2Fk
UGxhdGZvcm1SZXNvdXJjZSgic2VhcmNoQ2FuY2VsUHJlc3NlZCIpLmxlYWtSZWYoKTsKLSAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKGlzUHJlc3NlZChvKSA/IGNhbmNlbFByZXNzZWRJ
bWFnZSA6IGNhbmNlbEltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKGlzUHJlc3NlZChvKSA/IGNhbmNlbFByZXNz
ZWRJbWFnZSA6IGNhbmNlbEltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTQwLDcgKzk0MCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVy
T2JqZWN0JiBvCiAgICAgYm91bmRzLnNldFkocGFyZW50Qm94LnkoKSArIChwYXJlbnRCb3guaGVp
Z2h0KCkgLSBib3VuZHMuaGVpZ2h0KCkgKyAxKSAvIDIpOwogICAgIAogICAgIHN0YXRpYyBJbWFn
ZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1h
Z25pZmllciIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKG1h
Z25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKG1hZ25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JT
cGFjZSgpLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTc1LDcgKzk3NSw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNv
bnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgp
ICsgKHBhcmVudEJveC5oZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAKICAg
ICBzdGF0aWMgSW1hZ2UqIG1hZ25pZmllckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291
cmNlKCJzZWFyY2hNYWduaWZpZXJSZXN1bHRzIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCks
IGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1h
Z2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC0xMTM5LDE0ICsxMTM5LDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWV0
ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mCiAgICAg
aW50IHJlbWFpbmluZyA9IHN0YXRpY19jYXN0PGludD4oKDEuMCAtIGVsZW1lbnQtPnZhbHVlUmF0
aW8oKSkgKiBzdGF0aWNfY2FzdDxkb3VibGU+KHJlY3Quc2l6ZSgpLndpZHRoKCkpKTsKIAogICAg
IC8vIERyYXcgdGhlIGJhY2tncm91bmQKLSAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4
dCwgcmVuZGVyT2JqZWN0LCBwcm9ncmVzc0JhclRoZW1lKCksIHRoZW1lLCByZWN0KTsKKyAgICBk
cmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgpLCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFy
VGhlbWUoKSwgdGhlbWUsIHJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgcHJvZ3Jlc3MgcG9ydGlv
bgogICAgIEludFJlY3QgY29tcGxldGVkUmVjdChyZWN0KTsKICAgICBjb21wbGV0ZWRSZWN0LmNv
bnRyYWN0KHJlbWFpbmluZywgMCk7CiAKICAgICB0aGVtZS5tX3BhcnQgPSBQUF9GSUxMOwotICAg
IGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFy
VGhlbWUoKSwgdGhlbWUsIGNvbXBsZXRlZFJlY3QpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5m
by5jb250ZXh0KCksIHJlbmRlck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgY29t
cGxldGVkUmVjdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uY3BwCmluZGV4IDVmN2NlMWNlNzY5ZGMxNzZlNzRiYTcwNjY0MjM5YTZm
OGFiOTRhODcuLmU5MzU1YWE5YzE1Zjk5ZTBmYzMxODFlNmQxZmI0NTRiOTZjODczODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMTgwLDExICsxODAsMTEg
QEAgdm9pZCBSZW5kZXJWaWRlbzo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKIAogICAgIExheW91dFJlY3QgY29udGVudFJlY3Qg
PSBjb250ZW50Qm94UmVjdCgpOwogICAgIGNvbnRlbnRSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBib29s
IGNsaXAgPSAhY29udGVudFJlY3QuY29udGFpbnMocmVjdCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlwKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0g
ICAgICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXAo
Y29udGVudFJlY3QpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAgICAgIHBhaW50
SW50b1JlY3QoY29udGV4dCwgcmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKaW5kZXggOGYwYjZlNjE5NGUwNzUyZDY2NzNjOTIxZTlkYzJmYjYwNzNkYjNmMy4uMDRh
MDhkNWRlZDAzYmQzZTVkMzdkOTdhYWMxZTYzNjJkOTAzZTVkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgUmVuZGVyVmll
dzo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCkKIAogICAgIC8vIFRoaXMgYXZvaWRzIHBhaW50aW5nIGdhcmJhZ2UgYmV0d2VlbiBjb2x1
bW5zIGlmIHRoZXJlIGlzIGEgY29sdW1uIGdhcC4KICAgICBpZiAoZnJhbWVWaWV3KCkucGFnaW5h
dGlvbigpLm1vZGUgIT0gUGFnaW5hdGlvbjo6VW5wYWdpbmF0ZWQgJiYgcGFpbnRJbmZvLnNob3Vs
ZFBhaW50V2l0aGluUm9vdCgqdGhpcykpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxs
UmVjdChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVj
dChwYWludEluZm8ucmVjdCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIAogICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgcGFpbnRPZmZz
ZXQpOwogfQpAQCAtNjEzLDEyICs2MTMsMTIgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERl
Y29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAg
ICAgIENvbG9yIGRvY3VtZW50QmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3KCkuZG9jdW1lbnRC
YWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gKGJhY2tn
cm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlICYmIGRvY3VtZW50QmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSkgPyBkb2N1bWVudEJhY2tncm91bmRDb2xvciA6IGZyYW1lVmlldygpLmJhc2VCYWNr
Z3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYgKGJhY2tncm91bmRDb2xvci5hbHBoYSgpKSB7Ci0g
ICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gcGFpbnRJbmZv
LmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dyb3VuZENv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOworICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IHBhaW50SW5mby5jb250ZXh0KCku
Y29tcG9zaXRlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3QocGFpbnRJbmZvLnJlY3QsIGJhY2tncm91bmRDb2xvciwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRD
b21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsZWFyUmVjdChwYWludEluZm8ucmVjdCk7Cisg
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsZWFyUmVjdChwYWludEluZm8ucmVjdCk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
V2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmlu
ZGV4IGFjN2M4ODgyY2ZjNTgyMzYxMzUwYWNjYzk4NzEzZjExOGJjMWIyNTMuLjk5NGNiMGMyY2Y2
ZmZlNzgyODY3ZjUyZDFmMmNhOTM0NzA0MmVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0yMjgsMTQgKzIyOCwxNCBAQCB2b2lkIFJlbmRlcldpZGdl
dDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50TwogICAgIC8vIFdoZW4gcGFpbnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5nIGxh
eWVycywgdHggYW5kIHR5IGFyZSByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5n
IGxheWVyLAogICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RN
IGFuZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVn
LWluIGRyYXdpbmcuCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkgewotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwog
ICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0KICAgICAv
LyBGSVhNRTogUmVtb3ZlIHJlcGFpbnRyZWN0IGVuY29sc2luZy9pbnRlZ3JhbCBzbmFwcGluZyB3
aGVuIFJlbmRlcldpZGdldCBiZWNvbWVzIGRldmljZSBwaXhlbCBzbmFwcGVkLgotICAgIG1fd2lk
Z2V0LT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7
CisgICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0
KHBhaW50UmVjdCkpOwogCiAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKLSAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQp
OwogCiAgICAgaWYgKGlzPEZyYW1lVmlldz4oKm1fd2lkZ2V0KSkgewogICAgICAgICBGcmFtZVZp
ZXcmIGZyYW1lVmlldyA9IGRvd25jYXN0PEZyYW1lVmlldz4oKm1fd2lkZ2V0KTsKQEAgLTI3NSwy
NiArMjc1LDI2IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIC8vIFB1c2ggYSBjbGlwIGlmIHdlIGhhdmUgYSBib3JkZXIgcmFkaXVzLCBzaW5j
ZSB3ZSB3YW50IHRvIHJvdW5kIHRoZSBmb3JlZ3JvdW5kIGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50
ZWQuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHJvdW5kZWRJbm5l
clJlY3QgPSBGbG9hdFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KGJvcmRlclJlY3QsCiAgICAgICAgICAgICBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSwgcGFk
ZGluZ0JvdHRvbSgpICsgYm9yZGVyQm90dG9tKCksIHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0
KCksIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKSwgdHJ1ZSwgdHJ1ZSkpOwotICAgICAg
ICBjbGlwUm91bmRlZElubmVyUmVjdChwYWludEluZm8uY29udGV4dCwgYm9yZGVyUmVjdCwgcm91
bmRlZElubmVyUmVjdCk7CisgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5j
b250ZXh0KCksIGJvcmRlclJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOwogICAgIH0KIAogICAgIGlm
IChtX3dpZGdldCkKICAgICAgICAgcGFpbnRDb250ZW50cyhwYWludEluZm8sIHBhaW50T2Zmc2V0
KTsKIAogICAgIGlmIChzdHlsZSgpLmhhc0JvcmRlclJhZGl1cygpKQotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3Rv
cmUoKTsKIAogICAgIC8vIFBhaW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3ZlciBz
ZWxlY3RlZCB3aWRnZXRzLgogICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCkucHJp
bnRpbmcoKSkgewogICAgICAgICAvLyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFic29s
dXRlLCBub3QgcGFpbnRpbmcgY29vcmRpbmF0ZXMuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxlY3Rpb25SZWN0KCkpLCBzZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVj
dGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCiAg
ICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+Y2FuUmVzaXplKCkpCi0gICAgICAgIGxheWVy
KCktPnBhaW50UmVzaXplcihwYWludEluZm8uY29udGV4dCwgcm91bmRlZEludFBvaW50KGFkanVz
dGVkUGFpbnRPZmZzZXQpLCBwYWludEluZm8ucmVjdCk7CisgICAgICAgIGxheWVyKCktPnBhaW50
UmVzaXplcihwYWludEluZm8uY29udGV4dCgpLCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWlu
dE9mZnNldCksIHBhaW50SW5mby5yZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJXaWRnZXQ6OnNldE92
ZXJsYXBUZXN0UmVzdWx0KGJvb2wgaXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDM5Zjk3OWQ2MzM1ZjM5OGM5ZDc4YjQxMzRmODNh
ZmViZWViMDdjYTEuLmM5ZjBhMDgyNTg1MmE0NWE0NDkzYWZlNzMyY2E2YWQzN2MyMWY2ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTQ3NSw3ICs0
NzUsNyBAQCBHYXBSZWN0cyBSb290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKFJlbmRlckJs
b2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaQogICAgICAgICAgICAgICAgIExheW91dFJl
Y3QgZ2FwUmVjdCA9IHJvb3RCbG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9j
a1BoeXNpY2FsUG9zaXRpb24sIGxvZ2ljYWxSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoaXNQ
cmV2aW91c0JveFNlbGVjdGVkICYmIGdhcFJlY3Qud2lkdGgoKSA+IDAgJiYgZ2FwUmVjdC5oZWln
aHQoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhaW50SW5mbyAmJiBib3gtPnBh
cmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KGdhcFJlY3Qs
IGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIGJv
eC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3QoZ2FwUmVjdCwgYm94
LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5w
YXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIFZpc2libGVTZWxlY3Rpb24gbWF5IGJlIG5vbi1jb250aWd1b3VzLCBzZWUgY29t
bWVudCBhYm92ZS4KICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVuaXRlQ2VudGVyKGdhcFJl
Y3QpOwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCA1OWQxYTdkZTU2NzQ3MTI3
YjMwMzQ1NzU4YWMyNmE2ZjFjYzE2MWEyLi5mMWM2YjEwZTdiZGRjMjMwMTZhYzA2NTI1YWZhMjRm
OTM5MTNhM2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgcGFpbnRGbG93
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50
SW5mbyYgcGFpCiAKICAgICBib29sIGRlYnVnQm9yZGVyc0VuYWJsZWQgPSBmbG93LmZyYW1lKCku
c2V0dGluZ3MoKS5zaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgY29uc3QgRm9u
dENhc2NhZGUmIGZvbnQgPSBzdHlsZS5mb250Q2FzY2FkZSgpOwogICAgIFRleHRQYWludFN0eWxl
IHRleHRQYWludFN0eWxlID0gY29tcHV0ZVRleHRQYWludFN0eWxlKGZsb3cuZnJhbWUoKSwgc3R5
bGUsIHBhaW50SW5mbyk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIHRleHRQYWludFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4
IDdhYTU0ZmI4YzIxM2QwMzhlMTk4MzFiZDkyNTExMGExODdjZTRlNGYuLmI2ZGU3OWU4YjI0NjU5
OWZkMmE0NTkyNGM3Njk0YTIxN2E4OGIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC05NSwzMyArOTUsMzMg
QEAgdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVuZGVyRmxleGlibGVCb3g6OnBhaW50
KGluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKKyAgICBp
ZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEludFBvaW50IGFkanVz
dGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigp
KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250
ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250
ZXh0KCkpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYp
OwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGlu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNS
R0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOwog
ICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgp
LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUo
SW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0
aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJh
d0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpLCBJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKLSAgICBpbmZvLmNvbnRl
eHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNl
dCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRX
aWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOworICAgIGluZm8uY29udGV4dCgpLmRy
YXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zm
c2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpLCBJbnRQb2ludChhZGp1c3RlZFBh
aW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKKyAgICBpbmZvLmNvbnRl
eHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQ
YWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSksIEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0
ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOworICAgIGlu
Zm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVz
dGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBl
ZE9mZnNldEhlaWdodCgpKSk7CiAgICAgCiAgICAgaW50IHRvcFN0YXJ0ID0gcGFkZGluZ1RvcCgp
OwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAw
KSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENv
bG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQt
PmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkg
KyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRv
cFN0YXJ0KSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCks
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKICAgICAKICAgICBpbnQgYmFz
ZWxpbmUgPSByb3VuZFRvSW50KGJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0
cnVlLCBIb3Jpem9udGFsTGluZSkpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tl
Q29sb3IoQ29sb3IoMjU1LCAwLCAwKSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4
dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAg
ICAKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSwgSW50UG9pbnQoYWRq
dXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xp
bmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQu
eSgpICsgYmFzZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVs
U25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUp
KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoREVCVUdfTUFUSF9MQVlPVVQpCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5j
cHAKaW5kZXggNTFmMTY4ZWFlYmY2YTJkOGIzZGRmYjdhMDQxNWE3NzQyNDgyZDMwNS4uNTE5YmIz
ODg4OTYzMjY1Mzg1Njk2ODI4ZWEwYzZiN2YwNjVkMmQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlvdXQoKQogdm9p
ZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KGlu
Zm8sIHBhaW50T2Zmc2V0KTsKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2Fi
bGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVuZGVy
Qm94KiBkZW5vbWluYXRvcldyYXBwZXIgPSBsYXN0Q2hpbGRCb3goKTsKQEAgLTE1MCwxMiArMTUw
LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAKICAgICBJbnRQb2ludCBhZGp1c3RlZFBh
aW50T2Zmc2V0ID0gcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIGRl
bm9taW5hdG9yV3JhcHBlci0+bG9jYXRpb24oKSArIExheW91dFBvaW50KDAsIG1fbGluZVRoaWNr
bmVzcyAvIDIpKTsKICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGluZm8uY29udGV4dCgpKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRo
aWNrbmVzcyhtX2xpbmVUaGlja25lc3MpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5
bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdC
KTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5k
ZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGRlbm9taW5h
dG9yV3JhcHBlci0+b2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGluZm8u
Y29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuZHJh
d0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgZGVub21pbmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgp
LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKIH0KIAogT3B0aW9uYWw8aW50PiBSZW5kZXJN
YXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcApp
bmRleCAxNzQ2OGMxMTk5MzA0YTcwZDY3Yjc1MDBiZTJkYjc0MDc1ZDQyZTc1Li5iODZlMzYyOWE2
Yjc4ZTQwNGE1ZmJhZGU0NDc4ZDJlNDc0NTQ3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcApAQCAtOTgs
NyArOTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAogewogICAgIFJlbmRlck1hdGhNTEJs
b2NrOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7CiAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5w
YWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8
fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQo
KS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3Vu
ZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgTWF0aE1MTWVuY2xvc2VFbGVtZW50KiBtZW5jbG9zZSA9IGRvd25jYXN0PE1hdGhN
TE1lbmNsb3NlRWxlbWVudD4oZWxlbWVudCgpKTsKQEAgLTExNCwyMyArMTE0LDIzIEBAIHZvaWQg
UmVuZGVyTWF0aE1MTWVuY2xvc2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgICAgIGludCBoYWxmYm94V2lkdGggPSByZWN0LndpZHRo
KCkgLyAyOwogICAgICAgICBpbnQgaGFsZmJveEhlaWdodCA9IHJlY3QuaGVpZ2h0KCkgLyAyOwog
Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250
ZXh0KTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMSk7Ci0gICAg
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICBp
bmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKKyAgICAgICAg
aW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgICAgICBpbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgLy8gVE9ETyBhZGQgc3VwcG9y
dCBmb3Igbm90YXRpb24gdmFsdWUgdXBkaWFnb25hbGFycm93IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0NjYKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBub3RhdGlvbmFsVmFsdWVTaXplOyBpKyspIHsKICAgICAgICAgICAgIGlmIChub3RhdGlvblZh
bHVlc1tpXSA9PSAidXBkaWFnb25hbHN0cmlrZSIpCi0gICAgICAgICAgICAgICAgaW5mby5jb250
ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3AgKyBib3hIZWlnaHQpLCBJbnRQb2ludChs
ZWZ0ICsgYm94V2lkdGgsIHRvcCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRy
YXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBi
b3hXaWR0aCwgdG9wKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9
PSAiZG93bmRpYWdvbmFsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRy
YXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9w
ICsgYm94SGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
SW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3AgKyBib3hI
ZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJ2ZXJ0
aWNhbHN0cmlrZSIpCi0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQ
b2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdp
ZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5k
cmF3TGluZShJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3ApLCBJbnRQb2ludChsZWZ0
ICsgaGFsZmJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KG5vdGF0aW9uVmFsdWVzW2ldID09ICJob3Jpem9udGFsc3RyaWtlIikKLSAgICAgICAgICAgICAg
ICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWln
aHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKKyAg
ICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3Ag
KyBoYWxmYm94SGVpZ2h0KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3AgKyBoYWxmYm94
SGVpZ2h0KSk7CiAgICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAiY2ly
Y2xlIikgewotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICAgICAgaW5m
by5jb250ZXh0LT5kcmF3RWxsaXBzZShyZWN0KTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRl
eHQoKS5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3RWxsaXBzZShyZWN0KTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImxvbmdkaXYiKQogICAg
ICAgICAgICAgICAgIGlzRGVmYXVsdExvbmdEaXYgPSB0cnVlOwogICAgICAgICB9CkBAIC0xNDQs
OSArMTQ0LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBtaWR4UG9pbnQgPSBzdHlsZSgpLnBhZGRpbmdMZWZ0KCkudmFsdWUoKTsK
ICAgICAgICAgICAgIHJvb3QuYWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBvaW50KGxlZnQsIHRvcCks
IEZsb2F0UG9pbnQobGVmdCArIG1pZHhQb2ludCwgdG9wICsgaGFsZmJveEhlaWdodCksIEZsb2F0
UG9pbnQobGVmdCwgdG9wICsgYm94SGVpZ2h0KSk7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQt
PnN0cm9rZVBhdGgocm9vdCk7CisgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zdHJva2VQYXRo
KHJvb3QpOwogICAgICAgICAgICAgaWYgKGlzRGVmYXVsdExvbmdEaXYpCi0gICAgICAgICAgICAg
ICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQb2ludChs
ZWZ0ICsgYm94V2lkdGggKyBtaWR4UG9pbnQsIHRvcCkpOworICAgICAgICAgICAgICAgIGluZm8u
Y29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBi
b3hXaWR0aCArIG1pZHhQb2ludCwgdG9wKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0
b3IuY3BwCmluZGV4IDkzOGY2YmM4ZTBkMGY1OWM0NzMyYzk5MzFjODU4MjMyMWNlY2U3ZGEuLjNj
ZmViMjFjYThkMjU3ZjNlZmU1MGFhMWU5Y2RjMTdlNDkyMmMxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3Bw
CkBAIC0xNzk3LDEyICsxNzk3LDEyIEBAIExheW91dFJlY3QgUmVuZGVyTWF0aE1MT3BlcmF0b3I6
OnBhaW50R2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBHbHlwaERhdGEmIGRhCiAgICAgfQog
CiAgICAgLy8gQ2xpcHBpbmcgdGhlIGVuY2xvc2luZyBJbnRSZWN0IGF2b2lkcyBhbnkgcG90ZW50
aWFsIGlzc3VlcyBhdCBqb2luZWQgZWRnZXMuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlw
Qm91bmRzKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5j
b250ZXh0KCkpOworICAgIGluZm8uY29udGV4dCgpLmNsaXAoY2xpcEJvdW5kcyk7CiAKICAgICBH
bHlwaEJ1ZmZlciBidWZmZXI7CiAgICAgYnVmZmVyLmFkZChkYXRhLmdseXBoLCBkYXRhLmZvbnQs
IGFkdmFuY2VGb3JHbHlwaChkYXRhKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3R2x5cGhzKHN0
eWxlKCkuZm9udENhc2NhZGUoKSwgKmRhdGEuZm9udCwgYnVmZmVyLCAwLCAxLCBvcmlnaW4pOwor
ICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0
YS5mb250LCBidWZmZXIsIDAsIDEsIG9yaWdpbik7CiAKICAgICByZXR1cm4gZ2x5cGhQYWludFJl
Y3Q7CiB9CkBAIC0xODE4LDcgKzE4MTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpm
aWxsV2l0aFZlcnRpY2FsRXh0ZW5zaW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdAogICAg
IGlmIChmcm9tLnkoKSA9PSB0by55KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCiAgICAgRmxv
YXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgobV9zdHJldGNoeURhdGEuZXh0ZW5z
aW9uKCkpOwogCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9y
OjpmaWxsV2l0aFZlcnRpY2FsRXh0ZW5zaW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdAog
ICAgIExheW91dFJlY3QgY2xpcEJvdW5kcyA9IGluZm8ucmVjdDsKICAgICBjbGlwQm91bmRzLnNo
aWZ0WUVkZ2VUbyhmcm9tLnkoKSk7CiAgICAgY2xpcEJvdW5kcy5zaGlmdE1heFlFZGdlVG8odG8u
eSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPmNsaXAoY2xpcEJvdW5kcyk7CisgICAgaW5mby5jb250
ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAgIC8vIFRyaW1taW5nIG1heSByZW1vdmUgdXAg
dG8gdHdvIHBpeGVscyBmcm9tIHRoZSB0b3Agb2YgdGhlIGV4dGVuZGVyIGdseXBoLCBzbyB3ZSBt
b3ZlIGl0IHVwIGJ5IHR3byBwaXhlbHMuCiAgICAgZmxvYXQgb2Zmc2V0VG9HbHlwaFRvcCA9IGds
eXBoQm91bmRzLnkoKSArIDI7CkBAIC0xODU2LDE0ICsxODU2LDE0IEBAIHZvaWQgUmVuZGVyTWF0
aE1MT3BlcmF0b3I6OmZpbGxXaXRoSG9yaXpvbnRhbEV4dGVuc2lvbkdseXBoKFBhaW50SW5mbyYg
aW5mbywgY29uCiAgICAgaWYgKGZyb20ueCgpID09IHRvLngoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQo
KSk7CiAKICAgICAvLyBDbGlwcGluZyB0aGUgZXh0ZW5kZXIgcmVnaW9uIGhlcmUgYWxsb3dzIHVz
IHRvIGRyYXcgdGhlIGJvdHRvbSBleHRlbmRlciBnbHlwaCBpbnRvIHRoZQogICAgIC8vIHJlZ2lv
bnMgb2YgdGhlIGJvdHRvbSBnbHlwaCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IG92ZXJkcmF3ICho
YWlyeSBwaXhlbHMpIGFuZCBzaW1wbGlmaWVzIGxhdGVyIGNsaXBwaW5nLgogICAgIExheW91dFJl
Y3QgY2xpcEJvdW5kcyA9IGluZm8ucmVjdDsKICAgICBjbGlwQm91bmRzLnNoaWZ0WEVkZ2VUbyhm
cm9tLngoKSk7CiAgICAgY2xpcEJvdW5kcy5zaGlmdE1heFhFZGdlVG8odG8ueCgpKTsKLSAgICBp
bmZvLmNvbnRleHQtPmNsaXAoY2xpcEJvdW5kcyk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChj
bGlwQm91bmRzKTsKIAogICAgIC8vIFRyaW1taW5nIG1heSByZW1vdmUgdXAgdG8gdHdvIHBpeGVs
cyBmcm9tIHRoZSBsZWZ0IG9mIHRoZSBleHRlbmRlciBnbHlwaCwgc28gd2UgbW92ZSBpdCBsZWZ0
IGJ5IHR3byBwaXhlbHMuCiAgICAgZmxvYXQgb2Zmc2V0VG9HbHlwaExlZnQgPSAtMjsKQEAgLTE4
ODUsMTEgKzE4ODUsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKIHsKICAgICBSZW5kZXJN
YXRoTUxUb2tlbjo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKGluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBtX3N0cmV0Y2h5RGF0
YS5tb2RlKCkgPT0gRHJhd05vcm1hbCkKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdE
aXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUo
KS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJh
d05vcm1hbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgIGluZm8uY29udGV4dC0+c2V0RmlsbENv
bG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGluZm8uY29udGV4dCgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKIAogICAgIGlmIChtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1NpemVW
YXJpYW50KSB7CiAgICAgICAgIEFTU0VSVChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZ2x5cGgp
OwpAQCAtMTg5OCw3ICsxODk4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQo
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAg
TGF5b3V0UG9pbnQgb3BlcmF0b3JUb3BMZWZ0ID0gY2VpbGVkSW50UG9pbnQocGFpbnRPZmZzZXQg
KyBsb2NhdGlvbigpKTsKICAgICAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9y
R2x5cGgobV9zdHJldGNoeURhdGEudmFyaWFudCgpKTsKICAgICAgICAgTGF5b3V0UG9pbnQgb3Bl
cmF0b3JPcmlnaW4ob3BlcmF0b3JUb3BMZWZ0LngoKSwgb3BlcmF0b3JUb3BMZWZ0LnkoKSAtIGds
eXBoQm91bmRzLnkoKSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0dseXBocyhzdHlsZSgp
LmZvbnRDYXNjYWRlKCksICptX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZm9udCwgYnVmZmVyLCAw
LCAxLCBvcGVyYXRvck9yaWdpbik7CisgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMo
c3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqbV9zdHJldGNoeURhdGEudmFyaWFudCgpLmZvbnQsIGJ1
ZmZlciwgMCwgMSwgb3BlcmF0b3JPcmlnaW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJh
ZGljYWxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKaW5kZXggZGYxNGE4OThkNjVjYzg5ZGNjYzJkNjFm
YTVhMGJkOTA3ZmVkMjEyYS4uYjY5MmY3NDY5ZWY2NjM5MzlhYTM2Mjg5NGM4NjU2M2VhMDBiNDlk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSYWRpY2FsT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsCiAKIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IHsKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5w
aGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc3R5bGUoKS5mb250Q2FzY2FkZSgp
LnByaW1hcnlGb250KCkubWF0aERhdGEoKSkgewpAQCAtMTI5LDEzICsxMjksMTMgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW4KICAgICBGbG9hdFBvaW50IGRpcExlZnRQb2ludChzdGFydFggLSBn
UmFkaWNhbERpcExlZnRQb2ludFhGcm9udCAqIGZyb250V2lkdGgsIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgcmFkaWNhbERpcExlZnRQb2ludFlQb3MpOwogICAgIEZsb2F0UG9pbnQgbGVmdEVu
ZChzdGFydFggLSBmcm9udFdpZHRoLCBkaXBMZWZ0UG9pbnQueSgpICsgZ1JhZGljYWxMZWZ0RW5k
WVNoaWZ0RW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCi0gICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5m
b250U2l6ZSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBp
bmZvLmNvbnRleHQtPnNldExpbmVKb2luKE1pdGVySm9pbik7Ci0gICAgaW5mby5jb250ZXh0LT5z
ZXRNaXRlckxpbWl0KHN0eWxlKCkuZm9udFNpemUoKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsTGluZVRoaWNrbmVzc0VtcyAqIHN0eWxlKCkuZm9udFNp
emUoKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwor
ICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZv
LmNvbnRleHQoKS5zZXRMaW5lSm9pbihNaXRlckpvaW4pOworICAgIGluZm8uY29udGV4dCgpLnNl
dE1pdGVyTGltaXQoc3R5bGUoKS5mb250U2l6ZSgpKTsKIAogICAgIFBhdGggcm9vdDsKIApAQCAt
MTQ3LDkgKzE0Nyw5IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQ
YWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAgICAgLy8gZHJhdyB0byBl
bmQKICAgICByb290LmFkZExpbmVUbyhsZWZ0RW5kKTsKIAotICAgIGluZm8uY29udGV4dC0+c3Ry
b2tlUGF0aChyb290KTsKKyAgICBpbmZvLmNvbnRleHQoKS5zdHJva2VQYXRoKHJvb3QpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBtYXNrU3RhdGVTYXZlcigqaW5mby5jb250ZXh0
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIG1hc2tTdGF0ZVNhdmVyKGluZm8uY29u
dGV4dCgpKTsKIAogICAgIC8vIEJ1aWxkIGEgbWFzayB0byBkcmF3IHRoZSB0aGljayBwYXJ0IG9m
IHRoZSByb290LgogICAgIFBhdGggbWFzazsKQEAgLTE1OSwxNyArMTU5LDE3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWluCiAgICAgbWFzay5hZGRMaW5lVG8oZGlwTGVmdFBvaW50KTsKICAgICBt
YXNrLmFkZExpbmVUbyhGbG9hdFBvaW50KDIgKiBkaXBMZWZ0UG9pbnQueCgpIC0gbGVmdEVuZC54
KCksIDIgKiBkaXBMZWZ0UG9pbnQueSgpIC0gbGVmdEVuZC55KCkpKTsKIAotICAgIGluZm8uY29u
dGV4dC0+Y2xpcChtYXNrKTsKKyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKG1hc2spOwogCiAgICAg
Ly8gRHJhdyB0aGUgdGhpY2sgcGFydCBvZiB0aGUgcm9vdC4KLSAgICBpbmZvLmNvbnRleHQtPnNl
dFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbFRoaWNrTGluZVRoaWNrbmVzc0VtcyAqIHN0eWxlKCku
Zm9udFNpemUoKSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRMaW5lQ2FwKFNxdWFyZUNhcCk7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tMaW5lVGhp
Y2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRM
aW5lQ2FwKFNxdWFyZUNhcCk7CiAKICAgICBQYXRoIGxpbmU7CiAgICAgbGluZS5tb3ZlVG8oYm90
dG9tUG9pbnQpOwogICAgIGxpbmUuYWRkTGluZVRvKGRpcExlZnRQb2ludCk7CiAKLSAgICBpbmZv
LmNvbnRleHQtPnN0cm9rZVBhdGgobGluZSk7CisgICAgaW5mby5jb250ZXh0KCkuc3Ryb2tlUGF0
aChsaW5lKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggZWJlMmQzNzM1N2NkMWU4NjliMWM5ZWMzYmVj
MTAxZGMxMWI5YjJhZS4uYWM0YTE1ZGQ4NGE0OTM0NDJmMzQ1OWM1YTQ1MDIxMzE0YTAxNzVlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWlu
dChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAg
ICBSZW5kZXJNYXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAg
IGlmIChpc0VtcHR5KCkgfHwgaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKKyAgICBpZiAoaXNFbXB0eSgpIHx8IGluZm8u
Y29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGJhc2UgPSBiYXNlV3JhcHBlcigp
OwpAQCAtMzI4LDE2ICszMjgsMTYgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gV2UgZHJhdyB0aGUgcmFkaWNhbCBsaW5lLgotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCi0gICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MobV9ydWxlVGhpY2tuZXNzKTsKLSAgICBpbmZvLmNv
bnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VU
aGlja25lc3MobV9ydWxlVGhpY2tuZXNzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogCiAgICAgLy8gVGhlIHByZWZlcnJlZCB3aWR0aCBvZiB0aGUgcmFkaWNhbCBp
cyBzb21ldGltZXMgaW5jb3JyZWN0LCBzbyB3ZSBkcmF3IGEgc2xpZ2h0bHkgbG9uZ2VyIGxpbmUg
dG8gZW5zdXJlIGl0IHRvdWNoZXMgdGhlIHJhZGljYWwgc3ltYm9sIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzI2KS4KICAgICBMYXlvdXRVbml0IHNpemVFcnJv
ciA9IHJhZGljYWwtPnRyYWlsaW5nU3BhY2VFcnJvcigpOwogICAgIEludFBvaW50IGFkanVzdGVk
UGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsg
YmFzZS0+bG9jYXRpb24oKSArIExheW91dFBvaW50KC1zaXplRXJyb3IsIC0obV92ZXJ0aWNhbEdh
cCArIG1fcnVsZVRoaWNrbmVzcyAvIDIpKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShh
ZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyBiYXNlLT5vZmZzZXRXaWR0aCgpICsgc2l6ZUVycm9yLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3Rl
ZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9m
ZnNldC54KCkgKyBiYXNlLT5vZmZzZXRXaWR0aCgpICsgc2l6ZUVycm9yLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSkpKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBS
ZW5kZXJNYXRoTUxSb290V3JhcHBlcjo6Y3JlYXRlQW5vbnltb3VzV3JhcHBlcihSZW5kZXJNYXRo
TUxSb290KiByZW5kZXJPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCmluZGV4IDU4ZWI5ZTI0MDY3NmExMTRkYzFiOTc2ODc3NTYzNDJiMzkyZmI5NjkuLjY5
MjIyODE5MThjNDgzMWU3Mjk5NTNiNjIwMjkxMjg4MjhkNTE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0xODIsOCArMTgyLDggQEAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9h
dCB0aHJlc2hvbGQsIGMKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpKTsKIAogICAgIGlmIChp
bWFnZUJ1ZmZlcikgewotICAgICAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9
IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdl
UmVjdC5zaXplKCkpKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQg
PSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdl
UmVjdC5zaXplKCkpKTsKIAogICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVs
QXJyYXkgPSBpbWFnZUJ1ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50
UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5
TGVuZ3RoID0gcGl4ZWxBcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAppbmRleCBhMWYxMDMwMDRhYjc4YmMzMjcx
NTc3YzBmMTBlZDQ2M2I4ODUzZGE1Li5iMTM3NGUwOGIxMDg0MzRkYWRlNTMyZDRkZjEyMGRmNzcz
NDFkNmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCBWZWN0b3I8RmxvYXRTaXplPiBOaW5lUGll
Y2VJbWFnZTo6Y29tcHV0ZU5vbkludHJpbnNpY1RpbGVTY2FsZXMoKQogICAgIHJldHVybiBWZWN0
b3I8RmxvYXRTaXplPihNYXhQaWVjZSwgRmxvYXRTaXplKDEsIDEpKTsKIH0KIAotdm9pZCBOaW5l
UGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzb3VyY2UsICBib29sIGludHJp
bnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KSBjb25zdAordm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IExheW91dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBz
b3VyY2UsICBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAogewogICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2Ug
PSBpbWFnZSgpOwogICAgIEFTU0VSVChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzTG9hZGVk
KCkpOwpAQCAtMjM4LDEzICsyMzgsMTMgQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0Nvcm5lclBpZWNlKHBpZWNlKSkgewot
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9y
U3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9y
U3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlID0gaXNIb3Jpem9udGFsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6
OlRpbGVSdWxlPihob3Jpem9udGFsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsKICAgICAg
ICAgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlID0gaXNWZXJ0aWNhbFBpZWNlKHBpZWNlKSA/IHN0YXRp
Y19jYXN0PEltYWdlOjpUaWxlUnVsZT4odmVydGljYWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hU
aWxlOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2Vd
LCB0aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CisgICAgICAgIGdyYXBoaWNz
Q29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRp
b25SZWN0c1twaWVjZV0sIHNvdXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVjZV0sIGhS
dWxlLCB2UnVsZSwgb3ApOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAppbmRleCA0YmVmMWFmODdjZTRkNTMzMjkzZDAwZTMx
ODU0NTM0OWRhZDFkMDdmLi45YzMyZTVjYWE0MjFlYzdmYjJhNDk5YzM2YTc5ODUyNDZkY2ViNWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2Uu
aApAQCAtMjA2LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPEZsb2F0U2l6
ZT4gY29tcHV0ZUludHJpbnNpY1RpbGVTY2FsZXMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGRl
c3RpbmF0aW9uUmVjdHMsIGNvbnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBzb3VyY2VSZWN0cywgRU5p
bmVQaWVjZUltYWdlUnVsZSBoUnVsZSwgRU5pbmVQaWVjZUltYWdlUnVsZSB2UnVsZSk7CiAgICAg
c3RhdGljIFZlY3RvcjxGbG9hdFNpemU+IGNvbXB1dGVOb25JbnRyaW5zaWNUaWxlU2NhbGVzKCk7
CiAKLSAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlckVsZW1lbnQqLCBjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IExheW91dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBMYXlv
dXRTaXplJiBzb3VyY2UsIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciwgQ29tcG9zaXRlT3BlcmF0b3IpIGNvbnN0OworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5b3V0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRyaW5z
aWNTb3VyY2UsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBDb21wb3NpdGVPcGVyYXRvcikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgRGF0YVJlZjxOaW5lUGllY2VJbWFnZURhdGE+IG1fZGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcAppbmRleCA4MjA3ZGY0MTliZjJhYzFiMTgwZmQ5OGZjYjFiODBjNTJlOWY3NTE0Li4zOGVm
YjJjOTk0YzZjZTM5ZDJiYjBlMjk5MDg2NjdkNTRmOWUwYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0xMDgsNyAr
MTA4LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQoKQogCiB2b2lk
IFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIFNwZWM6IGdyb3VwcyB3L28gY2hpbGRyZW4gc3RpbGwg
bWF5IHJlbmRlciBmaWx0ZXIgY29udGVudC4KQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJlbmRl
clNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JikKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwogICAgIHsK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjaGlsZFBhaW50
SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAgLy8gTGV0IHRoZSBSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lciBzdWJjbGFzcyBjbGlwIGlmIG5lY2Vzc2FyeQogICAgICAg
ICBhcHBseVZpZXdwb3J0Q2xpcChjaGlsZFBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAppbmRleCBjYjZkOWMzN2M4NjNi
NzNlZGYzZjk1MGZlMDhiZWI4MTNjMDYxYzM1Li5mYWUzNzFhZWNmZGU4MWVhYjc3YmU0OTRmMTM5
OTg2NTRlYmE3MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5jcHAKQEAgLTkzLDE2ICs5MywxNiBAQCB2b2lkIFJlbmRlclNWR0VsbGlw
c2U6OmNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVyKCkKICAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnkoKSwgTGVuZ3RoTW9kZUhlaWdodCkpOwog
fQogCi12b2lkIFJlbmRlclNWR0VsbGlwc2U6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmZpbGxTaGFwZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKG1fdXNlUGF0aEZhbGxiYWNrKSB7CiAg
ICAgICAgIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29udGV4dCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgY29udGV4dC0+ZmlsbEVsbGlwc2UobV9maWxsQm91bmRpbmdCb3gpOwor
ICAgIGNvbnRleHQuZmlsbEVsbGlwc2UobV9maWxsQm91bmRpbmdCb3gpOwogfQogCi12b2lkIFJl
bmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29u
c3QKK3ZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1Zpc2libGVT
dHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVy
U1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAog
ICAgICAgICBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29udGV4dCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgY29udGV4dC0+c3Ryb2tlRWxsaXBzZShtX2ZpbGxCb3VuZGluZ0Jv
eCk7CisgICAgY29udGV4dC5zdHJva2VFbGxpcHNlKG1fZmlsbEJvdW5kaW5nQm94KTsKIH0KIAog
Ym9vbCBSZW5kZXJTVkdFbGxpcHNlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuaAppbmRleCBiNTg3ZDFhYjMzMTQ3MDMyMzJmNWQwZTA5YzE3OGNiNTVh
OWNiNTI2Li45YTZmYzEyY2RlZGFiYTE1NTI1YzQ0ZGJhODkzZThjZjU5ZTZiNDc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaApAQCAtNDIs
OCArNDIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVt
ZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkg
OiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hh
cGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0
cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0
UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29u
dGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCA0
Njk4OTA3ZGY5OGU2OTIzMTU2NDI2ZDE2MjUyNGQwMGE3YjQwZmY1Li5iODc5MWFlNDAyMzQwNGUy
Y2JjMTMyZjVkZGExNDI2OWUwZDJhNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTUzLDE4ICs1Mywx
OCBAQCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudCYgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Zm9y
ZWlnbk9iamVjdEVsZW1lbnQoKSBjb25zdAogCiB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAg
aWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50
SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5m
by5waGFzZSAhPSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBQ
YWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGlsZFBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKGxvY2FsVHJhbnNmb3JtKCkpOwog
CiAgICAgaWYgKFNWR1JlbmRlclN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4oKnRoaXMpKQotICAg
ICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOworICAgICAgICBj
aGlsZFBhaW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIAogICAgIFNWR1JlbmRl
cmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4dDsKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IDUwMjE2Nzk4MTEzM2RjZmNhNmUxZTZlMjU0ODdh
Mzk1ZTNhYWQ1Y2YuLmI4YTE5NmU5NTEzNzAxZDU2YWJlYTZiOTJjZmFkNGVkMzAzYWMzODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBA
IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKIAogdm9pZCBS
ZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8
fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VGb3JlZ3JvdW5kCiAgICAgICAgIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJ
RERFTiB8fCAhaW1hZ2VSZXNvdXJjZSgpLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTQwLDE0ICsxNDAsMTQgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
UGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7Ci0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY2hpbGRQYWludEluZm8uY29udGV4dCgp
KTsKICAgICBjaGlsZFBhaW50SW5mby5hcHBseVRyYW5zZm9ybShtX2xvY2FsVHJhbnNmb3JtKTsK
IAogICAgIGlmIChjaGlsZFBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkg
ewogICAgICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQoKnRoaXMsIGNo
aWxkUGFpbnRJbmZvKTsKIAogICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmlu
Z1ByZXBhcmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuYnVmZmVy
ZWRSZW5kZXJpbmcoKSA9PSBCUl9TVEFUSUMgICYmIHJlbmRlcmluZ0NvbnRleHQuYnVmZmVyRm9y
ZWdyb3VuZChtX2J1ZmZlcmVkRm9yZWdyb3VuZCkpCisgICAgICAgICAgICBpZiAoc3R5bGUoKS5z
dmdTdHlsZSgpLmJ1ZmZlcmVkUmVuZGVyaW5nKCkgPT0gQlJfU1RBVElDICYmIHJlbmRlcmluZ0Nv
bnRleHQuYnVmZmVyRm9yZWdyb3VuZChtX2J1ZmZlcmVkRm9yZWdyb3VuZCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBwYWludEZvcmVncm91bmQoY2hpbGRQYWludElu
Zm8pOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdy
b3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIAogICAgIGltYWdlRWxlbWVudCgpLnByZXNlcnZl
QXNwZWN0UmF0aW8oKS50cmFuc2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwog
fQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4
IDhlNDBkOGJlOTUyNzhmMjllNjZlNzZiNjE2N2U2NGMwZGM0OTI1ZDYuLjFkMDEzYWQ3YzFlMGU4
YzQwMTQwMDg2OGEyNzI1OTNhYmFjYTJkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcApAQCAtNjQsMTcgKzY0LDE3IEBAIEZsb2F0UmVjdCBS
ZW5kZXJTVkdQYXRoOjpjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdAog
ICAgIHJldHVybiBzdHJva2VCb3VuZGluZ0JveDsKIH0KIAotc3RhdGljIHZvaWQgdXNlU3Ryb2tl
U3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIHZvaWQgdXNlU3Ry
b2tlU3R5bGVUb0ZpbGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChHcmFk
aWVudCogZ3JhZGllbnQgPSBjb250ZXh0LT5zdHJva2VHcmFkaWVudCgpKQotICAgICAgICBjb250
ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50KTsKLSAgICBlbHNlIGlmIChQYXR0ZXJuKiBw
YXR0ZXJuID0gY29udGV4dC0+c3Ryb2tlUGF0dGVybigpKQotICAgICAgICBjb250ZXh0LT5zZXRG
aWxsUGF0dGVybigqcGF0dGVybik7CisgICAgaWYgKEdyYWRpZW50KiBncmFkaWVudCA9IGNvbnRl
eHQuc3Ryb2tlR3JhZGllbnQoKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdy
YWRpZW50KTsKKyAgICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJva2VQ
YXR0ZXJuKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwogICAg
IGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGNvbnRleHQtPnN0cm9rZUNvbG9y
KCksIGNvbnRleHQtPnN0cm9rZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0Rmls
bENvbG9yKGNvbnRleHQuc3Ryb2tlQ29sb3IoKSwgY29udGV4dC5zdHJva2VDb2xvclNwYWNlKCkp
OwogfQogCi12b2lkIFJlbmRlclNWR1BhdGg6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhh
c1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTAsMTMgKzkwLDEzIEBAIHZv
aWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpCiAgICAgICAgIG5vblNjYWxpbmdU
cmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCk7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIHRydWUpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCB0cnVlKTsKICAgICB1c2VTdHJv
a2VTdHlsZVRvRmlsbChjb250ZXh0KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1femVy
b0xlbmd0aExpbmVjYXBMb2NhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgdXNlUGF0aCA9
IHplcm9MZW5ndGhMaW5lY2FwUGF0aChtX3plcm9MZW5ndGhMaW5lY2FwTG9jYXRpb25zW2ldKTsK
ICAgICAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkKICAgICAgICAgICAgIHVzZVBhdGgg
PSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1c2VQYXRoLCBub25TY2FsaW5nVHJhbnNmb3JtKTsKLSAg
ICAgICAgY29udGV4dC0+ZmlsbFBhdGgoKnVzZVBhdGgpOworICAgICAgICBjb250ZXh0LmZpbGxQ
YXRoKCp1c2VQYXRoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdQYXRoLmgKaW5kZXggMDhkODkxMTllYmJhYzE5YjE1ZTA2YWZlY2M3YzVlZTM0
MmMwNDkyOS4uYmJkMjJkYzViMGNiOWI4NWMxMmU4MTBiZWIwNDQ0MWMyOWQ4NzY4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgp
IG92ZXJyaWRlOwogICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRl
eHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5k
ZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBzaG91bGRTdHJva2VaZXJvTGVuZ3RoU3VicGF0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKaW5kZXggMDNmYmJiOWQ1MDg5M2My
NTY3ODU1Y2JlMWEyM2IyNmE2MjFhMjg4Ny4uY2JjODhmN2Y2NjkwYTk1Y2VlOWIzNjMxNzFkMjk1
NmU3OGYwNjYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1JlY3QuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVjdDo6dXBkYXRlU2hh
cGVGcm9tRWxlbWVudCgpCiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJTVkdSZWN0OjpmaWxsU2hh
cGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdSZWN0Ojpm
aWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmIChtX3Vz
ZVBhdGhGYWxsYmFjaykgewogICAgICAgICBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKGNvbnRl
eHQpOwpAQCAtMTA5LDE4ICsxMDksMTggQEAgdm9pZCBSZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgIC8vIHNoYWRvdyBkcmF3aW5nIG1l
dGhvZCwgd2hpY2ggZHJhd3MgYW4gZXh0cmEgc2hhZG93LgogICAgIC8vIFRoaXMgaXMgYSB3b3Jr
YXJvdW5kIGZvciBzd2l0Y2hpbmcgb2ZmIHRoZSBleHRyYSBzaGFkb3cuCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODk5Ci0gICAgaWYgKGNvbnRleHQt
Pmhhc1NoYWRvdygpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKKyAgICBpZiAoY29udGV4dC5o
YXNTaGFkb3coKSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChtX2ZpbGxCb3VuZGluZ0JveCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKIH0KIAotdm9pZCBSZW5kZXJT
VkdSZWN0OjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2b2lk
IFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKIHsKICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tlKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnN0
cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGNvbnRleHQtPnN0cm9rZVJlY3QobV9maWxsQm91bmRpbmdCb3gsIHN0
cm9rZVdpZHRoKCkpOworICAgIGNvbnRleHQuc3Ryb2tlUmVjdChtX2ZpbGxCb3VuZGluZ0JveCwg
c3Ryb2tlV2lkdGgoKSk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHUmVjdDo6c2hhcGVEZXBlbmRlbnRT
dHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKaW5kZXggOTcwMzAxYWE3OWY1YzNkZTJlYjMy
ODZkMzBkMTNmNWRlYjQxNDg5Zi4uMDI2ZWU2MzA5YjU5MWVjMWYwYzM1Y2Q2MzIxNTc5NTI3OTJl
NGVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgK
QEAgLTQ4LDggKzQ4LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVG
cm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNF
bXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CiAgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25z
dCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50
RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA4YjlhNjI4OWUyODIwNWM5MGIxZTA0ZTNj
N2Q0OGJkNWExODVmYTU4Li41ZTQ3NzViZTBiNmEwMDRjNmY1YzYyNmFjMzQxYTMyYjkxZTU3ZTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC02OSwxMCArNjksMTAgQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0IFJlbmQKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZU1vZGUsIHJlc291cmNlTW9kZSA9PSBBcHBseVRvRGVmYXVsdE1vZGUpOwogCi0gICAgcmV0dXJu
IGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQocmVuZGVyZXIsIHJlbmRlcmVyLm9iamVjdEJvdW5kaW5n
Qm94KCksIHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCksIGNvbnRleHQp
OworICAgIHJldHVybiBhcHBseUNsaXBwaW5nVG9Db250ZXh0KHJlbmRlcmVyLCByZW5kZXJlci5v
YmplY3RCb3VuZGluZ0JveCgpLCByZW5kZXJlci5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpLCAqY29udGV4dCk7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRo
T25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBhbmltYXRlZExvY2FsVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5k
aW5nQm94KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFuaW1hdGVk
TG9jYWxUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gpCiB7CiAg
ICAgLy8gSWYgdGhlIGN1cnJlbnQgY2xpcC1wYXRoIGdldHMgY2xpcHBlZCBpdHNlbGYsIHdlIGhh
dmUgdG8gZmFsbGJhY2sgdG8gbWFza2luZy4KICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5j
bGlwcGVyUmVzb3VyY2UoKS5pc0VtcHR5KCkpCkBAIC0xMjMsMTIgKzEyMywxMSBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0CiAgICAgLy8gVGhlIFNWRyBzcGVjaWZpY2F0aW9uIHdhbnRzIHVzIHRv
IGNsaXAgZXZlcnl0aGluZywgaWYgY2xpcC1wYXRoIGRvZXNuJ3QgaGF2ZSBhIGNoaWxkLgogICAg
IGlmIChjbGlwUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIGNsaXBQYXRoLmFkZFJlY3QoRmxvYXRS
ZWN0KCkpOwotICAgIGNvbnRleHQtPmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwUnVsZSk7CisgICAg
Y29udGV4dC5jbGlwUGF0aChjbGlwUGF0aCwgY2xpcFJ1bGUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGlu
Z0JveCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5n
Qm94LCBjb25zdCBGbG9hdFJlY3QmIHJlcGFpbnRSZWN0LCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgQ2xpcHBlck1hc2tJbWFnZSYgY2xpcHBlck1hc2tJbWFnZSA9IGFkZFJlbmRl
cmVyVG9DbGlwcGVyKHJlbmRlcmVyKTsKICAgICBib29sIHNob3VsZENyZWF0ZUNsaXBwZXJNYXNr
SW1hZ2UgPSAhY2xpcHBlck1hc2tJbWFnZTsKQEAgLTE0NSwxNyArMTQ0LDE1IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjCiAgICAgICAgIGlmICghY2xpcHBlck1hc2tJbWFnZSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0
ID0gY2xpcHBlck1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBBU1NFUlQobWFza0NvbnRl
eHQpOwotCi0gICAgICAgIG1hc2tDb250ZXh0LT5jb25jYXRDVE0oYW5pbWF0ZWRMb2NhbFRyYW5z
Zm9ybSk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0NvbnRleHQgPSBjbGlwcGVyTWFz
a0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIG1hc2tDb250ZXh0LmNvbmNhdENUTShhbmltYXRl
ZExvY2FsVHJhbnNmb3JtKTsKIAogICAgICAgICAvLyBjbGlwUGF0aCBjYW4gYWxzbyBiZSBjbGlw
cGVkIGJ5IGFub3RoZXIgY2xpcFBhdGguCiAgICAgICAgIGF1dG8qIHJlc291cmNlcyA9IFNWR1Jl
c291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcyk7CiAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlcjsKICAgICAgICAgYm9vbCBzdWNjZWVk
ZWQ7CiAgICAgICAgIGlmIChyZXNvdXJjZXMgJiYgKGNsaXBwZXIgPSByZXNvdXJjZXMtPmNsaXBw
ZXIoKSkpIHsKLSAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqbWFza0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKG1hc2tDb250ZXh0KTsKIAogICAgICAgICAgICAgaWYgKCFjbGlwcGVyLT5hcHBs
eUNsaXBwaW5nVG9Db250ZXh0KCp0aGlzLCBvYmplY3RCb3VuZGluZ0JveCwgcmVwYWludFJlY3Qs
IG1hc2tDb250ZXh0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODAsMTQg
KzE3NywxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRlbnRJbnRv
TWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmCiB7CiAgICAgQVNTRVJUKGNsaXBwZXJN
YXNrSW1hZ2UpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrQ29udGV4dCA9IGNsaXBwZXJN
YXNrSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQobWFza0NvbnRleHQpOworICAgIEdyYXBo
aWNzQ29udGV4dCYgbWFza0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAo
Y2xpcFBhdGhFbGVtZW50KCkuY2xpcFBhdGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewogICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9y
bWF0aW9uLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94
LnkoKSk7CiAgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24uc2NhbGVOb25Vbmlmb3Jt
KG9iamVjdEJvdW5kaW5nQm94LndpZHRoKCksIG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsK
LSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENUTShtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9u
KTsKKyAgICAgICAgbWFza0NvbnRleHQuY29uY2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRp
b24pOwogICAgIH0KIAogICAgIC8vIFN3aXRjaCB0byBhIHBhaW50IGJlaGF2aW9yIHdoZXJlIGFs
bCBjaGlsZHJlbiBvZiB0aGlzIDxjbGlwUGF0aD4gd2lsbCBiZSByZW5kZXJlZCB1c2luZyBzcGVj
aWFsIGNvbnN0cmFpbnRzOgpAQCAtMjI2LDcgKzIyMiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFn
ZSYKICAgICAgICAgaWYgKCFyZW5kZXJlci0+aXNTVkdTaGFwZSgpICYmICFyZW5kZXJlci0+aXNT
VkdUZXh0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtYXNrQ29udGV4dC0+
c2V0RmlsbFJ1bGUobmV3Q2xpcFJ1bGUpOworICAgICAgICBtYXNrQ29udGV4dC5zZXRGaWxsUnVs
ZShuZXdDbGlwUnVsZSk7CiAKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSA8dXNlPiBlbGVt
ZW50LCB3ZSBvYnRhaW5lZCBpdHMgcmVuZGVyZXJlIGFib3ZlLCB0byByZXRyaWV2ZSBpdHMgY2xp
cFJ1bGUuCiAgICAgICAgIC8vIFdlIGhhdmUgdG8gcGFzcyB0aGUgPHVzZT4gcmVuZGVyZXIgaXRz
ZWxmIHRvIHJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKCkgdG8gYXBwbHkgaXQncyB4L3kvdHJh
bnNmb3JtL2V0Yy4gdmFsdWVzIHdoZW4gcmVuZGVyaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5kZXggNDQx
NWI5NGIxM2E2MmRiNmZiYTYzY2QwNjJmZGQ0Yzg2Njk2YjQ1Yy4uYjc3MDQ5NjUzZGFjZjQ1ZmMw
MWU1MzZkOTYwZDU0YTE5NmY0ZWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICAvLyBjbGlwUGF0aCBjYW4gYmUgY2xpcHBlZCB0b28sIGJ1dCBkb24ndCBo
YXZlIGEgYm91bmRpbmdCb3ggb3IgcmVwYWludFJlY3QuIFNvIHdlIGNhbid0IGNhbGwKICAgICAv
LyBhcHBseVJlc291cmNlIGRpcmVjdGx5IGFuZCB1c2UgdGhlIHJlY3RzIGZyb20gdGhlIG9iamVj
dCwgc2luY2UgdGhleSBhcmUgZW1wdHkgZm9yIFJlbmRlclNWR1Jlc291cmNlcwogICAgIC8vIEZJ
WE1FOiBXZSBtYWRlIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQgcHVibGljIGJlY2F1c2Ugd2UgY2Fu
bm90IGNhbGwgYXBwbHlSZXNvdXJjZSBvbiBIVE1MIGVsZW1lbnRzIChpdCBhc3NlcnRzIG9uIFJl
bmRlck9iamVjdDo6b2JqZWN0Qm91bmRpbmdCb3gpCi0gICAgYm9vbCBhcHBseUNsaXBwaW5nVG9D
b250ZXh0KFJlbmRlckVsZW1lbnQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBHcmFwaGljc0NvbnRleHQqKTsKKyAgICBib29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNz
Q29udGV4dCYpOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29u
c3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291
cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDbGlwcGVyUmVz
b3VyY2VUeXBlOyB9CkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyIjsgfQogCi0gICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAg
IGJvb2wgcGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJ
bWFnZShjb25zdCBDbGlwcGVyTWFza0ltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3Vu
ZGluZ0JveCk7CiAgICAgdm9pZCBjYWxjdWxhdGVDbGlwQ29udGVudFJlcGFpbnRSZWN0KCk7CiAg
ICAgQ2xpcHBlck1hc2tJbWFnZSYgYWRkUmVuZGVyZXJUb0NsaXBwZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGUzMTg2NWQ4MDNjMTNkMTUwYjU3MWI2MWRlMDc4
NjFiMDIxNzExZmMuLjA0ZWFkMWE4YmVhNjRhNGFmMzYzMDZhZmU3NTkxNmI5ZDA3Yzg4ZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCkBAIC0xOTgsMTMgKzE5OCwxMiBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZQogICAgIC8vIFNldCB0aGUgcmVuZGVyaW5nIG1vZGUgZnJvbSB0aGUgcGFnZSdzIHNldHRp
bmdzLgogICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdN
b2RlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3Vy
Y2VHcmFwaGljLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKHNvdXJjZUdyYXBoaWNDb250ZXh0KTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhp
Yy0+Y29udGV4dCgpOwogICAKICAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyID0g
V1RGOjptb3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9
IGNvbnRleHQ7CiAKLSAgICBjb250ZXh0ID0gc291cmNlR3JhcGhpY0NvbnRleHQ7CisgICAgY29u
dGV4dCA9ICZzb3VyY2VHcmFwaGljQ29udGV4dDsKIAogICAgIEFTU0VSVCghbV9maWx0ZXIuY29u
dGFpbnMoJnJlbmRlcmVyKSk7CiAgICAgbV9maWx0ZXIuc2V0KCZyZW5kZXJlciwgV1RGOjptb3Zl
KGZpbHRlckRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IGNiY2ExMDNlZjMwNTY5Nzll
ZjQ2NWMyYjU3YjUzMzdhOThiNWQ3NGUuLmFjZWEyMzBjOWQ5MjVjMzQ2ZTgwZDQyOGQ5OTgyYzU4
Nzk1Y2Q4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNjUsMTYgKzY1LDE1IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3Jh
cGhpY3NDb250ZXh0KiYgY29uCiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKICAgICBB
U1NFUlQobWFza0ltYWdlKTsKICAgICBzYXZlZENvbnRleHQgPSBjb250ZXh0OwotICAgIGNvbnRl
eHQgPSBtYXNrSW1hZ2VDb250ZXh0OworICAgIGNvbnRleHQgPSAmbWFza0ltYWdlQ29udGV4dDsK
ICAgICBpbWFnZUJ1ZmZlciA9IFdURjo6bW92ZShtYXNrSW1hZ2UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSBjbGlwVG9UZXh0TWFzayhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnVmZmVyLCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlbmRlck9iamVjdCogb2JqZWN0LCBib29s
IGJvdW5kaW5nQm94TW9kZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFRyYW5zZm9y
bSkKK3N0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZm
ZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJvb2wgYm91
bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtKQog
ewogICAgIGF1dG8qIHRleHRSb290QmxvY2sgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJT
VkdUZXh0QW5jZXN0b3IoKm9iamVjdCk7CiAgICAgQVNTRVJUKHRleHRSb290QmxvY2spOwpAQCAt
MjA3LDcgKzIwNiw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoCiAgICAgICAgICAgICBjYWxj
dWxhdGVHcmFkaWVudFRyYW5zZm9ybShncmFkaWVudFRyYW5zZm9ybSk7CiAKICAgICAgICAgICAg
IEZsb2F0UmVjdCB0YXJnZXRSZWN0OwotICAgICAgICAgICAgZ3JhZGllbnREYXRhLT5ncmFkaWVu
dC0+c2V0R3JhZGllbnRTcGFjZVRyYW5zZm9ybShjbGlwVG9UZXh0TWFzayhjb250ZXh0LCBtX2lt
YWdlQnVmZmVyLCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIsIGdyYWRpZW50VW5pdHMoKSA9PSBTVkdV
bml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gsIGdyYWRpZW50VHJhbnNm
b3JtKSk7CisgICAgICAgICAgICBncmFkaWVudERhdGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNw
YWNlVHJhbnNmb3JtKGNsaXBUb1RleHRNYXNrKCpjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCB0YXJn
ZXRSZWN0LCAmcmVuZGVyZXIsIGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19V
TklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gsIGdyYWRpZW50VHJhbnNmb3JtKSk7CiAgICAgICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50RGF0YS0+Z3JhZGllbnQpOwog
CiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0YXJnZXRSZWN0KTsKQEAgLTIyMSwxMyAr
MjIwLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoCiAgICAgICAgICAgICBpZiAocGF0aCkK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgICAgICBl
bHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgICAgICBzaGFwZS0+ZmlsbFNoYXBlKGNvbnRleHQp
OworICAgICAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9kZSkgewogICAgICAg
ICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqcGF0
aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgICAgICBzaGFwZS0+
c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgc2hhcGUtPnN0cm9rZVNoYXBl
KCpjb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAppbmRleCA4YzNi
ZGIzNDc1MTA0MDY5NjdiZTY4MzU2MTczMGMwMmY5ZTBmYWE2Li42OWU1ZGIxNmZmMTFkNjFjMDA0
YzVjYjViMDEwZTUwMjkxNmI2MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcApAQCAtNjMsNyArNjMsNyBA
QCB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVu
ZGVyRWxlbWVudCYgY2xpZW50LCBib29sCiB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjph
cHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBpZiAoU1ZHUmVu
ZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykpCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNs
aXAobV92aWV3cG9ydCk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6
bWFya2VyQm91bmRhcmllcyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hcmtlclRyYW5zZm9ybWF0
aW9uKSBjb25zdApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJr
ZXI6OmRyYXcoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBp
bmZvLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyOjpw
YWludChpbmZvLCBJbnRQb2ludCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggNTMwZGEzZDZm
YWVkNGM3NWM3YWVmYWFmYjBjNDBlZDE1ODdjOGM1NS4uYWQzN2Q0N2M5ODQ2YWMwMDUzZGE1MmM1
NGRkOWFmNGMzMWQ1Y2YwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTgwLDE0ICs4MCwxMyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
IHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9J
bWFnZUJ1ZmZlcihjb250ZXh0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgcmVwYWludFJlY3QsIG1hc2tl
ckRhdGEtPm1hc2tJbWFnZSwgbWlzc2luZ01hc2tlckRhdGEpOworICAgIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKCpjb250ZXh0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgcmVw
YWludFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgbWlzc2luZ01hc2tlckRhdGEpOwogICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29u
dGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIG1h
c2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBB
U1NFUlQobWFza0ltYWdlQ29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VD
b250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CiAKICAgICAvLyBFdmVu
dHVhbGx5IGFkanVzdCB0aGUgbWFzayBpbWFnZSBjb250ZXh0IGFjY29yZGluZyB0byB0aGUgdGFy
Z2V0IG9iamVjdEJvdW5kaW5nQm94LgogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRy
YW5zZm9ybWF0aW9uOwpAQCAtOTUsNyArOTQsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQwog
ICAgICAgICBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3ggPSBvYmplY3QtPm9iamVjdEJvdW5k
aW5nQm94KCk7CiAgICAgICAgIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9i
amVjdEJvdW5kaW5nQm94LngoKSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFz
a0NvbnRlbnRUcmFuc2Zvcm1hdGlvbi5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gu
d2lkdGgoKSwgb2JqZWN0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBtYXNrSW1hZ2VD
b250ZXh0LT5jb25jYXRDVE0obWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CisgICAgICAgIG1h
c2tJbWFnZUNvbnRleHQuY29uY2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAg
IH0KIAogICAgIC8vIERyYXcgdGhlIGNvbnRlbnQgaW50byB0aGUgSW1hZ2VCdWZmZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5jcHAKaW5kZXggNGJjMGQ5NTEyYjI5MGM3MjdkN2E3N2M4YjI0NTg0OTk5YzFmNjli
ZS4uOWY5NWRkMjZiMzFiMGRlOTQ4ODVlMzk1NDM2N2FiZmE0MjRkODBiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcApAQCAtMTg5LDEzICsxODksMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OnBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQKICAg
ICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAg
ICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZShjb250
ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgIH0KICAg
ICBpZiAocmVzb3VyY2VNb2RlICYgQXBwbHlUb1N0cm9rZU1vZGUpIHsKICAgICAgICAgaWYgKHBh
dGgpCiAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgZWxz
ZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7Cisg
ICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgIH0KIAogICAgIGNv
bnRleHQtPnJlc3RvcmUoKTsKQEAgLTIzNywxNiArMjM3LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29u
c3QgUGF0CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0KiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0
KCk7Ci0gICAgQVNTRVJUKHRpbGVJbWFnZUNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYg
dGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgLy8gVGhlIGlt
YWdlIGJ1ZmZlciByZXByZXNlbnRzIHRoZSBmaW5hbCByZW5kZXJlZCBzaXplLCBzbyB0aGUgY29u
dGVudCBoYXMgdG8gYmUgc2NhbGVkICh0byBhdm9pZCBwaXhlbGF0aW9uKS4KLSAgICB0aWxlSW1h
Z2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMu
d2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVzLndpZHRoKCksCisgICAgdGlsZUltYWdlQ29udGV4dC5z
Y2FsZShGbG9hdFNpemUoY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRp
bGVCb3VuZGFyaWVzLndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLmhlaWdodCgpIC8gdGlsZUJvdW5kYXJp
ZXMuaGVpZ2h0KCkpKTsKIAogICAgIC8vIEFwcGx5IHRpbGUgaW1hZ2UgdHJhbnNmb3JtYXRpb25z
LgogICAgIGlmICghdGlsZUltYWdlVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgdGls
ZUltYWdlQ29udGV4dC0+Y29uY2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9ybSk7CisgICAgICAgIHRp
bGVJbWFnZUNvbnRleHQuY29uY2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9ybSk7CiAKICAgICBBZmZp
bmVUcmFuc2Zvcm0gY29udGVudFRyYW5zZm9ybWF0aW9uOwogICAgIGlmIChhdHRyaWJ1dGVzLnBh
dHRlcm5Db250ZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKaW5kZXggZjUwMWFiZjQ0YjIxNDE2
NzlhNmI3YTY5OGVmYjE3MTg1YmU1NzAyOS4uZmI4OGZjOGI0YjI4Yjc4NTlkZDhmMjE1YjkwMjUx
ZDdlMGQyODNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcApAQCAtODEsMTMgKzgxLDEzIEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5k
ZXJFbGVtZW50JiwgR3JhcGhpY3NDb250CiAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAg
Y29udGV4dC0+ZmlsbFBhdGgoKnBhdGgpOwogICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAg
ICAgICAgIHNoYXBlLT5maWxsU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICBzaGFwZS0+Zmls
bFNoYXBlKCpjb250ZXh0KTsKICAgICB9CiAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9T
dHJva2VNb2RlKSB7CiAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgY29udGV4dC0+c3Ry
b2tlUGF0aCgqcGF0aCk7CiAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgc2hh
cGUtPnN0cm9rZVNoYXBlKGNvbnRleHQpOworICAgICAgICAgICAgc2hhcGUtPnN0cm9rZVNoYXBl
KCpjb250ZXh0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDM0YzdmNjg4NmY1MWIyMTMyNTllOGRkY2NiZmViZDBh
ZDIwZDNkZTAuLmMyZmFhYTI1ZTE0MzJmNjBmNzg5MThiMGY4NTc1ZTQ1MjdhOGE0NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMjI4
LDcgKzIyOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIERvbid0IHBhaW50LCBpZiB0aGUgY29udGV4dCBleHBsaWNpdGx5IGRpc2FibGVkIGl0
LgotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlm
IChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gU1ZHIG91dGxpbmVzIGFyZSBwYWludGVkIGR1cmluZyBQYWludFBoYXNlRm9y
ZWdyb3VuZC4KQEAgLTI1NywxOCArMjU3LDE4IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRS
ZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAK
ICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgUGFpbnRJbmZvIGJlY2F1c2UgYXBwbHlUcmFuc2Zv
cm0gd2lsbCBtb2RpZnkgdGhlIGRhbWFnZSByZWN0LgogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50
SW5mbyhwYWludEluZm8pOwotICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAg
ICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogCiAgICAgLy8gQXBwbHkgaW5pdGlh
bCB2aWV3cG9ydCBjbGlwCiAgICAgaWYgKHNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkpCi0gICAg
ICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoc25hcHBlZEludFJlY3Qob3ZlcmZsb3dD
bGlwUmVjdChwYWludE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKSk7
CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKHNuYXBwZWRJbnRSZWN0KG92
ZXJmbG93Q2xpcFJlY3QocGFpbnRPZmZzZXQsIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCgpKSkpOwogCiAgICAgLy8gQ29udmVydCBmcm9tIGNvbnRhaW5lciBvZmZzZXRzIChodG1sIHJl
bmRlcmVycykgdG8gYSByZWxhdGl2ZSB0cmFuc2Zvcm0gKHN2ZyByZW5kZXJlcnMpLgogICAgIC8v
IFRyYW5zZm9ybSBmcm9tIG91ciBwYWludCBjb250YWluZXIncyBjb29yZGluYXRlIHN5c3RlbSB0
byBvdXIgbG9jYWwgY29vcmRzLgogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBy
b3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJh
bnNmb3JtKEFmZmluZVRyYW5zZm9ybTo6dHJhbnNsYXRpb24oYWRqdXN0ZWRQYWludE9mZnNldC54
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSAqIGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0o
KSk7CiAKLSAgICAvLyBTVkdSZW5kZXJpbmdDb250ZXh0IG11c3QgYmUgZGVzdHJveWVkIGJlZm9y
ZSB3ZSByZXN0b3JlIHRoZSBjaGlsZFBhaW50SW5mby5jb250ZXh0LCBiZWNhdXNlIGEgZmlsdGVy
IG1heSBoYXZlCisgICAgLy8gU1ZHUmVuZGVyaW5nQ29udGV4dCBtdXN0IGJlIGRlc3Ryb3llZCBi
ZWZvcmUgd2UgcmVzdG9yZSB0aGUgY2hpbGRQYWludEluZm8uY29udGV4dCgpLCBiZWNhdXNlIGEg
ZmlsdGVyIG1heSBoYXZlCiAgICAgLy8gY2hhbmdlZCB0aGUgY29udGV4dCBhbmQgaXQgaXMgb25s
eSByZXZlcnRlZCB3aGVuIHRoZSBTVkdSZW5kZXJpbmdDb250ZXh0IGRlc3RydWN0b3IgZmluaXNo
ZXMgYXBwbHlpbmcgdGhlIGZpbHRlci4KICAgICB7CiAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRl
eHQgcmVuZGVyaW5nQ29udGV4dDsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFJlbmRlclNWR1Jv
b3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludAogICAgICAgICB9CiAgICAgfQogCi0gICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+
cmVzdG9yZSgpOworICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiB9CiAK
IHZvaWQgUmVuZGVyU1ZHUm9vdDo6d2lsbEJlRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggYTE5Y2RiYjZjNWIxN2Mz
YjdlZWM4NjZjZDQ1NTVhZjY2NjU2MGViMC4uOTc3NTk4ZThjNmU2OWVjM2NjMzFjNDQzYmU4NmM3
MzIzNDE4MmQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdTaGFwZS5jcHAKQEAgLTkyLDEyICs5MiwxMiBAQCBib29sIFJlbmRlclNWR1NoYXBlOjppc0Vt
cHR5KCkgY29uc3QKICAgICByZXR1cm4gcGF0aCgpLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBSZW5k
ZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3Zv
aWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7Ci0gICAgY29udGV4dC0+ZmlsbFBhdGgocGF0aCgpKTsKKyAgICBjb250ZXh0LmZpbGxQ
YXRoKHBhdGgoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNo
YXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9wYXRo
KTsKICAgICBQYXRoKiB1c2VQYXRoID0gbV9wYXRoLmdldCgpOwpAQCAtMTA1LDcgKzEwNSw3IEBA
IHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgpKQogICAgICAgICB1c2VQYXRo
ID0gbm9uU2NhbGluZ1N0cm9rZVBhdGgodXNlUGF0aCwgbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9y
bSgpKTsKIAotICAgIGNvbnRleHQtPnN0cm9rZVBhdGgoKnVzZVBhdGgpOworICAgIGNvbnRleHQu
c3Ryb2tlUGF0aCgqdXNlUGF0aCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVw
ZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0yMjUsOCAr
MjI1LDkgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6c2hvdWxkR2VuZXJhdGVNYXJrZXJQb3NpdGlv
bnMoKSBjb25zdAogICAgIHJldHVybiByZXNvdXJjZXMtPm1hcmtlclN0YXJ0KCkgfHwgcmVzb3Vy
Y2VzLT5tYXJrZXJNaWQoKSB8fCByZXNvdXJjZXMtPm1hcmtlckVuZCgpOwogfQogCi12b2lkIFJl
bmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCkKIHsK
KyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSAmb3JpZ2luYWxDb250ZXh0OwogICAgIENv
bG9yIGZhbGxiYWNrQ29sb3I7CiAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlKiBmaWxsUGFpbnRp
bmdSZXNvdXJjZSA9IFJlbmRlclNWR1Jlc291cmNlOjpmaWxsUGFpbnRpbmdSZXNvdXJjZSgqdGhp
cywgc3R5bGUsIGZhbGxiYWNrQ29sb3IpKSB7CiAgICAgICAgIGlmIChmaWxsUGFpbnRpbmdSZXNv
dXJjZS0+YXBwbHlSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGNvbnRleHQsIEFwcGx5VG9GaWxsTW9k
ZSkpCkBAIC0yNDAsOCArMjQxLDkgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXgKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ry
b2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQmIG9yaWdp
bmFsQ29udGV4dCkKIHsKKyAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSAmb3JpZ2luYWxD
b250ZXh0OwogICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7CiAgICAgaWYgKFJlbmRlclNWR1Jlc291
cmNlKiBzdHJva2VQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnN0cm9rZVBh
aW50aW5nUmVzb3VyY2UoKnRoaXMsIHN0eWxlLCBmYWxsYmFja0NvbG9yKSkgewogICAgICAgICBp
ZiAoc3Ryb2tlUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGNv
bnRleHQsIEFwcGx5VG9TdHJva2VNb2RlKSkKQEAgLTI1NSwxMiArMjU3LDEyIEBAIHZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhp
Y3NDb250ZXh0KiBjb250CiAgICAgfQogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJv
a2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2
Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGZhbHNlKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAg
IGlmIChoYXNOb25TY2FsaW5nU3Ryb2tlKCkpIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5v
blNjYWxpbmdUcmFuc2Zvcm0gPSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCk7CiAgICAgICAg
IGlmICghc2V0dXBOb25TY2FsaW5nU3Ryb2tlQ29udGV4dChub25TY2FsaW5nVHJhbnNmb3JtLCBz
dGF0ZVNhdmVyKSkKQEAgLTI3NSwxMCArMjc3LDEwIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZp
bGxTdHJva2VNYXJrZXJzKFBhaW50SW5mbyYgY2hpbGRQYWludEluZm8pCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBhaW50T3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgc3dpdGNo
IChwYWludE9yZGVyLmF0KGkpKSB7CiAgICAgICAgIGNhc2UgUGFpbnRUeXBlRmlsbDoKLSAgICAg
ICAgICAgIGZpbGxTaGFwZShzdHlsZSgpLCBjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICAg
ICAgICAgIGZpbGxTaGFwZShzdHlsZSgpLCBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFpbnRUeXBlU3Ryb2tlOgotICAgICAgICAg
ICAgc3Ryb2tlU2hhcGUoY2hpbGRQYWludEluZm8uY29udGV4dCk7CisgICAgICAgICAgICBzdHJv
a2VTaGFwZShjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGFpbnRUeXBlTWFya2VyczoKICAgICAgICAgICAgIGlmICghbV9tYXJrZXJQ
b3NpdGlvbnMuaXNFbXB0eSgpKQpAQCAtMjkwLDcgKzI5Miw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hh
cGU6OmZpbGxTdHJva2VNYXJrZXJzKFBhaW50SW5mbyYgY2hpbGRQYWludEluZm8pCiAKIHZvaWQg
UmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkg
fHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCisgICAgaWYgKHBhaW50
SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQ
YWludFBoYXNlRm9yZWdyb3VuZAogICAgICAgICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBI
SURERU4gfHwgaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGJvdW5k
aW5nQm94ID0gcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKQEAgLTI5OCw3ICszMDAs
NyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQ
YWludEluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFp
bnRJbmZvLmFwcGx5VHJhbnNmb3JtKG1fbG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgaWYgKGNoaWxk
UGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CkBAIC0zMDcsNyArMzA5
LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvaW50JikKICAgICAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5kZXJp
bmdQcmVwYXJlZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5
bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAgICAgICAgICAgICBpZiAoc3ZnU3R5bGUuc2hhcGVS
ZW5kZXJpbmcoKSA9PSBTUl9DUklTUEVER0VTKQotICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CisgICAgICAgICAgICAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAKICAg
ICAgICAgICAgIGZpbGxTdHJva2VNYXJrZXJzKGNoaWxkUGFpbnRJbmZvKTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCmluZGV4IDYx
MWJmZDE0YjlkZDY0OGMyZjFkNzM0MmI4YWJmMjlhMmJlYWVlYTIuLjE0YzMxY2NmYzYwNDM2OWU4
NjBlZGExN2YxNTY0OWI4N2I2ZTZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSBmaW5hbCB7IG1fbmVl
ZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JvdW5k
YXJpZXNVcGRhdGUoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX25lZWRzQm91bmRhcmllc1Vw
ZGF0ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJy
aWRlIGZpbmFsIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzdHJv
a2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5k
ZXJpbmdEaXNhYmxlZCgpIGNvbnN0ID0gMDsKIAogICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGF0aC5nZXQoKTsgfQpAQCAtMTE0LDkgKzExNCw5IEBAIHByaXZhdGU6CiAgICAg
RmxvYXRSZWN0IG1hcmtlclJlY3QoZmxvYXQgc3Ryb2tlV2lkdGgpIGNvbnN0OwogICAgIHZvaWQg
cHJvY2Vzc01hcmtlclBvc2l0aW9ucygpOwogCi0gICAgdm9pZCBmaWxsU2hhcGUoY29uc3QgUmVu
ZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqKTsKLSAgICB2b2lkIHN0cm9rZVNoYXBlKGNvbnN0
IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0Kik7Ci0gICAgdm9pZCBzdHJva2VTaGFwZShH
cmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYs
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5
bGUmLCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29u
dGV4dCYpOwogICAgIHZvaWQgZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJik7CiAgICAgdm9p
ZCBkcmF3TWFya2VycyhQYWludEluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggNGUwOGYzZjlhYTI0ZmQxOGJkMjJjOGM1OThi
YjlhZDllZWZkNDk2OS4uOTJiNzFlOWM2NDg1MTA4Y2UyYzdiZjM0NzU0MGM4N2E2MmQ2NWYwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBA
IC00ODAsNyArNDgwLDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnMKIAogdm9pZCBSZW5kZXJT
VkdUZXh0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQog
ewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlm
IChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZApAQCAt
NDg4LDcgKzQ4OCw3IEBAIHZvaWQgUmVuZGVyU1ZHVGV4dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JikKICAgICAgICAgIHJldHVybjsKIAogICAgIFBhaW50
SW5mbyBibG9ja0luZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmJsb2NrSW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoYmxvY2tJbmZvLmNvbnRleHQoKSk7CiAgICAgYmxvY2tJbmZvLmFw
cGx5VHJhbnNmb3JtKGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSk7CiAgICAgUmVuZGVyQmxvY2s6
OnBhaW50KGJsb2NrSW5mbywgTGF5b3V0UG9pbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAK
aW5kZXggMDI3MDNkM2RmOTYwNmM4Y2JiYWZiOWE1ZWQ1MDA1ODZjMjJmZDhkNS4uNzgzN2ViNTI0
ZWUyNWMyNGJhOGZhZjAzZGIwZGY3ZWNjZmFiNWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6ZGV0ZXJt
aW5lSWZMYXlvdXRTaXplQ2hhbmdlZCgpCiB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
OjphcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBpZiAoU1ZH
UmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykpCi0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmNsaXAobV92aWV3cG9ydCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6
OmNhbGNWaWV3cG9ydCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVGbG93Qm94LmNwcAppbmRleCBkMWY0YzVjM2VhZjlmM2I5MTI4ZjNjM2I5OTczMjM3MjBm
M2U2ZmIzLi5kODliY2ZlNmUzZjZjMDVkM2IwZGM5ZjRmZGI0NzJmYjhlNDE1Mjg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBTVkdJbmxpbmVGbG93Qm94
OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiB7CiAgICAg
QVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludElu
Zm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7Ci0gICAgQVNTRVJUKCFwYWludEluZm8u
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKTsKKyAgICBBU1NFUlQoIXBhaW50SW5mby5jb250
ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKTsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5m
byhwYWludEluZm8pOwogICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewpAQCAtNDgsNyArNDgsNyBAQCB2
b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8m
IHBhaW50SW5mbykKIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCwgTGF5b3V0
VW5pdCkKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NF
UlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCgh
cGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgU1ZHUmVuZGVy
aW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0KHJlbmRlcmVyKCksIHBhaW50SW5mbywgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgaWYgKHJlbmRlcmluZ0Nv
bnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA4M2IxNzVkZmM1NDg0ZWE1ZWIx
NWRjMjk2MWI4MmMwNmNhY2M0ZWM4Li5lZjhmMThlZWNlY2FiYTkxNjI1NGJiNzNmMjE2NDAzNzMy
ZmE1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKQEAgLTIyMCwxMyArMjIwLDEzIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnRTZWxlY3Rpb25CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgICAgICBp
ZiAoIW1hcFN0YXJ0RW5kUG9zaXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoZnJhZ21lbnQs
IGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbikpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBmcmFnbWVudC5idWls
ZEZyYWdtZW50VHJhbnNmb3JtKGZyYWdtZW50VHJhbnNmb3JtKTsKICAgICAgICAgaWYgKCFmcmFn
bWVudFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+Y29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKIAotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0RmlsbENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNlbGVjdGlvblJlY3RG
b3JUZXh0RnJhZ21lbnQoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRF
bmRQb3NpdGlvbiwgJnN0eWxlKSwgYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29s
b3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmls
bFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFy
dFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNrZ3JvdW5kQ29sb3Is
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9
IEFwcGx5VG9EZWZhdWx0TW9kZTsKICAgICB9CkBAIC0yODgsMTcgKzI4OCwxNyBAQCB2b2lkIFNW
R0lubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZQogICAgICAgICBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50ID0gbV90
ZXh0RnJhZ21lbnRzLmF0KGkpOwogICAgICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7
CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludElu
Zm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgZnJhZ21lbnQuYnVpbGRGcmFnbWVudFRy
YW5zZm9ybShmcmFnbWVudFRyYW5zZm9ybSk7CiAgICAgICAgIGlmICghZnJhZ21lbnRUcmFuc2Zv
cm0uaXNJZGVudGl0eSgpKQotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENU
TShmcmFnbWVudFRyYW5zZm9ybSk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNv
bmNhdENUTShmcmFnbWVudFRyYW5zZm9ybSk7CiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRleHQg
ZGVjb3JhdGlvbnMgZXhjZXB0IGxpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3JlIHRo
ZSB0ZXh0IGlzIGZpbGxlZCBhbmQgc3Ryb2tlZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVyZWQg
b24gdG9wIG9mIHRoZXNlIGRlY29yYXRpb25zLgogICAgICAgICBpbnQgZGVjb3JhdGlvbnMgPSBz
dHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMg
JiBUZXh0RGVjb3JhdGlvblVuZGVybGluZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihw
YWludEluZm8uY29udGV4dCwgVGV4dERlY29yYXRpb25VbmRlcmxpbmUsIGZyYWdtZW50KTsKKyAg
ICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3Jh
dGlvblVuZGVybGluZSwgZnJhZ21lbnQpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0
RGVjb3JhdGlvbk92ZXJsaW5lKQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5m
by5jb250ZXh0LCBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CisgICAgICAgICAg
ICBwYWludERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25PdmVy
bGluZSwgZnJhZ21lbnQpOwogCiAgICAgICAgIGF1dG8gcGFpbnRPcmRlciA9IHN0eWxlLnN2Z1N0
eWxlKCkucGFpbnRUeXBlc0ZvclBhaW50T3JkZXIoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHBhaW50T3JkZXIuc2l6ZSgpOyArK2kpIHsKQEAgLTMwNywxMyArMzA3LDEzIEBA
IHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICAgICAgaWYgKCFoYXNGaWxsKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtX3BhaW50aW5n
UmVzb3VyY2VNb2RlID0gQXBwbHlUb0ZpbGxNb2RlIHwgQXBwbHlUb1RleHRNb2RlOwotICAgICAg
ICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCwgJnN0eWxlLCBzZWxlY3Rpb25T
dHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAg
ICAgICAgICAgICAgICBwYWludFRleHQocGFpbnRJbmZvLmNvbnRleHQoKSwgJnN0eWxlLCBzZWxl
Y3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlU3Ry
b2tlOgogICAgICAgICAgICAgICAgIGlmICghaGFzVmlzaWJsZVN0cm9rZSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbV9wYWludGluZ1Jlc291cmNlTW9k
ZSA9IEFwcGx5VG9TdHJva2VNb2RlIHwgQXBwbHlUb1RleHRNb2RlOwotICAgICAgICAgICAgICAg
IHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJh
Z21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAgICAgICAgICAg
ICAgICBwYWludFRleHQocGFpbnRJbmZvLmNvbnRleHQoKSwgJnN0eWxlLCBzZWxlY3Rpb25TdHls
ZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlTWFya2VyczoKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZQogCiAgICAgICAgIC8vIFNwZWM6IExpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJh
d24gYWZ0ZXIgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0aGUgbGluZS10
aHJvdWdoIGlzIHJlbmRlcmVkIG9uIHRvcCBvZiB0aGUgdGV4dC4KICAgICAgICAgaWYgKGRlY29y
YXRpb25zICYgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCkKLSAgICAgICAgICAgIHBhaW50RGVj
b3JhdGlvbihwYWludEluZm8uY29udGV4dCwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJh
Z21lbnQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCks
IFRleHREZWNvcmF0aW9uTGluZVRocm91Z2gsIGZyYWdtZW50KTsKIAogICAgICAgICBtX3BhaW50
aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTM3OSwxNCAr
Mzc5LDEyIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cmVsZWFzZVBhaW50aW5nUmVzb3VyY2Uo
R3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QKIAogYm9vbCBTVkdJbmxpbmVUZXh0Qm94
OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCom
IGNvbnRleHQsIGZsb2F0IHNjYWxpbmdGYWN0b3IsIFRleHRSdW4mIHRleHRSdW4sIFJlbmRlclN0
eWxlKiBzdHlsZSkKIHsKLSAgICBib29sIGFjcXVpcmVkUmVzb3VyY2UgPSBhY3F1aXJlUGFpbnRp
bmdSZXNvdXJjZShjb250ZXh0LCBzY2FsaW5nRmFjdG9yLCBwYXJlbnQoKS0+cmVuZGVyZXIoKSwg
c3R5bGUpOwotICAgIGlmICghYWNxdWlyZWRSZXNvdXJjZSkKKyAgICBpZiAoIWFjcXVpcmVQYWlu
dGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHBhcmVudCgpLT5yZW5kZXJlcigp
LCBzdHlsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMp
CiAgICAgLy8gU1ZHIEZvbnRzIG5lZWQgYWNjZXNzIHRvIHRoZSBwYWludGluZyByZXNvdXJjZSB1
c2VkIHRvIGRyYXcgdGhlIGN1cnJlbnQgdGV4dCBjaHVuay4KLSAgICBUZXh0UnVuOjpSZW5kZXJp
bmdDb250ZXh0KiByZW5kZXJpbmdDb250ZXh0ID0gdGV4dFJ1bi5yZW5kZXJpbmdDb250ZXh0KCk7
Ci0gICAgaWYgKHJlbmRlcmluZ0NvbnRleHQpCisgICAgaWYgKGF1dG8qIHJlbmRlcmluZ0NvbnRl
eHQgPSB0ZXh0UnVuLnJlbmRlcmluZ0NvbnRleHQoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQqPihyZW5kZXJpbmdDb250ZXh0KS0+c2V0QWN0aXZlUGFp
bnRpbmdSZXNvdXJjZShtX3BhaW50aW5nUmVzb3VyY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0odGV4dFJ1bik7CkBAIC00OTksNyArNDk3LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCb3hN
b2RlbE9iamVjdCYgZmluZFJlbmRlcmVyRGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKElubGluZUYK
ICAgICByZXR1cm4gKnJlbmRlcmVyOwogfQogCi12b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFRleHREZWNvcmF0aW9uIGRlY29y
YXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQpCit2b2lkIFNWR0lubGluZVRl
eHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFRleHREZWNv
cmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQpCiB7CiAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpID09IFRl
eHREZWNvcmF0aW9uTm9uZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTI3LDcgKzUyNSw3IEBAIHZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgVGV4dERlY29yYXRpb24KICAgICB9CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERl
Y29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgUmVu
ZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25SZW5kZXJlcikKK3ZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
VGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVu
dCwgUmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25SZW5kZXJlcikKIHsKICAgICBBU1NF
UlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiAgICAgQVNTRVJUKG1fcGFpbnRpbmdSZXNvdXJjZU1v
ZGUgIT0gQXBwbHlUb0RlZmF1bHRNb2RlKTsKQEAgLTU0OSwxMSArNTQ3LDExIEBAIHZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgVGV4dERlCiAgICAgZmxvYXQgd2lkdGggPSBmcmFnbWVudC53aWR0aDsKICAgICBj
b25zdCBGb250TWV0cmljcyYgc2NhbGVkRm9udE1ldHJpY3MgPSBzY2FsZWRGb250LmZvbnRNZXRy
aWNzKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
ICAgICBpZiAoc2NhbGluZ0ZhY3RvciAhPSAxKSB7CiAgICAgICAgIHdpZHRoICo9IHNjYWxpbmdG
YWN0b3I7CiAgICAgICAgIGRlY29yYXRpb25PcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvciwgc2Nh
bGluZ0ZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGlu
Z0ZhY3RvciwgMSAvIHNjYWxpbmdGYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9h
dFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAgICAgfQogCiAg
ICAgZGVjb3JhdGlvbk9yaWdpbi5tb3ZlKDAsIC1zY2FsZWRGb250TWV0cmljcy5mbG9hdEFzY2Vu
dCgpICsgcG9zaXRpb25PZmZzZXRGb3JEZWNvcmF0aW9uKGRlY29yYXRpb24sIHNjYWxlZEZvbnRN
ZXRyaWNzLCB0aGlja25lc3MpKTsKQEAgLTU2MSwxMSArNTU5LDEyIEBAIHZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgVGV4dERlCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3QoZGVj
b3JhdGlvbk9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCB0aGlja25lc3MpKSk7CiAKLSAgICBpZiAo
YWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgc2NhbGluZ0ZhY3RvciwgZGVjb3JhdGlv
blJlbmRlcmVyLCAmZGVjb3JhdGlvblN0eWxlKSkKLSAgICAgICAgcmVsZWFzZVBhaW50aW5nUmVz
b3VyY2UoY29udGV4dCwgJnBhdGgpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9
ICZjb250ZXh0OworICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0UHRyLCBz
Y2FsaW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5bGUpKQorICAg
ICAgICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0UHRyLCAmcGF0aCk7CiB9CiAKLXZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRp
b24pCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBUZXh0UnVuJiB0ZXh0UnVuLCBj
b25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVu
ZFBvc2l0aW9uKQogewogICAgIGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigpLnNjYWxp
bmdGYWN0b3IoKTsKICAgICBBU1NFUlQoc2NhbGluZ0ZhY3Rvcik7CkBAIC01ODMsMjQgKzU4Miwy
NSBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgUmVuZGVyU3R5bAogCiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Qo
RmxvYXRQb2ludCh0ZXh0T3JpZ2luLngoKSwgdGV4dE9yaWdpbi55KCkgLSBzY2FsZWRGb250LmZv
bnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoKSksIHRleHRTaXplKTsKIAorICAgIEdyYXBoaWNzQ29u
dGV4dCogdXNlZENvbnRleHQgPSAmY29udGV4dDsKICAgICBkbyB7Ci0gICAgICAgIGlmICghcHJl
cGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyhjb250ZXh0LCBzY2FsaW5nRmFjdG9y
LCB0ZXh0UnVuLCBzdHlsZSkpCisgICAgICAgIGlmICghcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZv
clRleHRQYWludGluZyh1c2VkQ29udGV4dCwgc2NhbGluZ0ZhY3RvciwgdGV4dFJ1biwgc3R5bGUp
KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgewotICAgICAgICAgICAgU2hhZG93QXBw
bGllciBzaGFkb3dBcHBsaWVyKCpjb250ZXh0LCBzaGFkb3csIHNoYWRvd1JlY3QpOworICAgICAg
ICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dBcHBsaWVyKCp1c2VkQ29udGV4dCwgc2hhZG93LCBz
aGFkb3dSZWN0KTsKIAogICAgICAgICAgICAgaWYgKCFzaGFkb3dBcHBsaWVyLmRpZFNhdmVDb250
ZXh0KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3Rv
cikpOworICAgICAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICB1
c2VkQ29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGlu
Z0ZhY3RvcikpOwogCi0gICAgICAgICAgICBzY2FsZWRGb250LmRyYXdUZXh0KGNvbnRleHQsIHRl
eHRSdW4sIHRleHRPcmlnaW4gKyBzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHNjYWxlZEZvbnQuZHJhd1RleHQoKnVz
ZWRDb250ZXh0LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luICsgc2hhZG93QXBwbGllci5leHRyYU9mZnNl
dCgpLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7CiAKICAgICAgICAgICAgIGlmICghc2hh
ZG93QXBwbGllci5kaWRTYXZlQ29udGV4dCgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICAgICAgICAgICAgICB1c2VkQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmVzdG9yZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBhaW50aW5nKGNv
bnRleHQsIHRleHRSdW4pOworICAgICAgICByZXN0b3JlR3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0
UGFpbnRpbmcodXNlZENvbnRleHQsIHRleHRSdW4pOwogCiAgICAgICAgIGlmICghc2hhZG93KQog
ICAgICAgICAgICAgYnJlYWs7CkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0
Qm94OjpwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRl
clN0eWwKICAgICB9IHdoaWxlIChzaGFkb3cpOwogfQogCi12b2lkIFNWR0lubGluZVRleHRCb3g6
OnBhaW50VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwg
UmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdt
ZW50LCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpCit2b2lk
IFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVj
dGVkVGV4dE9ubHkpCiB7CiAgICAgQVNTRVJUKHN0eWxlKTsKICAgICBBU1NFUlQoc2VsZWN0aW9u
U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guaAppbmRleCAyM2MwNzY5ZmU5ZmE3NzYyOGJlZDAxZWEzY2IwYzc5ZTVhYWNmYjY4Li4xN2Vj
ZWYzYWNhOTQ1ZjcxYjJlNWZjODQ2YTkzMTVkMmZmY2ExMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtNzcsMTAgKzc3LDEwIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5n
KEdyYXBoaWNzQ29udGV4dComLCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBUZXh0UnVuJiwgUmVuZGVy
U3R5bGUqKTsKICAgICB2b2lkIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGlu
ZyhHcmFwaGljc0NvbnRleHQqJiwgVGV4dFJ1biYpOwogCi0gICAgdm9pZCBwYWludERlY29yYXRp
b24oR3JhcGhpY3NDb250ZXh0KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYpOwotICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCos
IFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKLSAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dz
KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRG
cmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pOwotICAgIHZvaWQg
cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHNl
bGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwg
Ym9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsK
KyAgICB2b2lkIHBhaW50RGVjb3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmLCBUZXh0
RGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyQm94TW9kZWxPYmplY3Qm
IGRlY29yYXRpb25SZW5kZXJlcik7CisgICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFw
aGljc0NvbnRleHQmLCBSZW5kZXJTdHlsZSosIFRleHRSdW4mLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmLCBpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKTsKKyAgICB2b2lkIHBhaW50
VGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBzZWxlY3Rp
b25TdHlsZSwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgYm9vbCBoYXNTZWxlY3Rpb24sIGJvb2wg
cGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RB
Y3Rpb24pIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyMTJhMTY2ZWMwY2YyMDc2ZmJjNzNiMTEz
NGFlOGJiYmQ2NjM3M2YwLi5mYjlhMDNjNTk1ZTYzNjA2OTZhZTFiM2ZkNWZiMjE0Y2YzNjRmMDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTU2LDE5ICs1NiwyMCBAQCBTVkdSZW5kZXJpbmdDb250ZXh0Ojp+U1ZH
UmVuZGVyaW5nQ29udGV4dCgpCiAKICAgICBpZiAobV9yZW5kZXJpbmdGbGFncyAmIEVuZEZpbHRl
ckxheWVyKSB7CiAgICAgICAgIEFTU0VSVChtX2ZpbHRlcik7Ci0gICAgICAgIG1fZmlsdGVyLT5w
b3N0QXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5
VG9EZWZhdWx0TW9kZSwgMCwgMCk7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0ID0gbV9z
YXZlZENvbnRleHQ7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9ICZtX3Bh
aW50SW5mby0+Y29udGV4dCgpOworICAgICAgICBtX2ZpbHRlci0+cG9zdEFwcGx5UmVzb3VyY2Uo
Km1fcmVuZGVyZXIsIGNvbnRleHRQdHIsIEFwcGx5VG9EZWZhdWx0TW9kZSwgMCwgMCk7CisgICAg
ICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCptX3NhdmVkQ29udGV4dCk7CiAgICAgICAgIG1f
cGFpbnRJbmZvLT5yZWN0ID0gbV9zYXZlZFBhaW50UmVjdDsKICAgICB9CiAKICAgICBpZiAobV9y
ZW5kZXJpbmdGbGFncyAmIEVuZE9wYWNpdHlMYXllcikKLSAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250
ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdz
ICYgRW5kU2hhZG93TGF5ZXIpCi0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5lbmRUcmFu
c3BhcmVuY3lMYXllcigpOworICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiAKICAgICBpZiAobV9yZW5kZXJpbmdGbGFncyAmIFJlc3RvcmVHcmFw
aGljc0NvbnRleHQpCi0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkucmVzdG9yZSgpOwogfQogCiB2b2lkIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIFBhaW50SW5mbyYgcGFpbnRJbmZvLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUg
bmVlZHNHcmFwaGljc0NvbnRleHRTYXZlKQpAQCAtODUsNyArODYsNyBAQCB2b2lkIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIFBhaQogCiAgICAgLy8gV2UgbmVlZCB0byBzYXZlIC8gcmVzdG9yZSB0aGUgY29udGV4
dCBldmVuIGlmIHRoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuCiAgICAgaWYgKG5lZWRzR3JhcGhp
Y3NDb250ZXh0U2F2ZSA9PSBTYXZlR3JhcGhpY3NDb250ZXh0KSB7Ci0gICAgICAgIG1fcGFpbnRJ
bmZvLT5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2F2
ZSgpOwogICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IFJlc3RvcmVHcmFwaGljc0NvbnRleHQ7
CiAgICAgfQogCkBAIC0xMTEsMjQgKzExMiwyNCBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6
OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQog
CiAgICAgaWYgKG9wYWNpdHkgPCAxIHx8IHNoYWRvdyB8fCBoYXNCbGVuZE1vZGUgfHwgaXNvbGF0
ZU1hc2tGb3JCbGVuZGluZyB8fCBoYXNJc29sYXRpb24pIHsKICAgICAgICAgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0ID0gbV9yZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsK
LSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmNsaXAocmVwYWludFJlY3QpOworICAgICAg
ICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmNsaXAocmVwYWludFJlY3QpOwogCiAgICAgICAgIGlm
IChvcGFjaXR5IDwgMSB8fCBoYXNCbGVuZE1vZGUgfHwgaXNvbGF0ZU1hc2tGb3JCbGVuZGluZyB8
fCBoYXNJc29sYXRpb24pIHsKIAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAg
ICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1f
cGFpbnRJbmZvLT5jb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgc3R5bGUuYmxlbmRNb2Rl
KCkpOworICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCksIHN0
eWxlLmJsZW5kTW9kZSgpKTsKIAotICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CisgICAgICAgICAgICBtX3BhaW50SW5mby0+
Y29udGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAKICAgICAgICAgICAg
IGlmIChoYXNCbGVuZE1vZGUpCi0gICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQt
PnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BhaW50SW5mby0+Y29udGV4dC0+Y29tcG9zaXRlT3Bl
cmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICAgICAgbV9wYWludEluZm8t
PmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQoKS5j
b21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgICAgICAgICAgbV9y
ZW5kZXJpbmdGbGFncyB8PSBFbmRPcGFjaXR5TGF5ZXI7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoc2hhZG93KSB7Ci0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+c2V0U2hhZG93
KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkp
KSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwotICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoMSk7CisgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRT
aXplKHJvdW5kVG9JbnQoc2hhZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNo
YWRvdy0+cmFkaXVzKCksIHNoYWRvdy0+Y29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigx
KTsKICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gRW5kU2hhZG93TGF5ZXI7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xNDcsNyArMTQ4LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0
OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkK
ICAgICAgICAgICAgIHJlZmVyZW5jZUJveC5zZXRIZWlnaHQodmlld3BvcnRTaXplLmhlaWdodCgp
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZWZlcmVuY2VCb3ggPSByZW5kZXJlci5v
YmplY3RCb3VuZGluZ0JveCgpOwotICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcFBh
dGgoY2xpcFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94KSwgY2xpcFBhdGgu
d2luZFJ1bGUoKSk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcFBhdGgoY2xp
cFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94KSwgY2xpcFBhdGgud2luZFJ1
bGUoKSk7CiAgICAgfQogCiAgICAgYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6
OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKCptX3JlbmRlcmVyKTsKQEAgLTE2MSwyNiArMTYy
LDM1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAKICAgICBpZiAoIWlzUmVuZGVyaW5nTWFz
aykgewogICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IHJlc291
cmNlcy0+bWFza2VyKCkpIHsKLSAgICAgICAgICAgIGlmICghbWFza2VyLT5hcHBseVJlc291cmNl
KCptX3JlbmRlcmVyLCBzdHlsZSwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9EZWZhdWx0
TW9kZSkpCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWlu
dEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbWFza2VyLT5hcHBs
eVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRN
b2RlKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCpjb250ZXh0UHRyKTsK
KyAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IHJl
c291cmNlcy0+Y2xpcHBlcigpOwogICAgIGlmICghY2xpcFBhdGhPcGVyYXRpb24gJiYgY2xpcHBl
cikgewotICAgICAgICBpZiAoIWNsaXBwZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0
eWxlLCBtX3BhaW50SW5mby0+Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlKSkKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7Cisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gY2xpcHBlci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwg
c3R5bGUsIGNvbnRleHRQdHIsIEFwcGx5VG9EZWZhdWx0TW9kZSk7CisgICAgICAgIG1fcGFpbnRJ
bmZvLT5zZXRDb250ZXh0KCpjb250ZXh0UHRyKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1JlbmRlcmluZ01hc2spIHsKICAg
ICAgICAgbV9maWx0ZXIgPSByZXNvdXJjZXMtPmZpbHRlcigpOwogICAgICAgICBpZiAobV9maWx0
ZXIpIHsKLSAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0gbV9wYWludEluZm8tPmNvbnRleHQ7
CisgICAgICAgICAgICBtX3NhdmVkQ29udGV4dCA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOwog
ICAgICAgICAgICAgbV9zYXZlZFBhaW50UmVjdCA9IG1fcGFpbnRJbmZvLT5yZWN0OwogICAgICAg
ICAgICAgLy8gUmV0dXJuIHdpdGggZmFsc2UgaGVyZSBtYXkgbWVhbiB0aGF0IHdlIGRvbid0IG5l
ZWQgdG8gZHJhdyB0aGUgY29udGVudAogICAgICAgICAgICAgLy8gKGJlY2F1c2UgaXQgd2FzIGVp
dGhlciBkcmF3biBiZWZvcmUgb3IgZW1wdHkpIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGFwcGx5IHRo
ZSBmaWx0ZXIuCiAgICAgICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZEZpbHRlckxheWVy
OwotICAgICAgICAgICAgaWYgKCFtX2ZpbHRlci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwg
c3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVmYXVsdE1vZGUpKQorICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0
KCk7CisgICAgICAgICAgICBib29sIHJlc3VsdCA9IG1fZmlsdGVyLT5hcHBseVJlc291cmNlKCpt
X3JlbmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICAg
ICAgICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCpjb250ZXh0UHRyKTsKKyAgICAgICAgICAg
IGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8g
U2luY2Ugd2UncmUgY2FjaGluZyB0aGUgcmVzdWx0aW5nIGJpdG1hcCBhbmQgZG8gbm90IGludmFs
aWRhdGUgaXQgb24gcmVwYWludCByZWN0CkBAIC0yNTQsOSArMjY0LDggQEAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFIKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgIHRyYW5zZm9y
bS5zY2FsZShzY2FsZSkudHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSkubXVsdGlwbHko
YWJzb2x1dGVUcmFuc2Zvcm0pOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBpbWFnZUNvbnRleHQg
PSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIEFTU0VSVChpbWFnZUNvbnRleHQpOwotICAg
IGltYWdlQ29udGV4dC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGltYWdlQ29udGV4
dC5jb25jYXRDVE0odHJhbnNmb3JtKTsKIAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KQEAg
LTI3NCwxMSArMjgzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQq
IGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdl
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpOwogCiAgICAgLy8gQ29tcGVuc2F0ZSByb3VuZGluZyBlZmZlY3RzLCBhcyB0
aGUgYWJzb2x1dGUgdGFyZ2V0IHJlY3QgaXMgdXNpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBh
bmQgdGhlIGltYWdlIGJ1ZmZlciBzaXplIGlzIGludGVnZXIuCi0gICAgaW1hZ2VDb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUodW5jbGFtcGVkU2l6ZS53aWR0aCgpIC8gdGFyZ2V0UmVjdC53aWR0aCgp
LCB1bmNsYW1wZWRTaXplLmhlaWdodCgpIC8gdGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworICAgIGlt
YWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUodW5jbGFtcGVkU2l6ZS53aWR0aCgpIC8gdGFyZ2V0
UmVjdC53aWR0aCgpLCB1bmNsYW1wZWRTaXplLmhlaWdodCgpIC8gdGFyZ2V0UmVjdC5oZWlnaHQo
KSkpOwogCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQpAQCAtMjg2LDcgKzI5NCw2IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSCiB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1
YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVyRWxlbWVudCYgaXRl
bSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdWJ0cmVlQ29udGVudFRyYW5zZm9ybWF0aW9uKQog
ewogICAgIEFTU0VSVChpbWFnZSk7Ci0gICAgQVNTRVJUKGltYWdlLT5jb250ZXh0KCkpOwogCiAg
ICAgUGFpbnRJbmZvIGluZm8oaW1hZ2UtPmNvbnRleHQoKSwgTGF5b3V0UmVjdDo6aW5maW5pdGVS
ZWN0KCksIFBhaW50UGhhc2VGb3JlZ3JvdW5kLCBQYWludEJlaGF2aW9yTm9ybWFsKTsKIApAQCAt
MzAwLDE4ICszMDcsMTcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVl
VG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIFJlbmRlckUKICAgICBjb250ZW50VHJh
bnNmb3JtYXRpb24gPSBzYXZlZENvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKIH0KIAotdm9pZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZm
ZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCit2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKIHsK
LSAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKIAogICAgIEZs
b2F0UmVjdCBhYnNvbHV0ZVRhcmdldFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFy
Z2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFz
IGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGlt
YWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBw
cm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFz
IHdlbGwuCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2Uo
KSk7Ci0gICAgY29udGV4dC0+Y2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFi
c29sdXRlVGFyZ2V0UmVjdCk7Ci0gICAgY29udGV4dC0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNm
b3JtKTsKKyAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkp
OworICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29s
dXRlVGFyZ2V0UmVjdCk7CisgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0p
OwogCiAgICAgLy8gV2hlbiBuZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0Jv
eCBhcyBjb250ZW50IHVuaXQgdHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCiAg
ICAgLy8gcmVzdWx0aW5nIGltYWdlIGJ1ZmZlciBhcyB0aGUgcGFyZW50IHJlc291cmNlIGFscmVh
ZHkgY2FjaGVzIHRoZSByZXN1bHQuCkBAIC0zMzUsNyArMzQxLDcgQEAgYm9vbCBTVkdSZW5kZXJp
bmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4m
IGltYWdlQnUKIAogICAgIC8vIEludmFsaWRhdGUgYW4gZXhpc3RpbmcgYnVmZmVyIGlmIHRoZSBz
Y2FsZSBpcyBub3QgY29ycmVjdC4KICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG1fcGFpbnRJbmZvLT5jb250ZXh0LT5nZXRDVE0oR3Jh
cGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKKyAgICAgICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZ2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgICAgIElu
dFNpemUgZXhwYW5kZWRCb3VuZGluZ0JveCA9IGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5z
aXplKCkpOwogICAgICAgICBJbnRTaXplIGJ1ZmZlclNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWls
KGV4cGFuZGVkQm91bmRpbmdCb3gud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0
aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC5oZWlnaHQoKSAqIHRyYW5zZm9y
bS55U2NhbGUoKSkpKTsKICAgICAgICAgaWYgKGJ1ZmZlclNpemUgIT0gaW1hZ2VCdWZmZXItPmlu
dGVybmFsU2l6ZSgpKQpAQCAtMzQ0LDE3ICszNTAsMTcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250
ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnUKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5k
IGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpZiAoKGltYWdlQnVm
ZmVyID0gbV9wYWludEluZm8tPmNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIHRydWUpKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0KiBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpOwotICAgICAgICAgICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LT50cmFuc2xhdGUo
LWJvdW5kaW5nQm94LngoKSwgLWJvdW5kaW5nQm94LnkoKSk7CisgICAgICAgIGlmICgoaW1hZ2VC
dWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhw
YW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIHRydWUpKSkgeworICAgICAgICAgICAg
R3JhcGhpY3NDb250ZXh0JiBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpOworICAgICAgICAgICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LnRyYW5zbGF0
ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgICAgIFBhaW50
SW5mbyBidWZmZXJlZEluZm8oKm1fcGFpbnRJbmZvKTsKLSAgICAgICAgICAgIGJ1ZmZlcmVkSW5m
by5jb250ZXh0ID0gYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0OworICAgICAgICAgICAgYnVmZmVy
ZWRJbmZvLnNldENvbnRleHQoYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0KTsKICAgICAgICAgICAg
IGRvd25jYXN0PFJlbmRlclNWR0ltYWdlPigqbV9yZW5kZXJlcikucGFpbnRGb3JlZ3JvdW5kKGJ1
ZmZlcmVkSW5mbyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VC
dWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICBtX3Bh
aW50SW5mby0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgYm91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5o
CmluZGV4IDlhMjNjMjUxMjNiODdlYzI5Y2ZkYTBjZWM3ZWMyNDU2NTk4NDNkOGEuLjQ2Mzg0YzQ4
ZWEwZjhhZTRhODhiNjVjMTI3ZTE4ZGNmMWZjM2NmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03NSw3ICs3NSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xhbXBlZFJlY3QsIENvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUpOwogCiAgICAgc3RhdGljIHZv
aWQgcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBSZW5kZXJFbGVtZW50
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VC
dWZmZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CisgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1h
Z2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CiAKICAgICBzdGF0aWMgZmxvYXQgY2Fs
Y3VsYXRlU2NyZWVuRm9udFNpemVTY2FsaW5nRmFjdG9yKGNvbnN0IFJlbmRlck9iamVjdCYpOwog
ICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVy
bW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uc3QgUmVuZGVyT2JqZWN0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRleCBkMWE3ODM4
OWExNTY0YzQ0YWUxMjZkNGQxZWFhMWUwNjQ5N2VjYmIzLi44YjgwMTRiNjAxM2ZmY2JjMGJkMDA0
NjMxYTgzZDUwNmVmMDhjNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUm9vdElubGluZUJveC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVuZGVyU1ZHVGV4dCYg
U1ZHUm9vdElubGluZUJveDo6cmVuZGVyU1ZHVGV4dCgpCiB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQsIExheW91dFVuaXQsIExheW91dFVuaXQpCiB7CiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGVjdGlvbik7Ci0gICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpKTsKKyAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKTsKIAogICAgIGJvb2wgaXNQcmludGluZyA9IHJlbmRlclNWR1RleHQoKS5kb2N1bWVudCgp
LnByaW50aW5nKCk7CiAgICAgYm9vbCBoYXNTZWxlY3Rpb24gPSAhaXNQcmludGluZyAmJiBzZWxl
Y3Rpb25TdGF0ZSgpICE9IFJlbmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggZGQzZjI4NTU3ZTA2MjczODZkMDVjYmYzZWMwZjZmOTdmNTU2N2U1YS4u
ZmQ2OWZhNDg5Mjk1YjAyZGIwMGNiZjVkYmUzNzAyNWM2MWM4MDRkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTI2MiwxMyArMjYyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFRvUGF0
aFRyYW5zbGF0b3I+IFNWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVHbHlwaFRvCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yPih0ZXh0
UnVuLCBnbHlwaEJ1ZmZlciwgcG9pbnQsICpzdmdGb250RGF0YSwgKmZvbnRFbGVtZW50LCBmcm9t
LCBudW1HbHlwaHMsIHNjYWxlLCBpc1ZlcnRpY2FsVGV4dCk7CiB9CiAKLXZvaWQgU1ZHVGV4dFJ1
blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGludCBm
cm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKK3ZvaWQg
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29u
c3QKIHsKICAgICBhdXRvIGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UgPSB0aGlzLT5hY3RpdmVQYWlu
dGluZ1Jlc291cmNlKCk7CiAgICAgaWYgKCFhY3RpdmVQYWludGluZ1Jlc291cmNlKSB7CiAgICAg
ICAgIC8vIFRPRE86IFdlJ3JlIG9ubHkgc3VwcG9ydGluZyBzaW1wbGUgZmlsbGVkIEhUTUwgdGV4
dCBzbyBmYXIuCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvciogc29saWRQYWlu
dGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlkUGFpbnRpbmdSZXNv
dXJjZSgpOwotICAgICAgICBzb2xpZFBhaW50aW5nUmVzb3VyY2UtPnNldENvbG9yKGNvbnRleHQt
PmZpbGxDb2xvcigpKTsKKyAgICAgICAgc29saWRQYWludGluZ1Jlc291cmNlLT5zZXRDb2xvcihj
b250ZXh0LmZpbGxDb2xvcigpKTsKICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IHNv
bGlkUGFpbnRpbmdSZXNvdXJjZTsKICAgICB9CiAKQEAgLTI3NywxNSArMjc3LDE2IEBAIHZvaWQg
U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBGCiAKICAgICBBU1NFUlQoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSk7
CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3VyY2VNb2RlID0gY29udGV4dC0+dGV4
dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVTdHJva2UgPyBBcHBseVRvU3Ryb2tlTW9kZSA6IEFw
cGx5VG9GaWxsTW9kZTsKLSAgICBmb3IgKGF1dG8gdHJhbnNsYXRvciA9IGNyZWF0ZUdseXBoVG9Q
YXRoVHJhbnNsYXRvcigqZm9udCwgbnVsbHB0ciwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBo
cywgcG9pbnQpOyB0cmFuc2xhdG9yLT5jb250YWluc01vcmVQYXRocygpOyB0cmFuc2xhdG9yLT5h
ZHZhbmNlKCkpIHsKKyAgICBHcmFwaGljc0NvbnRleHQqIHVzZWRDb250ZXh0ID0gJmNvbnRleHQ7
CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VNb2RlIHJlc291cmNlTW9kZSA9IGNvbnRleHQudGV4dERy
YXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVTdHJva2UgPyBBcHBseVRvU3Ryb2tlTW9kZSA6IEFwcGx5
VG9GaWxsTW9kZTsKKyAgICBmb3IgKGF1dG8gdHJhbnNsYXRvciA9IGNyZWF0ZUdseXBoVG9QYXRo
VHJhbnNsYXRvcihmb250LCBudWxscHRyLCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBw
b2ludCk7IHRyYW5zbGF0b3ItPmNvbnRhaW5zTW9yZVBhdGhzKCk7IHRyYW5zbGF0b3ItPmFkdmFu
Y2UoKSkgewogICAgICAgICBQYXRoIGdseXBoUGF0aCA9IHRyYW5zbGF0b3ItPnBhdGgoKTsKLSAg
ICAgICAgaWYgKGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UoZWxlbWVudFJl
bmRlcmVyLCBzdHlsZSwgY29udGV4dCwgcmVzb3VyY2VNb2RlKSkgewotICAgICAgICAgICAgZmxv
YXQgc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCk7CisgICAgICAg
IGlmIChhY3RpdmVQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKGVsZW1lbnRSZW5kZXJl
ciwgc3R5bGUsIHVzZWRDb250ZXh0LCByZXNvdXJjZU1vZGUpKSB7CisgICAgICAgICAgICBmbG9h
dCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwogICAgICAgICAg
ICAgaWYgKGlzPFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpKQotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBkb3duY2Fz
dDxSZW5kZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOwotICAg
ICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVu
dFJlbmRlcmVyLCBjb250ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOwot
ICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyk7
CisgICAgICAgICAgICAgICAgdXNlZENvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VU
aGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigpKS5zY2Fs
aW5nRmFjdG9yKCkpOworICAgICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9zdEFw
cGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCB1c2VkQ29udGV4dCwgcmVzb3VyY2VNb2RlLCAm
Z2x5cGhQYXRoLCBudWxscHRyKTsKKyAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQuaAppbmRleCA1MDFiOWM4ZmYxMDUyNGE0OThhNmZlNzc3Y2I2OTk5Nzc0MWVkYzA0Li45
ZDg1ZmJlN2JhYTllZDQ5NzUxODI2ODZiZTNiMWU5MTdhMDY0OTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjdGl2ZVBhaW50aW5n
UmVzb3VyY2UoUmVuZGVyU1ZHUmVzb3VyY2UqIG9iamVjdCkgeyBtX2FjdGl2ZVBhaW50aW5nUmVz
b3VyY2UgPSBvYmplY3Q7IH0KIAogICAgIHZpcnR1YWwgR2x5cGhEYXRhIGdseXBoRGF0YUZvckNo
YXJhY3Rlcihjb25zdCBGb250Q2FzY2FkZSYsIFdpZHRoSXRlcmF0b3ImLCBVQ2hhcjMyIGNoYXJh
Y3RlciwgYm9vbCBtaXJyb3IsIGludCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5j
ZUxlbmd0aCwgU3RyaW5nJiBub3JtYWxpemVkU3BhY2VzU3RyaW5nQ2FjaGUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZv
bnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9p
bnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1NWR0dseXBocyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IHRvLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBm
bG9hdCBmbG9hdFdpZHRoVXNpbmdTVkdGb250KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4
dFJ1biYsIGludCYgY2hhcnNDb25zdW1lZCwgU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseVNWR0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRo
SXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBmcm9tKSBjb25zdCBvdmVycmlkZTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggOTYxZTE5ODll
NTcyYmJiNzJhNmUzZWU5YmFhMjQwOGExZTY1ODRiOC4uMDgxNTNjMWE5M2ZhMzZmMjVlMzA2OTY5
NjE4NzUzMWZiYTBjNTkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCkBAIC0xMzcsNyArMTM3LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUoMzAwLCAxNTApOwogfQogCi12b2lkIFNWR0ltYWdl
OjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRT
aXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwK
K3ZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKIHsKICAgICBpZiAoIW1fcGFnZSkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIFBhc3NOYXRp
dmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogfQogI2Vu
ZGlmCiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20s
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRh
aW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAg
RmxvYXRSZWN0IHpvb21lZENvbnRhaW5lclJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBj
b250YWluZXJTaXplKTsKICAgICB6b29tZWRDb250YWluZXJSZWN0LnNjYWxlKHpvb20pOwogCiAg
ICAgLy8gVGhlIEltYWdlQnVmZmVyIHNpemUgbmVlZHMgdG8gYmUgc2NhbGVkIHRvIG1hdGNoIHRo
ZSBmaW5hbCByZXNvbHV0aW9uLgotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250
ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC5n
ZXRDVE0oKTsKICAgICBGbG9hdFNpemUgaW1hZ2VCdWZmZXJTY2FsZSA9IEZsb2F0U2l6ZSh0cmFu
c2Zvcm0ueFNjYWxlKCksIHRyYW5zZm9ybS55U2NhbGUoKSk7CiAgICAgQVNTRVJUKGltYWdlQnVm
ZmVyU2NhbGUud2lkdGgoKSk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkp
OwpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgaWYgKCFi
dWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAg
ICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCB6b29t
LCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgaWYgKGNvbnRl
eHQtPmRyYXdMdW1pbmFuY2VNYXNrKCkpCisgICAgaWYgKGNvbnRleHQuZHJhd0x1bWluYW5jZU1h
c2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKICAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlID0gYnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3Rv
cmUsIFVuc2NhbGVkKTsKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRT
aXplCiAgICAgQWZmaW5lVHJhbnNmb3JtIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybShwYXR0ZXJu
VHJhbnNmb3JtKTsKICAgICB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0uc2NhbGUoMSAvIGltYWdl
QnVmZmVyU2NhbGUud2lkdGgoKSwgMSAvIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0g
ICAgY29udGV4dC0+c2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOworICAgIGNvbnRleHQuc2V0
RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0
LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNw
YWNlLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKQordm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CkBAIC0yMjksMTUgKzIyOSwxNSBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbAog
ICAgIEZyYW1lVmlldyogdmlldyA9IGZyYW1lVmlldygpOwogICAgIEFTU0VSVCh2aWV3KTsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAg
Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwot
ICAgIGNvbnRleHQtPmNsaXAoZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQu
Y2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKIAotICAgIGZsb2F0IGFscGhhID0gY29u
dGV4dC0+YWxwaGEoKTsKKyAgICBmbG9hdCBhbHBoYSA9IGNvbnRleHQuYWxwaGEoKTsKICAgICBi
b29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0ZU9wICE9
IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCB8fCBh
bHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllcikg
ewotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKLSAgICAg
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihh
bHBoYSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7CiAgICAgfQogCiAgICAgRmxvYXRTaXplIHNjYWxl
KGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNy
Y1JlY3QuaGVpZ2h0KCkpOwpAQCAtMjQ3LDggKzI0Nyw4IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsCiAgICAgRmxvYXRTaXplIHRvcExlZnRPZmZzZXQoc3JjUmVjdC5sb2NhdGlvbigpLngoKSAq
IHNjYWxlLndpZHRoKCksIHNyY1JlY3QubG9jYXRpb24oKS55KCkgKiBzY2FsZS5oZWlnaHQoKSk7
CiAgICAgRmxvYXRQb2ludCBkZXN0T2Zmc2V0ID0gZHN0UmVjdC5sb2NhdGlvbigpIC0gdG9wTGVm
dE9mZnNldDsKIAotICAgIGNvbnRleHQtPnRyYW5zbGF0ZShkZXN0T2Zmc2V0LngoKSwgZGVzdE9m
ZnNldC55KCkpOwotICAgIGNvbnRleHQtPnNjYWxlKHNjYWxlKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZShkZXN0T2Zmc2V0LngoKSwgZGVzdE9mZnNldC55KCkpOworICAgIGNvbnRleHQuc2NhbGUo
c2NhbGUpOwogCiAgICAgdmlldy0+cmVzaXplKGNvbnRhaW5lclNpemUoKSk7CiAKQEAgLTI1OCwx
MCArMjU4LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgaWYgKHZpZXctPm5lZWRz
TGF5b3V0KCkpCiAgICAgICAgIHZpZXctPmxheW91dCgpOwogCi0gICAgdmlldy0+cGFpbnQoY29u
dGV4dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQtPmNsaXBCb3VuZHMoKSwgZW5jbG9zaW5nSW50UmVj
dChzcmNSZWN0KSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIGludGVyc2VjdGlvbihjb250
ZXh0LmNsaXBCb3VuZHMoKSwgZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSkpOwogCiAgICAgaWYg
KGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgY29udGV4dC0+
ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOwogCiAgICAgc3RhdGVTYXZlci5yZXN0b3JlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggNmRmNWExYTRlOGUyYjU0NDQyMTViNzc1ZTE0NTAwZjVj
YmZhNDcwNC4uZmFlOGQwYzgzZTkyNGE2NzRmMDExMjE2YjgyZTVlYjNiZjIwNDE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTkxLDkgKzkxLDkgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImLCBjb25z
dCBVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBG
bG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiB0b1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRl
OworICAgIHZvaWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0
JiwgQmxlbmRNb2RlKTsKIAogICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50KCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcAppbmRleCAxMDUzNTQ4MTg3MjlmNzg1ODRmZmEzN2VlYmE1YjEzMDExMGU2NTk4Li4x
OWM0NzFiMmM4OTI0MGMzNWRjZjZlZDliZjYxNmUzOGY2MTU2N2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25z
dAogICAgIHJldHVybiBGbG9hdFNpemUocm91bmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6
ZSkpOwogfQogCi12b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAordm9pZCBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwKICAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBtX2ltYWdlLT5kcmF3Rm9yQ29u
dGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNSZWN0
LCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKK3ZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBtX2ltYWdl
LT5zZXRTcGFjZVNpemUoc3BhY2VTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCBhNGVlYWE5Zjc2M2I2ZjNlNjBj
MGYzYzFhOTcwNjNlM2JhYjAyYjIwLi45NzY5NWZkYThmNmI5ZWMwZGM3Yjg5OWYyMDk1ZDlmYTAz
NTE2MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2Ut
PmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWln
aHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1v
ZGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8g
YmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3du
VG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDE1Njc0NDMy
MmI4NDg4YmYzOGVhNGMzZWRjZWIwNjI4YmJlNTM4MDMuLmYwNzI1MThmNDQxNzUxMWM3OTEzOTBl
OTk2MjdmNWI1ZDE3ZTQ4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAg
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0gPSBmaWx0ZXIoKS5hYnNv
bHV0ZVRyYW5zZm9ybSgpOwotICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5jb25jYXRD
VE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmNv
bmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAgICAgU1ZHRWxlbWVudCogY29udGV4
dE5vZGUgPSBkb3duY2FzdDxTVkdFbGVtZW50PihyZW5kZXJlci0+ZWxlbWVudCgpKTsKICAgICAg
ICAgaWYgKGNvbnRleHROb2RlLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKSkgewpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgICAg
IC8vIElmIHdlJ3JlIHJlZmVyZW5jaW5nIGFuIGVsZW1lbnQgd2l0aCBwZXJjZW50YWdlIHVuaXRz
LCBlZy4gPHJlY3Qgd2l0aD0iMzAlIj4gdGhvc2UgdmFsdWVzIHdlcmUgcmVzb2x2ZWQgYWdhaW5z
dCB0aGUgdmlld3BvcnQuCiAgICAgICAgICAgICAvLyBCdWlsZCB1cCBhIHRyYW5zZm9ybWF0aW9u
IHRoYXQgbWFwcyBmcm9tIHRoZSB2aWV3cG9ydCBzcGFjZSB0byB0aGUgZmlsdGVyIHByaW1pdGl2
ZSBzdWJyZWdpb24uCiAgICAgICAgICAgICBpZiAobGVuZ3RoQ29udGV4dC5kZXRlcm1pbmVWaWV3
cG9ydCh2aWV3cG9ydFNpemUpKQotICAgICAgICAgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0
KCktPmNvbmNhdENUTShtYWtlTWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IHZpZXdwb3J0U2l6ZSksIGRlc3RSZWN0KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5jb25jYXRDVE0obWFrZU1hcEJldHdlZW5SZWN0cyhGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCB2aWV3cG9ydFNpemUpLCBkZXN0UmVjdCkpOwogICAgICAgICB9CiAKICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UobV9pbWFnZS5n
ZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHJlc3Vs
dEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCBzcmNSZWN0KTsKIH0KIAogdm9pZCBGRUltYWdlOjpkdW1wKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDUx
MmFmNDE5NGNiMjUxMzgxOGQ5MTEyMzQ5MWY2ZDIwZTQ4YWY4YjQuLjAwMjVhZTI5MzAyMTdhMmFl
NjYyZmYwNGQ2YTBiNjRjOWI0YmRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01p
c2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIC0gKHZvaWQpX3dlYl9k
cmF3QXRQb2ludDooTlNQb2ludClwb2ludCBmb250OihOU0ZvbnQgKilmb250IHRleHRDb2xvcjoo
TlNDb2xvciAqCiAgICAgICAgIFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpO
U0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVl
IGFscGhhOiZhbHBoYV07CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFr
ZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dCgmZ3Jh
cGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55
IDogKC0xICogcG9pbnQueSkpKSk7CisgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBo
aWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6
ICgtMSAqIHBvaW50LnkpKSkpOwogCiAgICAgICAgIGlmICghZmxpcHBlZCkKICAgICAgICAgICAg
IENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRl
eCAxMjc4MDIwYjg1YzU4YjJlYjNhODc4YzNiMDNiMzFkM2ZlOWZkM2RhLi5jZmNjZDNjZDY0OTI2
NTIxOTc2YzZiZjE4NTZiNmU4ZmI0NTNkZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtNDgyLDcg
KzQ4Miw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VG
b3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtCiAgICAgUGFpbnRCZWhhdmlvciBvbGRQ
YWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3
LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKIAotICAgIGJ1
ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLXRvRmxvYXRTaXplKHJlY3QubG9jYXRpb24oKSkp
OworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtdG9GbG9hdFNpemUocmVjdC5sb2Nh
dGlvbigpKSk7CiAgICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgp
LCByb3VuZGVkSW50UmVjdChyZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKG9sZFNlbGVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQppbmRleCA0MWQwMDgxNjMzNzAyNzRkMWY1NWM1OWE2NTcwODZjZjk1NGJmYmM0
Li4wYjMyMTIwN2MzMjNlNGRhMDA5MzBlOWM4MDRlMGQyMzhhOTRjZGQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTY0NCw5ICs2NDQsOSBAQCAtICh2b2lkKV9kcmF3
UmVjdDooTlNSZWN0KXJlY3QgY29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQogICAgIH0K
ICAgICAKICAgICBpZiAoY29udGVudHNPbmx5KQotICAgICAgICB2aWV3LT5wYWludENvbnRlbnRz
KCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgdmlldy0+cGFpbnRD
b250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKICAgICBlbHNlCi0gICAg
ICAgIHZpZXctPnBhaW50KCZjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKKyAgICAg
ICAgdmlldy0+cGFpbnQoY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAKICAgICBp
ZiAoc2hvdWxkRmxhdHRlbikKICAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhh
dmlvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5jcHAKaW5kZXggYzRjMzYxOTllZDllOWZkYzc2NmVmZTA4NDU3Mzc5Yzcy
ODVlYjMyZS4uMTZjM2E0NzlhNTIzZTFiYmM0ZmE3NzVlYTkwOWRiMDhkMTBjMmM3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpw
YWludCgpCiAgICAgaWYgKG1fcGx1Z2luLT5pc1RyYW5zcGFyZW50KCkpCiAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+Y2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBtX3BsdWdpbi0+cGFpbnQo
Z3JhcGhpY3NDb250ZXh0LmdldCgpLCBkaXJ0eVJlY3QpOworICAgIG1fcGx1Z2luLT5wYWludCgq
Z3JhcGhpY3NDb250ZXh0LCBkaXJ0eVJlY3QpOwogCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpVcGRhdGUoZGlydHlSZWN0KSwgbV9w
bHVnaW5JbnN0YW5jZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwCmluZGV4IGY3NDI1NTllM2VkMGI1ZjI2ZmIzMDE5NmEyNTFkZGU1ZWNmMjQ2
NzAuLjM5MWVhYzFiNDI3YTBiNWRjM2Y5NTQ0YzljMDljM2JiZWM4NjJlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMTYxLDcgKzE2MSw3
IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBm
cmFtZVZpZXcsIGNvbnN0IEludFJlY3QmIHJlCiAKICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50
QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNl
dFBhaW50QmVoYXZpb3IocGFpbnRCZWhhdmlvcik7Ci0gICAgZnJhbWVWaWV3LT5wYWludENvbnRl
bnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQYWludFNl
bGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXct
PnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBz
aG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAg
ICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICBy
ZXR1cm4gc25hcHNob3QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcAppbmRleCA1MDE5NzcwYTllNDZkMGViZjY1Yzg2ZWI0Yjc2ZTRm
NmMzMmRkZDJlLi42NWZiZTczYjVmZjdiZmJhN2UyMDI0NGY4YjIzYzJhODFiZTJjNzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQz
LDcgKzE0Myw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU6OnJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zIG9wCiAgICAgZnJhbWVWaWV3LT5zZXRQ
YWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwogICAgIG93bmVyRG9jdW1lbnQudXBkYXRlTGF5
b3V0KCk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcGFp
bnRSZWN0KTsKKyAgICBmcmFtZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHBhaW50UmVj
dCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwog
CiAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggOTlmOTEyNzI3ZDM1NzY4MzE2NzUyY2E1NDc3NmVk
YjhmNDUzZTNhNS4uMzNiOTEzYTlmYmQ5NjczOGZhNThjZjc1ZDUwYTE1MTI3NGQwYTUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6ZGVzdHJveSgpCiAgICAgbV90aW1lcnMuY2xlYXIoKTsKIH0KICAgICAKLXZvaWQg
TmV0c2NhcGVQbHVnaW46OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgQVNTRVJUKG1f
aXNTdGFydGVkKTsKICAgICAKQEAgLTc2OCw3ICs3NjgsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBOZXRzY2FwZVBsdWdpbjo6c25hcHNob3QoKQogICAgIC8vIHdoaWNoIHdlIGN1cnJlbnRs
eSBkb24ndCBoYXZlIGluaXRpYXRlZCBpbiB0aGUgcGx1Zy1pbiBwcm9jZXNzLgogICAgIGNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1NjYWxlRmFjdG9yKCksIGNvbnRlbnRzU2NhbGVG
YWN0b3IoKSkpOwogCi0gICAgcGxhdGZvcm1QYWludChjb250ZXh0LmdldCgpLCBJbnRSZWN0KElu
dFBvaW50KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOworICAgIHBsYXRmb3JtUGFpbnQoKmNvbnRl
eHQsIEludFJlY3QoSW50UG9pbnQoKSwgbV9wbHVnaW5TaXplKSwgdHJ1ZSk7CiAKICAgICByZXR1
cm4gYml0bWFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCBlNDY4MTRhNGE4NWUxY2E1
NDQ0ZTkxYzEyNjY2MjQxODFhNjU3MmI5Li4yOWUyMmM5Y2VkNjZlMDdlZmU5NTVhNWYxZmYzODYw
Yjk3N2I1OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBwbGF0Zm9ybUludmFsaWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwogICAgIHZvaWQgcGxhdGZvcm1HZW9tZXRyeURpZENoYW5nZSgpOwogICAgIHZvaWQgcGxh
dGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCk7Ci0gICAgdm9pZCBwbGF0Zm9ybVBhaW50KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwg
Ym9vbCBpc1NuYXBzaG90ID0gZmFsc2UpOworICAgIHZvaWQgcGxhdGZvcm1QYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QsIGJv
b2wgaXNTbmFwc2hvdCA9IGZhbHNlKTsKIAogICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVNb3VzZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKICAgICBib29sIHBsYXRmb3JtSGFuZGxlV2hlZWxF
dmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jik7CkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0ZToK
ICAgICAvLyBQbHVnaW4KICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0
ZXJzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNu
YXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0
Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2Nh
cGVQbHVnaW5NYWMubW0KaW5kZXggODQ4YjMzODJlMDIwZTJjMjJhNDBhYjVjYzkyNmE3MGIyYTMw
OWJkYi4uNmY3NTMxOTFhZjk4ZWRhZTJiZjFiNTI2MmZlYjgyNzRhODI0ZTE2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2Fw
ZVBsdWdpbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tCkBAIC00NDQsOSArNDQ0LDkgQEAgc3RhdGlj
IEV2ZW50TW9kaWZpZXJzIG1vZGlmaWVyc0ZvckV2ZW50KGNvbnN0IFdlYkV2ZW50JiBldmVudCkK
IAogI2VuZGlmCiAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNTbmFwc2hv
dCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCkKIHsKLSAg
ICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7CisgICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCk7CiAKICAgICBzd2l0Y2ggKG1fZXZlbnRNb2RlbCkgewogICAgICAgICBjYXNlIE5Q
RXZlbnRNb2RlbENvY29hOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAppbmRleCBhZGVmNmNiMzY5NjVmODA0MmQwY2MwMmFjMWZjZGE0
N2ZjOTFmMDY4Li40YzUyNTZkNWExY2FjZWYyMjk4NWU1NDZiODE5MWEwNDFmYTY5OGEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTExNSw4ICsxMTUsOCBAQCBwcml2YXRlOgogICAgIC8vIFBsdWdpbiBmdW5jdGlvbnMuCiAg
ICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRp
cnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRl
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgUmVmUHRy
PFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDYxY2Y0ZmVhODFhMWM4
NjE1Y2ZiZmQ4MjNmMGZiMDAwODY0ODZhNWUuLjExMWEyMjVjNzE5NzJjZWMwNWU2YmJjYmZkZjUx
MjhlMWMwNGMyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCkBAIC0xMTExLDkgKzExMTEsOSBAQCB2b2lkIFBERlBsdWdpbjo6
ZGVzdHJveSgpCiAgICAgW21fY29udGVudExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIH0K
IAotdm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCkKK3ZvaWQgUERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4
dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSk7CisgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC51
cGRhdGluZ0NvbnRyb2xUaW50cygpKTsKIAogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIp
CiAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwpAQCAtMTEzMiw3
ICsxMTMyLDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0
KENBTGF5ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICBpZiAobGF5ZXIgPT0gbV9z
Y3JvbGxDb3JuZXJMYXllcikgewogICAgICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QgPSB0
aGlzLT5zY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xh
dGUoLXNjcm9sbENvcm5lclJlY3QueCgpLCAtc2Nyb2xsQ29ybmVyUmVjdC55KCkpOwotICAgICAg
ICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRTY3JvbGxDb3JuZXIoMCwgJmdyYXBoaWNz
Q29udGV4dCwgc2Nyb2xsQ29ybmVyUmVjdCk7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5wYWludFNjcm9sbENvcm5lcihudWxscHRyLCBncmFwaGljc0NvbnRleHQsIHNjcm9sbENv
cm5lclJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTE0Nyw3ICsxMTQ3
LDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5
ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbGJhci0+eCgpLCAtc2Nyb2xsYmFyLT55
KCkpOwotICAgIHNjcm9sbGJhci0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLT5m
cmFtZVJlY3QoKSk7CisgICAgc2Nyb2xsYmFyLT5wYWludChncmFwaGljc0NvbnRleHQsIHNjcm9s
bGJhci0+ZnJhbWVSZWN0KCkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVn
aW46OnNuYXBzaG90KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHAKaW5kZXggZjZkMWMwNTQ3NDQyZjkzY2JhNzdkMGMxMTUwODI0YWZlNWI2MTJlNC4uMTU0
OTNmODZhMTczMGIwNzEzOGQ2YWY0MjQ3YzY0YjRkMjA5YzEyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lk
IFBsdWdpbjo6ZGVzdHJveVBsdWdpbigpCiAgICAgbV9wbHVnaW5Db250cm9sbGVyID0gMDsKIH0K
IAotdm9pZCBQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQqKQordm9p
ZCBQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMTFjZjE0OTEz
OGY4MGFmNDgzZmMwMGMxNmUzMjliZWJjMDNlMGFlOC4uZjI3OWViYmNmNDU3OWE5OWQ2OGYwYTM3
N2UyMThjYTYzYjdiNjhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaApAQCAtMTI2LDEwICsxMjYsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGVsbHMgdGhl
IHBsdWctaW4gdG8gcGFpbnQgaXRzZWxmIGludG8gdGhlIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQu
IFRoZSBwYXNzZWQtaW4gY29udGV4dCBhbmQKICAgICAvLyBkaXJ0eSByZWN0IGFyZSBpbiB3aW5k
b3cgY29vcmRpbmF0ZXMuIFRoZSBjb250ZXh0IGlzIHNhdmVkL3Jlc3RvcmVkIGJ5IHRoZSBjYWxs
ZXIuCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBk
aXJ0eVJlY3QpID0gMDsKIAogICAgIC8vIEludmFsaWRhdGUgbmF0aXZlIHRpbnRhYmxlIGNvbnRy
b2xzLiBUaGUgcGFzc2VkLWluIGNvbnRleHQgaXMgaW4gd2luZG93IGNvb3JkaW5hdGVzLgotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Kik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKTsKIAogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Zy1pbiBzdXBwb3J0
cyBzbmFwc2hvdHRpbmcgb3Igbm90LgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90
dGluZygpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGU3YzUzZDc4YTY5YzYwZGI4MGE4NjY2NGU3N2Y3Njc0
MzBkOTczMjkuLjZkN2I0NmQyYzY4ZmJiY2M0YjU5YmE2NDJjYzcxZDAzYzgwZWNjNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApA
QCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRlc3Ryb3koKQogICAgIG1fY29u
bmVjdGlvbi0+cmVtb3ZlUGx1Z2luUHJveHkodGhpcyk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QpCit2b2lkIFBsdWdpblByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIGlmICghbmVlZHNC
YWNraW5nU3RvcmUoKSB8fCAhbV9iYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKQEAgLTIx
OCw3ICsyMTgsNyBAQCB2b2lkIFBsdWdpblByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZQogICAgICAgICBtX3BsdWdpbkJh
Y2tpbmdTdG9yZUNvbnRhaW5zVmFsaWREYXRhID0gdHJ1ZTsKICAgICB9CiAKLSAgICBtX2JhY2tp
bmdTdG9yZS0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBk
aXJ0eVJlY3QubG9jYXRpb24oKSwgZGlydHlSZWN0KTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+cGFp
bnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGRpcnR5UmVjdC5sb2Nh
dGlvbigpLCBkaXJ0eVJlY3QpOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25z
ZVRvVXBkYXRlKSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRl
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5oCmluZGV4IDljZGZjMTk1MjVhYWI5YjZhMzFkNDUyNmZkNDM2NmNlMmY3NTc5YzIuLjc3
YWQ0ZTY5MDdlZTRlMWY1OTI5NzliMGY0NmQ3OGNjNzIxMzBjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpbml0aWFsaXplU3luY2hyb25vdXNseSgpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggYmFmNTY3MWVjYTY2ZDUxZWRjNjcxODIyNDRkMDA5YzUyYzdi
NWQ1MC4uYzM5NmU4NDg2ZTliNWUxZjVmMjA4Njk5MGNjYWM5M2MxZTMzMmE0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzky
LDEzICs3OTIsMTMgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9p
ZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIC8qZGlydHlSZWN0Ki8pCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLykKIHsKICAgICBpZiAoIW1f
cGx1Z2luIHx8ICFtX2lzSW5pdGlhbGl6ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3Rh
dGUoKSA8IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKSB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlz
YWJsZWQoKSkgeworICAgICAgICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQog
ICAgICAgICAgICAgbV9wbHVnaW4tPnVwZGF0ZUNvbnRyb2xUaW50cyhjb250ZXh0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTgxMCwxNCArODEwLDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVj
dCovKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV90cmFuc2llbnRQYWludGluZ1NuYXBz
aG90KSB7Ci0gICAgICAgIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+cGFpbnQoKmNvbnRl
eHQsIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKSwgbV90cmFu
c2llbnRQYWludGluZ1NuYXBzaG90LT5ib3VuZHMoKSk7CisgICAgICAgIG1fdHJhbnNpZW50UGFp
bnRpbmdTbmFwc2hvdC0+cGFpbnQoY29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBmcmFt
ZVJlY3QoKS5sb2NhdGlvbigpLCBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QtPmJvdW5kcygp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgY29vcmRpbmF0
ZSBzeXN0ZW0gc28gdGhhdCB0aGUgb3JpZ2luIGlzIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2Yg
dGhlIHBsdWctaW4uCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKGZyYW1lUmVjdCgpLmxvY2F0aW9u
KCkueCgpLCBmcmFtZVJlY3QoKS5sb2NhdGlvbigpLnkoKSk7CisgICAgY29udGV4dC50cmFuc2xh
dGUoZnJhbWVSZWN0KCkubG9jYXRpb24oKS54KCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueSgp
KTsKIAogICAgIG1fcGx1Z2luLT5wYWludChjb250ZXh0LCBwYWludFJlY3QpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNTUxMDYw
MjNkZTZkOThjOTEwNmNhZTRjMmJjYmE5MjRhYTMyMGUzNy4uNzhhOGRjYjg4M2YwZDFiYTIyN2Vi
OGY4ZWNjOWRlY2RhMzgxNGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFdlYkNvcmU6OldpZGdldAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb2N1cyhib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5n
ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCAzNDM2MjBiZTg4Y2U5YmRiYzBlODE3NzYyYzk4NDdlYzEwNDU4ZTg3Li5j
NTZiYmJiZTNjZDg1NDdmYjY3ZDc3NzdiOWIwN2MxNjY2YTA1OGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzM0LDcgKzEzMzQsNyBA
QCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3Qp
OwogCi0gICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnBhaW50KCZncmFwaGlj
c0NvbnRleHQsIHJlY3QpOworICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5w
YWludChncmFwaGljc0NvbnRleHQsIHJlY3QpOwogfQogCiBkb3VibGUgV2ViUGFnZTo6dGV4dFpv
b21GYWN0b3IoKSBjb25zdApAQCAtMTc2Myw3ICsxNzYzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFn
ZT4gV2ViUGFnZTo6c25hcHNob3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
U2l6ZSYKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVz
KQogICAgICAgICBjb29yZGluYXRlU3BhY2UgPSBGcmFtZVZpZXc6OlZpZXdDb29yZGluYXRlczsK
IAotICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4
dC5nZXQoKSwgc25hcHNob3RSZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgY29vcmRpbmF0ZVNw
YWNlKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3ND
b250ZXh0LCBzbmFwc2hvdFJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3Bh
Y2UpOwogCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJl
Y3RhbmdsZSkgewogICAgICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWlu
RnJhbWUtPmNvcmVGcmFtZSgpLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKQEAgLTE4
MTksNyArMTgxOSw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9k
ZShXZWJDb3JlOjpOb2RlJiBub2RlLCBTbmFwc2hvdE9wdGlvbnMKICAgICBmcmFtZVZpZXctPnNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBmcmFtZVZpZXct
PnNldE5vZGVUb0RyYXcoJm5vZGUpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9y
U25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6
RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBm
cmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFw
c2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVu
dENvb3JkaW5hdGVzKTsKIAogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihz
YXZlZEJhY2tncm91bmRDb2xvcik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KG51bGxw
dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9G
aW5kQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvRmluZENvbnRyb2xsZXJJT1MubW0KaW5kZXggZjVlODZkZjAxZmRhMTlkMmU2ZTQxZTFmNDA4
YjhkYzMxNWI4YTI4Yy4uYmQyMTU3M2E2NGFhMzNiZjk5MWEwNzE3NWVmNjY3Y2M3YWI3MGFmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29u
dHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L0ZpbmRDb250cm9sbGVySU9TLm1tCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRmluZEluZGljYXRv
ck92ZXJsYXlDbGllbnRJT1M6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGlj
c0NvbnRlCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLW92ZXJsYXlGcmFtZS54KCksIC1vdmVy
bGF5RnJhbWUueSgpKTsKICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Io
UGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQg
fCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAgICAgbV9mcmFt
ZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIG92ZXJsYXlGcmFtZSk7CisgICAgICAg
IG1fZnJhbWUudmlldygpLT5wYWludENvbnRlbnRzKGNvbnRleHQsIG92ZXJsYXlGcmFtZSk7CiAg
ICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3Jt
YWwpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260216</attachid>
            <date>2015-08-28 22:09:01 -0700</date>
            <delta_ts>2015-08-28 22:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828220849.patch</filename>
            <type>text/plain</type>
            <size>733872</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5k
ZXggNGMwZjkyMTRhMTliNjE5YTE2MzVjMjdhYTI5MTY4MGZiODg1NDBiZi4uZTNiZDQ2ZmNlZTNk
YTcwNDc3MWU0NGYyODhkMzEyNWI5NjRmNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKQEAgLTM5LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdSZWN0SW50b0NvbnRleHQoSW50UmVjdCByZWN0LCBGcmFtZVZpZXcq
IHZpZXcsIEdyYXBoaWNzQ29udGV4dCogZ2MpCitzdGF0aWMgdm9pZCBkcmF3UmVjdEludG9Db250
ZXh0KEludFJlY3QgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQmIGdjKQog
ewogICAgIEludFNpemUgb2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgcmVjdC5t
b3ZlKC1vZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQoKSk7CiAgICAgcmVjdCA9IHZpZXct
PmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cocmVjdCk7CiAKLSAgICBnYy0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSkpOworICAgIGdj
LmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpKTsKIAogICAgIHZpZXctPnBhaW50KGdjLCByZWN0KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRS
ZWN0JiBpcikKIAogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKIAotICAgIGRyYXdS
ZWN0SW50b0NvbnRleHQoaXIsIGZyYW1lLT52aWV3KCksICZnYyk7CisgICAgZHJhd1JlY3RJbnRv
Q29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
b250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3
NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzEx
NDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0
aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNj
cm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmll
dzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBp
bnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOworICAgICAgICBwYWludFNj
cm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3Qo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAg
SW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFy
ZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMo
aWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsx
MjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGly
dHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVD
b250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwg
LXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAt
c2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC5j
bGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cg
cGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYm
IChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAg
ICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwogICAgICAgICBJbnRSZWN0IHZp
c2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0
SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50
KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRT
Y3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTks
MTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAg
ICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRo
aXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5n
QXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFu
ZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFh
OGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0
byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVw
IHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2
b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVj
dGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6
ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVk
U2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXgg
YzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJj
N2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQ
cm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
dm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGlu
dHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRl
eHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisg
ICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAg
ICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNl
MGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0
b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3Mg
PSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4x
NmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
IAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYy
YTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSAr
MjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxi
YXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJl
dHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIx
MzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1
MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3
N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4K
ICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJhY2siKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0
LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsK
KyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEp
OwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTks
IDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAg
IG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUu
Y2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBj
b250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFi
NGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1
aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VT
Y2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2Nh
bGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2Yg
dGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAg
V2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBj
b21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNh
biBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAg
dmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFj
dG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0
byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMg
aW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1
ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNk
YjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52
YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIy
OTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRv
Qm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0Jv
eChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJ
bWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNw
ZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9C
b3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwog
ICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7
CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0lt
YWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFu
c2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNj
YWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNs
YXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0K
IAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9p
ZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIC8v
IFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0g
IndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9h
dFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAg
ICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRo
KG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJh
MDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAg
ICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQy
NTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMx
YWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9X
aWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1
Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3
ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAg
aWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1
bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zv
cm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJlM2MwNmJhNC4uMDUwOGQ1NWNlOGM3
NDBmZWU4YTgwNjJlZmYzMjU2NDMyNGNjYTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4K
QEAgLTIwMSwxMiArMjAxLDEyIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkp
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0
NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5OTQ2MzY2OWY0YTEwNGM5NWM5
MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQxLDY4ICs0MSw2OCBAQCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21J
bWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRl
U3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJn
ZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogCiAg
ICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhh
dmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQg
YSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS0+
aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
b3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsK
KyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAgIGlmICh0YXJnZXRTaXpl
ICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHRhcmdldFNp
emUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRTaXplLmhlaWdodCgpIC8gaW1h
Z2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVp
Z2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVT
aXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9w
ZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShj
b250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1f
Y3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNyY1JlY3Qu
eCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RS
ZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxl
cmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdp
dGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgZHJhd0Nyb3NzZmFk
ZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1NmE5ODc1MTRjYjcxYTE3YjRj
NzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRiMzI5ZDYyOGRhZTM3YjZhNWY3
MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdD
cm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZSogbV9mcm9tSW1hZ2U7CiAg
ICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNkYzkyZDExM2ZjMjBhNGY5MTA1
YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9
IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIC8vIERv
bid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFy
ZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNl
JyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZh
bGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHJ1bik7CkBAIC0x
MzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgaWYgKG5l
eHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250
RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJh
d1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0
R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgcmVuZGVyaW5n
Q29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBs
YXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCBmb250RGF0
YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2lu
dCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogCiAg
ICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0g
bmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0ICYm
IGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NW
R0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRy
YXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5l
eHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0
RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICBkcmF3R2x5
cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50LnNldFgobmV4dFgpOwogICAg
IH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAg
cmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZlci5mb250QXQoaSksIGdseXBo
QnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlwaERhdGEgbWFya0dseXBoRGF0
YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrLCBtYXJrR2x5cGhEYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmlu
ZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3NGE4NjIuLjE2NmI5MGU4NzVh
Y2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkgKzEzMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKSBjb25zdDsKIAogICAgIGVu
dW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBV
c2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0g
LTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVu
dHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0
dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8s
IEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMp
IGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0g
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
ICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CkBAIC0yMzgsOCAr
MjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJhd0Nv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzllZWZiMmFjOWY3YWU1NTZlMzc1
YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4NzdlNmRlODllYzQzYTBlNWI4ZTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBlYTNiOGI0MmVlNmQ5ODQxZTUy
OTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5YzU5YTU4YTRmYjIxOGViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
CiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRleHQtPmNsaXAoZGVzdFJlY3Qp
OwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOworICAgIGRlc3RDb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRlc3RSZWN0
LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVzdENvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC0+dHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAg
ICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBkZXN0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCAqbV9ncmFk
aWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92aWRl
IHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKICAgICBtX2dy
YWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKGFkanVzdGVkU2l6ZSwgYWRq
dXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUgZGVzdGluYXRpb24gY29udGV4
dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29sdXRpb24KLSAgICBBZmZpbmVU
cmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91YmxlIHhTY2FsZSA9IGZhYnMoZGVz
dENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2NhbGUgPSBmYWJzKGRlc3RDb250
ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRqdXN0ZWRQYXR0ZXJuQ1RN
ID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBAQCB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVkSW1hZ2VC
dWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0Fs
cGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFn
ZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250
ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNB
bHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAg
ICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFk
anVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNr
KCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAg
IH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7
Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKKyAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNhMGRmNGM0ZWFiMzdhLi42ZWM1
NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBjb25zdCBGbG9hdFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLjMw
MzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UtPmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkBAIC00
MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxv
d1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAgLTY0MCwyMCArNjQwLDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBGbG9hdFNpemUgc2Nh
bGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhT
Y2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhpcywgaGFzQWxwaGEpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCks
IHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0dXJuIHNjYWxlc01hdGNoKGdl
dENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQo
KSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOworICAgIHJldHVybiBz
Y2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVy
YXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9
CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRy
YW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEds
eXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
KyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lk
IGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5z
aWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4
YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBiMzc4MWVjMGE4ZjQzNWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJvKiBjb250ZXh0KTsKICNlbGlm
IFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAKICAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMu
LmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMwMTQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4LDIzICs3OCwyMyBAQCBib29s
IEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxX
aXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0
eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVD
b2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29t
cG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9y
Lmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkg
OiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNl
KTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9y
U3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewogICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICBvbmVU
aWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAKICAgICAvLyBDaGVjayBhbmQg
c2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBjb3ZlciB0aGUgZW50aXJlIGFy
ZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9uZVRpbGVSZWN0LmNvbnRhaW5z
KGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkgeworICAgIGlmIChvbmVU
aWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJhd0x1bWluYW5jZU1hc2soKSkg
ewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0LngoKSkgLyBzY2FsZS53aWR0aCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2Ug
dGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoc2l6
ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS5o
ZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZp
c2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgwKTsKQEAgLTE2
NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0
IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJh
bnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQ
aXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXpl
LmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsK
ICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxz
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7
Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7
CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwog
ICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3
ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uZjY5YTA1OWZhODk1YWM2MjZhYzdiOGJhYjNlNmJhNjRjNWE4NzA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4
NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJl
IHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY0YzY2
Yzc4YzhlY2VhYjFhOGFjOGRiNTNlNzAxYjVlNjg4OTViNzAuLjI3ZjZiMzFmMDM4Y2U1MjQwODNm
ZWY3NjljMGViODJmMWE4MWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtODMyLDEwICs4MzIs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YXMKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFz
c2V0U3RhdHVzTG9hZGVkOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFw
cGVyKSkgewpAQCAtODQ3LDEwICs4NDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXgKICAg
ICBwYWludChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFp
bnQoJXApIiwgdGhpcyk7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsbwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fYXZmV3JhcHBlci0+Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJl
bnRNZWRpYVRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwg
LTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAg
IEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNmNjOWE1NTNmNjM2Nzk2OWE1NGU2
ODBhNWYyMWRlZDlmZWM0MWZhZi4uZTNkYjhkNTBiMzg1YTI5MWI2ODI4ODRmY2IxZTQ2M2EzM2Jk
YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWVk
aWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDlmNTgxZWRmYWQ2OGY4N2MyZDQ1MzUyMmRmMjJlOGU0NjM1M2I3OWUuLmY4
YmFkZGRmNDI4YzhjNjQwYTU4NDk2Nzc0M2VkYjNkZDNkODVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKICAgICB2b2lkIGRl
c3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZUZvclRpbWVJblJlY3QoZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAg
ICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoKTsKICAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpOwotICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDY1ZmI0ZDI5NjMyNDBmZWJjODVmMTc5OTFlNDc3ZDUyZmE0ZTNl
ZjkuLjUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTQ5NCw5ICsxNDk0LDkgQEAgbG9uZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphc3NldEVycm9yQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtl
cnJvciBjb2RlXTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnQKICAgICBtX3ZpZGVvRnJhbWVIYXNEcmF3biA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXF1ZXN0IGlmIHdlIGFyZSBhbHJlYWR5IHJlbmRlcmlu
ZyB0byBhIGxheWVyLgpAQCAtMTUzMSwxOCArMTUzMSwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRgogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdl
R2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgp
LCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBw
YWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAg
ICB9CiB9CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fbGFzdEltYWdlID0gY3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkK
IHsKICNpZiAoIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgIW1fbGFzdEltYWdlICYmICF2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkp
CkBAIC0yMzQxLDEzICsyMzQxLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiBjCiAKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dCglcCkiLCB0aGlzKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdl
dFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5n
ZXQoKSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJs
ZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8v
IElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3Qg
ZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRl
byBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhNTc1MzRmMjU4OTc5NjMzNjZhNTA0N2Y2NTgwZjI3
OTZhYzYwNTYyLi41MzcxZDY2MjdlY2UxNDNkNTk4ZTU0OGE1ZmU5MGIzM2I3M2NhMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggYzgwNWIzYjI0NWUzNzRmNzkxMDVkYWQ4NzU1NWNmYWRhZmM0ZjAzZS4uZDc3
NzgyODI5NWM2MzBhMTk4NGZmZGY5OWE0MjJjNDFjNTBhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtNTI0LDEyICs1MjQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCiAgICAgLy8gTm8tb3Au
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiAgICAgLy8gRklYTUUoMTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJ
WE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggNWFlNWI1NTA5ZWQxZmMwOTk1OGQ1MGYyNmY1N2IwNGE1MzlmZWUwNi4uNWEwMDEy
ZWM5ZGEyOTg5M2JmNTgyYjc4Yzk1MTE1OWEwMjZjNDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IGMyNmIzMzU5NzM0ZDIzNGFmZDc5MjI5MmFmZDkzNTcwNDZlMGU2ODkuLjAxZmYy
MmMwOTlmZGI5YTFkOWRkNzkyNTg1YWJjNWQ4ZjQ5N2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUltYWdlRnJvbVNhbXBsCiAg
ICAgcmV0dXJuIHF1YXJ0ekltYWdlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgLy8gRklYTUUo
MTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRl
eCBmMGQzYTdhNzJkYjkyZmRlMWQxYjVmOTkzOGIzYzBjMWU3YWQ2MWYxLi5mNWUzZGUwZTUzNGIw
MTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRz
dC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKQEAgLTgxLDEzICs4
MSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCiAgICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgaWYgKGZyYW1lT3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3Qu
eSgpKTsKICAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVs
dChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhYTEwYzY1YzU2ODQzZTUwMjgwNjhhMzlh
ODcwMjAyYzdiMTRjY2NlLi5mYzUwMzJiNTQ1YWI0NmI2YzdmMjM0ZmZjMTc4NDUzZWU0ODQyOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250
JiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X3Qgb3JpZ2luYWxUcmFuc2Zvcm07Ci0gICAgZmxvYXQgc3ludGhldGljQm9s
ZE9mZnNldCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBmbG9hdCBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKIAotICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjb250ZXh0LCBmb250
LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgIGNhaXJvX3NldF9zY2FsZWRfZm9u
dChjb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgY2Fpcm9f
c2hvd19nbHlwaHMoY29udGV4dCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpIHsKQEAgLTY2LDIxICs2NiwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyRwogICAgICAgICBjYWlyb19zZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9y
bSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBpbnQgbnVtR2x5cGhzKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVy
JiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KTsKIAotICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisgICAg
aWYgKCEoZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8
fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0Lm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8g
T3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0
IHRoZSBTaGFkb3dCbHVyLgotICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGdyYXBoaWNz
Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQpOworICAgICAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0KGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CiAgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFw
aGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
ICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUds
eXBocyk7CiAKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0KTsKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiAKICAgICBjYWlyb190ZXh0X2V4dGVu
dHNfdCBleHRlbnRzOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCksIGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRS
ZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54KCkgKyBleHRlbnRzLnhfYmVhcmluZywgcG9pbnQu
eSgpICsgZXh0ZW50cy55X2JlYXJpbmcsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
IAogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5T
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkpIHsKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0
X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0x
MTIsMTQgKzExMiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQg
Kz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQs
IHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dC0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRD
YWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1Rv
Q29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6
ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9r
ZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIg
dGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8
IDIgKiBvZmZzZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBj
b250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAq
IG9mZnNldCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhj
b250ZXh0LnN0YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4
dC5zdHJva2VUaGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUg
Q1RNLCBidXQgd2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgot
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBn
bHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCA2Nzg0MGM1ZTk0ZmZmZmUzZjIzNmYwYjgxMjJh
MjIwMWViYWU1M2VkLi40ZmVjMWFhZWIyZWQ5ZDRiNzZlOTM0MzkyZjRlMzJhODYxOWFlOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtNTIsNyArNTIsNyBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGludCwgaQogICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMg
KyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250
ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyog
bWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBp
bnQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1
biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjhjN2M5NjBmZDlmOWRmNTEzNWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uMmVjMGZiOTlk
YzQ5Y2ZjYzQ1MGI1ZTlkNmE3NWI4MjQzZTFhN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAgICAg
RmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhd2luZ1N0eWxlKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7Ci0gICAg
U2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKTsKKyAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBv
ZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250
ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2Fpcm9fcGF0aF90LCB2b2lkKCopKGNhaXJvX3BhdGhfdCopPiBwYXRoKGNhaXJvX2NvcHlf
cGF0aChjYWlyb0NvbnRleHQpLCBbXShjYWlyb19wYXRoX3QqIHBhdGgpIHsKICAgICAgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KHBhdGgpOwogICAgIH0pOwpAQCAtMTI5LDE0ICsxMjksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGF0aERyYXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgRmlsbCkgewogICAg
ICAgICBjYWlyb19zYXZlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0
ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3Rh
dGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CiAgICAgICAgIGNhaXJv
X2ZpbGwoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2UpIHsK
ICAgICAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9TaGFkb3dDb250ZXh0LCBwYXRoLmdldCgp
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JT
dHJva2luZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVz
ZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBy
ZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpE
b05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKQEAgLTE0OSwyOCArMTQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICBj
YWlyb19maWxsKGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0
LCBGaWxsKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aChjb250ZXh0KTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIFN0cm9rZSk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTdHJva2luZyhjb250ZXh0LT5zdGF0ZSgpKTsKLSAgICBjYWlyb19zdHJva2UoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCktPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCkpOworICAgIGNhaXJvX3N0cm9r
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCogY3IpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCh0aGlzKTsKKyAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0
aCgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLT5jb250ZXh0KCkpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC00NTAsNyArNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LCBjb2xvcik7CiB9CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwg
d2lkdGgpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAg
c2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiB9CiAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dC
bHVyKCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0KTsKQEAg
LTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBz
ZXRQYXRoT25DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7Cisg
ICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQxNWY5ZGM3OWZkYmY5NDAxNTMxYWRiY2Fk
Y2Q5YTI2ZTE3MjVkNTYuLmMyMGY5MmQxYmE2MDdlMTYzZGM0YTllNDA0M2FiN2E5Yjg0MzhjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuICpt
X2RhdGEubV9jb250ZXh0OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0xNjAsMjAgKzE2MCwyMCBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBtYXNrUmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zdAogewotICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIG1hc2tSZWN0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQogewotICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRl
eHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiwgQ29vcmRpbmF0ZVMKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFh
NDQ5MTg2N2JjMGQ5MWQ5YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2
YWM2ZjBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDU5OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEw
ZTdmZjg3M2JjYjM1YzMwNTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
blRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNv
bgogICAgICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWly
bzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1
cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGgg
c21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVm
IHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7
IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNh
aXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hh
ZG93KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIHBhdHRlcm4uZ2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5oCmluZGV4IDkzNTVlMTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEz
MDUyY2QyZDhkY2VlNzUxYWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEo
KSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIz
ZjIxZWY3NzAwZWU2ZDUwNmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVj
NTExY2NjMjIwYzQ3MjgwODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAg
IHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZy
YW1lKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9u
UmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRD
VE0oY3R4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1
ZGM1MzBhMjhiN2JhYjkuLjk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52
YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMg
fHwgaW1hZ2VXaWR0aCA8PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0g
MCB8fCBjYW52YXNIZWlnaHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxz
IHx8IGltYWdlV2lkdGggPD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9
IDAgfHwgY2FudmFzSGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0
ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKIAotICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNp
Z25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGlt
YWdlSGVpZ2h0LCByb3dCeXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSAr
NTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21w
bGV0ZWx5IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyBy
ZXN1bHRzLgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKLSAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0
Mzg2MzVhYTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4
ZmE0NjM2NWJlNDljMjY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygq
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCByZWN0KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJl
Y3QoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGJiOWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEw
OTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
NDMsOSArMTQzLDkgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgp
KTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAg
IGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgY29udGV4dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAog
ICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgp
OworICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CkBAIC0yMTAsMTMgKzIxMCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9k
YXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzEsMjkgKzIzMSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVy
biBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNj
YWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4
dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBv
dXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAK
LSAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
eworICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwog
ICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9
IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6
ZSwgaW50ZXJuYWxTaXplKCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4Mywz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUo
KSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewot
ICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAog
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSks
IHNvdXJjZUNvcHktPmludGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBz
b3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+
aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29u
dGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250
ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVT
eXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUx
MDMxYTIxNTcwZTVhYTMyMGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBk
OTdmYzYzNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBA
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjdHh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZv
cm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0
eHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5m
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1
ZSBpZiBzaXplIGlzIGF2YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1
bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25z
dAogewogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1l
bnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2Uo
ZGVjb21wb3NlZFRyYW5zZm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm07CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERl
Y29tcG9zZWRUcmFuc2Zvcm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3Jt
Q29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNj
YWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2Fs
ZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUs
MTIgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2Nh
bGUpOwotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNyY1JlY3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xp
ZW50cyB1c2UgbG93LXF1YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRo
cm93cyBvZmYgdGhpcyBvcHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlt
YWdlLCByZXVzZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlm
IGNhY2hlIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hl
biB3ZSBkbyB0aGUgc3Vic2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBjb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJl
cGFpbnRJZk5lY2Vzc2FyeSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25O
b25lICYmIGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYK
IAogICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNo
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxv
YXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKIAogICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwogCi0gICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUg
PSBkc3RSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsK
IApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBA
IC0yNDQsMjYgKzI0MCwyNiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3Vt
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3Jl
ZXMpCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0
KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXpl
LndpZHRoKCksIDApOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwogCi0gICAgY29udGV4dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3Rh
dGlvbkRlZ3JlZXMpKSk7CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwog
CiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERy
YXdQREZQYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSkpOwogfQogCiAjZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKaW5kZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkw
MC4uMjE3YWNkMGVkYjI2NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KTsKKyAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
IAogI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5
YjkxNTkwMjM4MTgzOGU5Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRi
MmU5ZGNhNDFjMDc3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0
dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBo
cywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hv
d0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBn
bHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFC
TEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRh
KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0
Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0
ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAt
MTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCog
Zm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3Qg
Q0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBh
ZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBm
b250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBv
c2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgp
KQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQp
KTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBv
aW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNl
bGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1Bv
aW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBs
eUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwog
ICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENH
UG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRy
YW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0
aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9
CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
aW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBj
b25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQt
PnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJv
b2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9v
dGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7Cisg
ICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8g
c3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewot
ICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRz
ID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBt
YXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnBy
ZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250
ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkg
KzMzOSw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250
ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKCkpOwogI2Vsc2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwg
W2RyYXdGb250IHJlbmRlcmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CisgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9u
dCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7
CiAjZW5kaWYKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0
YS5zaXplKCkpOwogCkBAIC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3Qg
RwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2Ug
PSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwor
ICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0g
PSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYg
IWNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAg
ICBGbG9hdFNpemUgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RN
Lm1hcFNpemUoRmxvYXRTaXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRM
ZW5ndGhJbkRldmljZVBpeGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4
ZWxzLndpZHRoKCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsg
aG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5p
dFNpemVJbkRldmljZVBpeGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBo
b3Jpem9udGFsVW5pdExlbmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JC
aXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29u
dGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5p
c0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxw
aGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFk
b3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUg
WSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250
ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAg
IGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93
VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlw
aHMpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9p
bnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRp
Y19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5
cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyAr
NjYwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZv
ciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3
OCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBm
bG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNw
cAppbmRleCAxNDRjNmE1MjBlNGM1ZGFkNzU0NDcyNTg4YWJmOTRmMDgyNGE3YWViLi5hZmNmNzU5
NzI3OTM3ZmRjNmFjNzM3NmYwNDkwNWY4ZmQyOThkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1h
Z2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7
CiAKICAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBjMTRmNjBm
YzY2OWJlNDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlhZTBiMmJmMjk2
YTBmYTc0ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCB2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
ID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0g
aW4yLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKICAgICBBU1NF
UlQoaW1hZ2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBv
c2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAppbmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMxOWM2Li44NzY2
YWVjYjIyMzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRS
ZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAz
NmJlZmU3YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4NzEzOGZiZGYz
ZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEsOCArMjgxLDgg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFw
cGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50
UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRl
UGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAg
ICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFk
anVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0
ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAppbmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2OTZmLi42MzNl
YmM2NjBiMWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CkBAIC04OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZl
cigpOwogICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiByZXN1
bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQocmVzdWx0Q29u
dGV4dCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsKLSAg
ICByZXN1bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRDb250ZXh0LT5z
ZXRBbHBoYSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJh
ZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIApAQCAt
MTA1LDExICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1Bp
eGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgp
LCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKLSAgICByZXN1
bHRDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAg
IHJlc3VsdENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAK
IHZvaWQgRkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZk
OGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2NzAyMjZkMDE4
YWIyMzcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgp
KTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMjZi
OTMyYWNmZjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUzODVhZTQyMzBi
YTNjOTE4ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTAgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9
IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFhNGUyZjllLi5m
ZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIo
KTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1f
ZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhk
MzE3MmQ5ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2ZWNmOTMxYWVh
NWY4MDlkYmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBG
RVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRp
bGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5N
YXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGls
ZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgp
OworICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngo
KSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGls
ZUltYWdlQ29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZl
Y3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRp
b24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0
ZXJuVHJhbnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKFdU
Rjo6bW92ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZp
bHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0
ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNjLi5iYTE0NzEy
YTNjZjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC00NjYsNyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29udGV4dCgp
KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi43MGIx
ZDU1NjRmNmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApA
QCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VC
dWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0
ZXJDb250ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKKyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKaW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2UxN2UyMy4uMzE5
OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdl
QnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2lu
dCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIu
c291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZv
aWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNjRhMjNkMWYyZDkzYWJmZTdjYzJkYWE4
NzY1MWY4NTQ2NjNmNDVmYy4uZTVmMjg2YTU0MzBjODE0NjEyYWM5NzAyZjRlNThkN2E3ZjUxMjQw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcApAQCAtNTAyLDE0ICs1MDIsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgbV9zaXplID0gc2l6
ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3BsYXllci0+dmlzaWJsZSgpKQpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+
aW1hZ2UoKS5nZXQoKSksIENvbG9yU3BhY2VTUkdCLAorICAgIGNvbnRleHQuZHJhd0ltYWdlKHJl
aW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSksIENvbG9yU3Bh
Y2VTUkdCLAogICAgICAgICByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCBDb21wb3NpdGVDb3B5KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKaW5kZXggMzEzNTczM2QxYjE5OGU2NWFmNWIzODI0ZTVjMmQ4NjcxZmI2ZjJkOS4uZDJmODhl
ODc1NGM1NmQ5MDM2YTQ3MmRlM2Y2NWJjNDlmYTJkN2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHRyaWdnZXJSZXBhaW50
KEdzdFNhbXBsZSopOwotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25z
dCB7IHJldHVybiAwLjA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCmluZGV4IDAyYzQ4ZDhmYjM2NjVm
OGNhZTI0OGJkMmFiNzZmNzE4MTg3NGI5MTIuLmFjZTE5MDU0YjlkYTUxMGE3MTkxZDAwYjRlNWJm
NmIyZGRjZDc4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBmbG9hdCB3CiAKICAgICAvLyBEcmF3IHVuZGVybGluZS4KICNpZiAhUExB
VEZPUk0oSU9TKQotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
dGhpcyk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgqdGhp
cyk7CiAgICAgTlNHcmFwaGljc0NvbnRleHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IChDR0Nv
bnRleHRSZWYpW2N1cnJlbnRDb250ZXh0IGdyYXBoaWNzUG9ydF07CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQppbmRleCBmZDEzYWJm
YjY4MmUyMWJiOWEwOGE4ZjY0ZmJlOWUwMTRiMmY1N2YzLi5mNDEwMjdmNTJlYjhmYjk5ZWRmMjJj
NjdmMDFiMGQ4YzMyNTFlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSWNvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSWNvbk1hYy5tbQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEljb246OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudEdDKCZjb250ZXh0KTsKKyAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CiAKICAgICBb
bV9uc0ltYWdlIGRyYXdJblJlY3Q6cmVjdCBmcm9tUmVjdDpOU01ha2VSZWN0KDAsIDAsIFttX25z
SW1hZ2Ugc2l6ZV0ud2lkdGgsIFttX25zSW1hZ2Ugc2l6ZV0uaGVpZ2h0KSBvcGVyYXRpb246TlND
b21wb3NpdGVTb3VyY2VPdmVyIGZyYWN0aW9uOjEuMGZdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaAppbmRleCAwMWU4NmYxY2M5MmE1Zjk2NzBjMmJjODBjYzk5YjIyNzNhMTU2MWU4Li4x
OTZkZWNjNjQ0N2JiMTQwZGQ4ZGNjMDk5YWEzODUwZDhjOWRmOWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQuaApAQCAtMTI3LDggKzEyNyw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGE3YTIxMzdkYzAzMzg2YzQ1OGY1NjVkOWMz
MjVhMTJjNmM2MTA5OTQuLmE0YzAwYjc3MWY1ODdiMjFjYjEzMjFmMmI1ZmI1MzUwN2UwNjk1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTExODQsNyArMTE4NCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlcGFpbnQoKQogICAgIG1fcGxheWVyLT5yZXBh
aW50KCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7CiAgICAg
aWQgcXRWaWRlb1JlbmRlcmVyID0gbV9xdFZpZGVvUmVuZGVyZXIuZ2V0KCk7CiAgICAgaWYgKCFx
dFZpZGVvUmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmlu
Z01vdmllTGF5ZXIpIHsKQEAgLTExOTcsOSArMTE5Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4CiAgICAgcGFpbnQoY29udGV4dCwgcik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQorICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQogICAgICAgICByZXR1
cm47CiAgICAgaWQgcXRWaWRlb1JlbmRlcmVyID0gbV9xdFZpZGVvUmVuZGVyZXIuZ2V0KCk7CiAg
ICAgaWYgKCFxdFZpZGVvUmVuZGVyZXIpCkBAIC0xMjExLDEyICsxMjExLDEyIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByCiAgICAgRmxvYXRTaXplIHNjYWxlRmFjdG9yKDEuMGYsIC0xLjBmKTsK
ICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0KEZsb2F0UG9pbnQoKSwgci5zaXplKCkpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250
ZXh0LT50cmFuc2xhdGUoci54KCksIHIueSgpICsgci5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC0+
c2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHIueCgpLCByLnkoKSAr
IHIuaGVpZ2h0KCkpOworICAgIGNvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGNvbnRl
eHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKIAotICAg
IG5ld0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBo
aWNzUG9ydDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOk5PXTsKKyAgICBuZXdD
b250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1Bv
cnQ6Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOk5PXTsKIAogICAgIFtOU0dyYXBo
aWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNl
dEN1cnJlbnRDb250ZXh0Om5ld0NvbnRleHRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCAw
ZGNmNmMxY2E5Y2ZmZDJkMjNkNmY0OGM1YzkxNjQzZTFjMTAwNWI3Li5iZmFhZmE5MzU3MDAwN2Q1
ZmRjMjM1M2IwMWIyNGQxNDQ1MzFhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNjks
MTkgKzY5LDE5IEBAIHVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07CiB9CiAKLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQREZE
b2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudENvbnRleHQoY29udGV4
dCk7CiAKICAgICAvLyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQgYnkgUERGS2l0IGJ1dCBh
cmUgbm90IHNhdmVkCiAgICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0ZSBzdGFjay4gKDxyZGFy
Oi8vcHJvYmxlbS8xNDk1MTc1OT4pCi0gICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRl
eHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAg
ICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9u
dFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBi
b29sIGFsbG93c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXph
dGlvbiA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIFtbbV9kb2N1bWVudCBwYWdlQXRJbmRleDowXSBk
cmF3V2l0aEJveDprUERGRGlzcGxheUJveENyb3BCb3hdOwogCi0gICAgQ0dDb250ZXh0U2V0QWxs
b3dzRm9udFNtb290aGluZyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21vb3Ro
aW5nKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uKTsKKyAg
ICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIGFsbG93c1Ntb290aGluZyk7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVh
bnRpemF0aW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggZjM0MmFkOTU0ZjA2MjQxMTRlN2FiZTEzNzQ1ZDVmYzU0YzIwZjc1
ZS4uYjZlZmE0MWI2ZmYwNmQ1MDI0MTY0NWM1YmFkYmQzZGM2OGI3N2I0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNjksOCArMTY5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgp
LCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgaW1h
Z2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNp
emUoKS5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAjZWxzZQotICAgIHBhaW50
VG9DYW52YXMocGl4ZWxzLmdldCgpLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGlt
YWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBt
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXpl
KCkud2lkdGgoKSwgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmhlaWdodCgpLCBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDZjMDgyNTgyOTA5NWRiNzlmYTU0OGI2ZTdj
YjM3NjZiNDNjOTAzZjMuLjY4Y2UzMTNlMWYwZjc0N2VhY2ZmNmRhYTk2MGJmMDQ4MGVkNmYyZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCB2b2lkIEJpdG1hcFRleHR1
cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNz
TGF5ZXIqCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBjb250
ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRl
eHR1cmVNYXBwZXItPnRleHREcmF3aW5nTW9kZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KCkpOworICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRleHRE
cmF3aW5nTW9kZSgpKTsKIAogICAgIEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsKICAg
ICBzb3VyY2VSZWN0LnNldExvY2F0aW9uKG9mZnNldCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRl
KC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7Ci0gICAgc291cmNlTGF5ZXItPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBzb3VyY2VSZWN0KTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtb2Zmc2V0LngoKSwgLW9mZnNldC55KCkpOworICAgIHNvdXJjZUxheWVyLT5wYWludEdy
YXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBzb3VyY2VSZWN0KTsKIAogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIWltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBjNDkwYjExMTYxZmQ4ZTI3MjNhYTk2NjJkMWI1
MDAzOTQ2MzE2NjhiLi5hMjdhMmVmNmZlY2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcApAQCAtMTI3LDI1ICsxMjcsMjUgQEAgc3RhdGljIENHUGF0aFJlZiBjcmVhdGVQYXRoRm9y
R2x5cGgoSERDIGhkYywgR2x5cGggZ2x5cGgpCiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLXZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKICAgICBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7
Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKICAgICBib29sIHNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBXZWJD
b3JlU2hvdWxkVXNlRm9udFNtb290aGluZygpOwogCiAgICAgc3dpdGNoKGZvbnREZXNjcmlwdGlv
bigpLmZvbnRTbW9vdGhpbmcoKSkgewogICAgIGNhc2UgQW50aWFsaWFzZWQ6IHsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFVzZUZv
bnRTbW9vdGhpbmcgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3Vi
cGl4ZWxBbnRpYWxpYXNlZDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFu
dGlhbGlhcyh0cnVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlh
cyh0cnVlKTsKICAgICAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5vU21vb3RoaW5nOiB7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFVzZUZvbnRTbW9v
dGhpbmcgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAKICAgICB1aW50MzJfdCBvbGRGb250U21vb3RoaW5n
U3R5bGUgPSB3a1NldEZvbnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIHNob3VsZFVzZUZvbnRT
bW9vdGhpbmcpOwogCi0gICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0g
Zm9udC0+cGxhdGZvcm1EYXRhKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKIAogICAgIENHQ29udGV4dFNldEZvbnQoY2dD
b250ZXh0LCBwbGF0Zm9ybURhdGEuY2dGb250KCkpOwogCkBAIC0xNzgsNDMgKzE3OCw0MyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGb250KiBmb250LAogICAgIEZsb2F0U2l6ZSB0cmFuc2xhdGlvbiA9IGdseXBo
QnVmZmVyLm9mZnNldEF0KGZyb20pOwogCiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250
ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsKLSAgICB3a1NldENHQ29udGV4dEZvbnRSZW5kZXJp
bmdTdHlsZShjZ0NvbnRleHQsIGZvbnQtPmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC0+cGxh
dGZvcm1EYXRhKCkudXNlR0RJKCkpOworICAgIHdrU2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0
eWxlKGNnQ29udGV4dCwgZm9udC5pc1N5c3RlbUZvbnQoKSwgZmFsc2UsIGZvbnQucGxhdGZvcm1E
YXRhKCkudXNlR0RJKCkpOwogCiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9h
dCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ugc2hh
ZG93Q29sb3JTcGFjZTsKLSAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBncmFw
aGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFw
aGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dD
b2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQtPnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hh
ZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cp
IHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2Yg
cmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFz
aW5nLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgICAgIENv
bG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNwYWNl
KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOworICAgICAgICBDb2xv
ciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yKCk7CisgICAgICAgIENvbG9y
U3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsK
ICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dD
b2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBm
aWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Rmls
bENvbG9yKHNoYWRvd0ZpbGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNl
KTsKICAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53
aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJl
IGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3Jk
aW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAgIGZsb2F0IHNoYWRv
d1RleHRZID0gcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQu
aGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8g
LTEgOiAxKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xh
dGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CiAgICAgICAgIENHQ29udGV4dFNl
dFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSk7CiAgICAg
ICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZl
ci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFk
dmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICAgICAgaWYgKGZvbnQtPnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSkgewotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29u
dGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0
aCgpICsgZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlv
bi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CisgICAgICAgIGlmIChmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKSkgeworICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0
aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09m
ZnNldC53aWR0aCgpICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgICAg
IENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgfQotICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKICAg
ICB9CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkg
KyB0cmFuc2xhdGlvbi53aWR0aCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSk7
CiAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVm
ZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgIGlmIChmb250LT5zeW50aGV0aWNCb2xk
T2Zmc2V0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwg
cG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkpOworICAgIGlmIChmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKSkgeworICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24o
Y2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgZm9udC5zeW50aGV0
aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVy
LmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2
YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFk
b3cpCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHNoYWRvd0NvbG9yU3BhY2UpOwogCiAgICAgd2tSZXN0b3JlRm9udFNtb290aGluZ1N0eWxlKGNn
Q29udGV4dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAppbmRleCAzYTBjYjMwYmU3NmMwY2U3
NDFjNTRmZWNhZGM3YzQ4ZWEzOWNkZWUzLi5kYjk2M2MyZjY0MGJkZmE0YTNhNjQ4NTQ0OGE0OWEw
YzlmNThjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRXaW4uY3BwCkBAIC05MSw3ICs5MSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlw
aHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZyCiAg
ICAgcmV0dXJuIGJlZm9yZVdpZHRoOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0IEZvbnRD
YXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMgKyBhZHZh
bmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1
ZmZlcjsKQEAgLTEwOCw3ICsxMDgsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJl
dHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRy
YXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIg
Z2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZh
bmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1w
aGFzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25X
aW4uY3BwCmluZGV4IGVlODhlMjA1YmMxMzdlNTYyMDA0MGMwYzFmZmJkZjkwOGE0ZWZhMmYuLmE3
ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2YTVjNzkzODhjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcikKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93Q29udGV4dCgmY29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChyKSk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dDb250
ZXh0KGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocikpOwogICAgIERyYXdJY29uRXgod2luZG93
Q29udGV4dC5oZGMoKSwgci54KCksIHIueSgpLCBtX2hJY29uLCByLndpZHRoKCksIHIuaGVpZ2h0
KCksIDAsIDAsIERJX05PUk1BTCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3MjNlYWRiZmQ1ZGMyMTVmMzMw
M2RlMDNjMzU4ZWJhOGE2OTA0MTI0Li4wODM0NzA3ZGE5YmFmNzExY2JmNzI4MTczNmYyNTIyZjdm
MTFhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC03Niw5ICs3Niw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAg
ICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZv
LmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwog
ICAgIGVsc2UKLSAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZv
LmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdp
ZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBA
IC04Niw3ICs4Niw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3ApCiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggNGZkNjM5
NGJjZDk4ODUzODVlNGMxZjVhMGFmYTNiNjRlNmE4NjQ5ZC4uYzc0MDM0N2JhMWJiNzc2Y2M0N2Ey
ODkzZGRmYTI3ZDgxNTU0MzVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtNzksNyArNzksNyBAQCBib29s
IEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXpl
KiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7
CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcElu
Zm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCiAgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIApAQCAtODksNyArODksNyBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFt
ZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xv
Y2FsV2luZG93c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKaW5kZXggY2Y1MWIwMDgxMDg4NTlmMDMxNTdhY2IyZWE2
NjNjZmQ5MGVmMWJiMS4uM2FkZGMxNDRmYzcxZjc2MjQwYWY5OTY5NGZmMDVlMDY5ZDIxYjQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2lu
ZG93c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TG9jYWxXaW5kb3dzQ29udGV4dC5oCkBAIC0zNCwyNCArMzQsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTG9jYWxXaW5kb3dzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTG9jYWxXaW5kb3dzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9jYWxXaW5kb3dzQ29udGV4
dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwg
Ym9vbCBzdXBwb3J0QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0gdHJ1
ZSkKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gdHJ1ZSwg
Ym9vbCBtYXlDcmVhdGVCaXRtYXAgPSB0cnVlKQogICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0
KGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAgICAgICAgLCBtX3N1
cHBvcnRBbHBoYUJsZW5kKHN1cHBvcnRBbHBoYUJsZW5kKQogICAgICAgICAsIG1fbWF5Q3JlYXRl
Qml0bWFwKG1heUNyZWF0ZUJpdG1hcCkKICAgICB7Ci0gICAgICAgIG1faGRjID0gbV9ncmFwaGlj
c0NvbnRleHQtPmdldFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwg
bV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2hkYyA9IG1fZ3JhcGhpY3NDb250ZXh0Lmdl
dFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVC
aXRtYXApOwogICAgIH0KIAogICAgIH5Mb2NhbFdpbmRvd3NDb250ZXh0KCkKICAgICB7Ci0gICAg
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVj
dCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2dy
YXBoaWNzQ29udGV4dC5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVjdCwgbV9zdXBw
b3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOwogICAgIH0KIAogICAgIEhEQyBoZGMo
KSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4
dCogbV9ncmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29u
dGV4dDsKICAgICBIREMgbV9oZGM7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiAgICAgYm9vbCBtX3N1
cHBvcnRBbHBoYUJsZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNw
cAppbmRleCBhN2JhNDJhMmViM2UzOWU0Mjc2NTVhNDg4MzIwYzNkYzBmMmQ3NzAyLi4yZWUzMTgy
MGNlYTBhNGRkMGYxZmU3Y2E5OGY3MjQ3MWRhMGM2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFdpZGdldDo6aGlk
ZSgpCiAgICAgICAgIGd0a193aWRnZXRfaGlkZShwbGF0Zm9ybVdpZGdldCgpKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCBhOGRmY2MzMjFiYWRm
ZWQyNzEwZmVlYzUwOGQyN2NjMTNhODEzMWNhLi4wZTM2NWVmMDg4NGFkMmM4YTZkNjcyNWY3NGM3
NTg3OGM1OTAwMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0K
QEAgLTE0MSwxNCArMTQxLDE0IEBAIE5TVmlldyogV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25z
dAogICAgIHJldHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgcCwgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBpZiAocC0+cGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIE5TVmlldyAqdmlldyA9IGdldE91dGVyVmlldygpOwogCi0gICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dD
b250ZXh0KTsKIAogICAgIE5TUmVjdCB2aWV3RnJhbWUgPSBbdmlldyBmcmFtZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCBiNTA1ZmMxMzhkNTgx
YTdhNDFmMWJlYTYzZmNlNTI2ZTg1NDYxZmRiLi41ZmIwNTJkNDU2N2RhMDBiZDgyZGUyMWM5YWQ2
OTAxMDU1ZDVkOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChOU1N0cmlu
ZyAqc3RyaW5nLCBOU1BvaW50IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgogICAgICAg
ICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNw
YWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwg
Z3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIAotICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250
ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICog
cG9pbnQueSkpKSk7CisgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4
dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBv
aW50LnkpKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFmbGlwcGVkKQogICAgICAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggNThiNjQ3MmNmMmUwN2M2YjkwODA0MDI4N2ViNjJjNWE5MDI3ZWYwMS4uNDhmZWIyZWE0ZDE5
ZDQwYTA5NWM5ZGZlZDViOTc2MmJhYzg2NzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaApAQCAtMjks
MTEgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dChHcmFwaGljc0NvbnRleHQmKTsKICAgICB+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0KCk7CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCgpOwogcHJpdmF0ZToKLSAgICBHcmFw
aGljc0NvbnRleHQqIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0OwogICAgIE5TR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVk
TlNHcmFwaGljc0NvbnRleHQ7CiAgICAgYm9vbCBtX2RpZFNldEdyYXBoaWNzQ29udGV4dDsKIH07
CkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6CiBjbGFzcyBDb250ZXh0Q29udGFpbmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZXh0Q29udGFpbmVyKTsKIHB1YmxpYzoKLSAgICBD
b250ZXh0Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQotICAgICAg
ICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkp
CisgICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkK
KyAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250
ZXh0KCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KaW5kZXggMjYzMmY2NjQz
YmZlMGY2OWEzNDI3MTE2Zjg3ODExYWI1ZDllMGNkZS4uMTM5ZGQ2NjViYzFiZWIxMGI3NWE0ZTQz
ZWNmZDdmNzIwNzE4MTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCkBAIC0yNCwxMSArMjQsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCkKLSAgICA6IG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KGZhbHNlKQorTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgOiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0KGdyYXBo
aWNzQ29udGV4dCkKKyAgICAsIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KGZhbHNlKQogewotICAg
IG1fc2F2ZWRHcmFwaGljc0NvbnRleHQgPSBncmFwaGljc0NvbnRleHQ7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKIAogICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0NvbnRleHQoKTsKICAgICBpZiAoY2dDb250ZXh0
ID09IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pIHsK
QEAgLTQ5LDEyICs0OSwxMiBAQCBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6On5Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoKQogICAgICAgICBbbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0
IHJlbGVhc2VdOwogICAgIH0KIAotICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKIH0KIAogQ0dDb250ZXh0
UmVmIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6Y2dDb250ZXh0KCkKIHsKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gbV9zYXZlZEdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRHcmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgcmV0dXJuIGNnQ29udGV4dDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDc3
ZjJkODA4Y2M2NDg1NzExYjFhOTJlYzhmOGJjYjk3YzM4YzY4NjYuLmMzMzc2NWZjMjVkMGRjM2Jh
NWYxZjJlNTU5OTllYThjNzUyOGFiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTUxMyw3ICs1MTMsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjbwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAgICAgICAgIGNvbnRleHQuY2xpcChkYW1hZ2VSZWN0KTsKICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xsYmFyLmZy
YW1lUmVjdCgpLnkoKSk7Ci0gICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQoJmNvbnRleHQpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgICAgICBzY3JvbGxiYXJQYWludGVyUGFpbnQoc2Ny
b2xsYmFyTWFwKCktPmdldCgmc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xsYmFyLmVuYWJsZWQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCmluZGV4IGY4ZWUx
NmViOWVhMTIxNDNiMjEyNWYwOGFmZDYzNjA2Y2M4NDE3MTIuLjNiYWRlN2E2NmUwOWQ3OTYzNjgx
MTNlNDQ2NzllMDgyZjdmODQzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNvbnRy
b2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENv
bnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVy
IHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1lTWFjLgogICAg
IHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3Rh
dGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxs
ICovLCBib29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8s
IGZsb2F0IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKKyAgICBzdGF0aWMgYm9vbCBkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxsICovLCBi
b29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8sIGZsb2F0
IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA1MWNmZDBkZTNhM2I1
OWZlNDk3ZTk2YTAwOGJhOGNlOGJmZjk4ZjA4Li4xYmQ1MDlmNTcwYzg0MTYxMDMwYzg1Mzc4OTVk
N2UzNmVhMTU2YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpj
ZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRv
blR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3Jv
bGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNj
YWxlRmFjdG9yKQorc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0
dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNj
cm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdl
U2NhbGVGYWN0b3IpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTQw
MCw3ICs0MDAsNyBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBi
dXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIH0KICAgICBjb250cm9s
U3RhdGVzLnNldERpcnR5KGZhbHNlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFt0b2dn
bGVCdXR0b25DZWxsIGNvbnRyb2xTaXplXTsKICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBidXR0
b25UeXBlID09IENoZWNrYm94UGFydCA/IGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV0gOiBy
YWRpb1NpemVzKClbY29udHJvbFNpemVdOwpAQCAtNDEyLDkgKzQxMiw5IEBAIHN0YXRpYyB2b2lk
IHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMm
IGNvbnRyb2xTdGF0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICBpbmZs
YXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAg
ICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29t
RmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGlu
ZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZh
Y3Rvciwgem9vbUZhY3RvcikpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVk
UmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
aW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAK
ICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwpA
QCAtNDMxLDExICs0MzEsMTEgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJv
bFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKIAogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgaWYgKFt0b2dnbGVCdXR0
b25DZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddKSB7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5z
bGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgw
LCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoaW5m
bGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbmZsYXRl
ZFJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgIFt0b2dnbGVCdXR0b25DZWxsIF9yZW5kZXJDdXJy
ZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgYXRM
b2NhdGlvbjpOU01ha2VQb2ludCgwLCAwKV07CisgICAgICAgIFt0b2dnbGVCdXR0b25DZWxsIF9y
ZW5kZXJDdXJyZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50KDAsIDApXTsKICAgICAgICAgaWYgKCFbdG9nZ2xl
QnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSAmJiBpc0NlbGxGb2N1c2VkKQogICAg
ICAgICAgICAgbmVlZHNSZXBhaW50ID0gVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRo
Vmlld0ludG9Db250ZXh0KHRvZ2dsZUJ1dHRvbkNlbGwuZ2V0KCksIGNvbnRleHQsIGluZmxhdGVk
UmVjdCwgdmlldywgZmFsc2UsIHRydWUsIHVzZUltYWdlQnVmZmVyLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgfSBlbHNlCkBAIC01MjAsMTQgKzUyMCwxNCBAQCBzdGF0aWMgTlNCdXR0b25DZWxs
ICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0
YXRlcwogICAgIHJldHVybiBjZWxsOwogfQogICAgIAotc3RhdGljIHZvaWQgcGFpbnRCdXR0b24o
Q29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFy
dCBwYXJ0LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvcikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJv
bCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCiAgICAgQ29udHJvbFN0YXRlczo6
U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CiAgICAgTlNCdXR0b25DZWxs
ICpidXR0b25DZWxsID0gYnV0dG9uKHBhcnQsIGNvbnRyb2xTdGF0ZXMsIEludFNpemUoem9vbWVk
UmVjdC5zaXplKCkpLCB6b29tRmFjdG9yKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbYnV0
dG9uQ2VsbCBjb250cm9sU2l6ZV07CiAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gYnV0dG9uU2l6
ZXMoKVtjb250cm9sU2l6ZV07CkBAIC01NDcsOSArNTQ3LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRC
dXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3Jh
cGhpY3MKICAgICAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICAgICAgaW5m
bGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAg
ICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAv
IHpvb21GYWN0b3IpOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVj
dC54KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7
CisgICAgICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFj
dG9yKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwg
LWluZmxhdGVkUmVjdC55KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNTk5LDcgKzU5
OSw3IEBAIHN0YXRpYyBOU0NvbnRyb2xTaXplIHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwogfQog
Ci1zdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9v
bUZhY3RvciwgU2Nyb2xsVmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0
YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopCiB7CiAgICAgLy8gV2Ug
ZG9uJ3QgdXNlIE5TU3RlcHBlckNlbGwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gd2F5cyB0byBkcmF3
IGFuCiAgICAgLy8gTlNTdGVwcGVyQ2VsbCB3aXRoIHRoZSB1cCBidXR0b24gaGlnaGxpZ2h0ZWQu
CkBAIC02MTcsMTMgKzYxNywxMyBAQCBzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0
YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgICAgIGRy
YXdJbmZvLmtpbmQgPSBrVGhlbWVJbmNEZWNCdXR0b247CiAKICAgICBJbnRSZWN0IHJlY3Qoem9v
bWVkUmVjdCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICByZWN0LnNldFdpZHRoKHJl
Y3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICByZWN0LnNldEhlaWdodChyZWN0Lmhl
aWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyZWN0Lngo
KSwgcmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rv
ciwgem9vbUZhY3RvcikpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAt
cmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkp
OworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9y
KSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAg
ICB9CiAgICAgQ0dSZWN0IGJvdW5kcyhyZWN0KTsKICAgICBDR1JlY3QgYmFja2dyb3VuZEJvdW5k
czsKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIGNvbnN0IGZsb2F0IGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCA9IDMuMGY7CiAKLWJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGluZmxhdGVkUmVjdCwgTlNWaWV3KiB2aWV3LCBib29sIGRyYXdC
dXR0b25DZWxsLCBib29sIGRyYXdGb2N1c1JpbmcsIGJvb2wgdXNlSW1hZ2VCdWZmZXIsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKQorYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dp
dGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiBjZWxsLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgaW5mbGF0ZWRSZWN0LCBOU1ZpZXcqIHZpZXcsIGJvb2wgZHJhd0J1
dHRvbkNlbGwsIGJvb2wgZHJhd0ZvY3VzUmluZywgYm9vbCB1c2VJbWFnZUJ1ZmZlciwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgQVNTRVJUKGRyYXdCdXR0b25DZWxsIHx8IGRyYXdG
b2N1c1JpbmcpOwogICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CkBAIC02NzksNyArNjc5
LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRl
eHQoTlNDZWxsKiBjZWxsLCBHcmFwaGljc0NvbnQKICAgICAgICAgICAgIGlmIChkcmF3Rm9jdXNS
aW5nKQogICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsRm9jdXNSaW5nKGNl
bGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZVNSR0IsIGlu
ZmxhdGVkUmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlU1JHQiwgaW5mbGF0ZWRS
ZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWlu
dDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpAQCAtODQwLDcgKzg0MCw3IEBAIHZv
aWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMmIHN0CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQog
Ci12b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQordm9pZCBUaGVtZU1hYzo6cGFp
bnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rv
ciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBD
aGVja2JveFBhcnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRl
eCA1NGQ5Yzg1N2RmNDAyYjgyZDdhN2QxMzBmOGY3NjE4NWUyYmQ3OWFhLi5iMzBmZDgxMzQzYzA2
YWNkODliYThmOWUyZjY3NDM3NmY2ZWFkMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0KQEAgLTE4NSw5ICsxODUsOSBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0
ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKK3ZvaWQgV2lkZ2V0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgaWYgKHAtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBOU1ZpZXcgKnZpZXcgPSBnZXRPdXRlclZpZXcoKTsKIApAQCAtMjI5LDcg
KzIyOSw3IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IElu
dFJlY3QmIHIpCiAgICAgICAgICAgICBzY3JvbGxWaWV3ID0gMDsKICAgICB9CiAKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHAucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQVNTRVJUKGNnQ29udGV4
dCA9PSBbY3VycmVudENvbnRleHQgZ3JhcGhpY3NQb3J0XSk7CiAgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShjZ0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDNiNDk3NjYwY2M5NjhiMzAxZGNmMDY3ZTQzZjhlYzU4ODk3MWQxMjYuLjQ2
YTdjYjcxMTIyYTA0ZTI2YjZiYTJlMTYxOTAzN2E4YmFkOGQ3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikKIHsKIH0K
IAotdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaAppbmRleCAxYzFmMjE4MmU5NTkzN2M3YWM0
NWJiNTg3NGJlZGZjMGIwY2QxMmIwLi4wMzI2MWZhYzYyZjQzZmM4YWEyYzBkNzEwNzc4MzY2MjA3
YTUzYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb25NZWRpYVRpbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IDRkZjdlNWViM2Ux
Mjg4MjY0MTNjNDUwY2IzZjAwY2NlN2JhM2VkYTIuLjY0NDQ4OTM4ZjNhOWRmYmI2ZGQ5NDIzMDlj
ZTQ4OTYxYmIyMjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgfQogCiAgICAgaWYgKG1fc2Ny
b2xsYmFyKQotICAgICAgICBtX3Njcm9sbGJhci0+cGFpbnQoJmNvbnRleHQsIGRhbWFnZVJlY3Qp
OworICAgICAgICBtX3Njcm9sbGJhci0+cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiAKICAg
ICBIV25kREMgaFduZERDOwogICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogaFduZERDLnNl
dEhXbmQobV9wb3B1cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lV2luLmNwcAppbmRleCBjNjU0YWIxMDMxOWY3MTUwNGQxNGY3ZTIxYWU3ZDE1NjVh
NGYwOTBiLi4zYTA5NDQ0MjNiNjg0YjgzODFiN2E0M2E5YTg5NmIzOWFmOWI0MzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcgogICAgIGlmIChzY3JvbGxi
YXJUaGVtZSkKICAgICAgICAgYWxwaGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5
VHJhbnNwYXJlbnQoc2Nyb2xsYmFyVGhlbWUsIHBhcnQsIHN0YXRlKTsKIAotICAgIExvY2FsV2lu
ZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOwor
ICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdCwgYWxw
aGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAKICAgICBpZiAoc2Nyb2xsYmFy
VGhlbWUpCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGIKICAgICBp
ZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3Vu
ZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBTUF9CVVRUT04sIHhwU3RhdGUp
OwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVj
dCwgYWxwaGFCbGVuZCk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChj
b250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAg
ICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xs
YmFyVGhlbWUsIHdpbmRvd3NDb250ZXh0LmhkYygpLCBTUF9CVVRUT04sIHhwU3RhdGUsICZ0aGVt
ZVJlY3QsIDApOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhCiAg
ICAgYm9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQogICAg
ICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChz
Y3JvbGxiYXJUaGVtZSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7Ci0gICAgTG9jYWxXaW5k
b3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7Cisg
ICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBo
YUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhl
bWUpIHsKICAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgd2luZG93
c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVy
ZXIuY3BwCmluZGV4IDk0ZTA5NDkxMGUyOGYzMDllMDNjNWUwMzMzZWFiMWQ0ZjQ4ZjBjNmMuLmRm
NTdlNWEzZTZkOTI3MmEwYTljMmVmOTg3MTI5OTNlZThhZjM5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpZiAoaXNPbmVMZWZ0VG9SaWdo
dFJ1bihydW4pKQotICAgICAgICBmb250LmRyYXdUZXh0KCZjb250ZXh0LCBydW4sIHBvaW50KTsK
KyAgICAgICAgZm9udC5kcmF3VGV4dChjb250ZXh0LCBydW4sIHBvaW50KTsKICAgICBlbHNlCiAg
ICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgcG9pbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IDI3MWUzNmQ1Y2IzMTBmNWY2
ODg3ZGQyMzc5MGE5YjZiYTQ2OGYwYTAuLjlhY2UxYTE0ODUyNDlkNzU2ZTFiZDNlMjJlN2UxNjA2
NDA1ZTlkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJz
b3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCA0NjlmN2VmZWU4N2Y3
NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li4yZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQz
NGQ2YmZmZmRiNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBz
aXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAK
QEAgLTQyLDE0ICs0MiwxNCBAQCBFbGxpcHNpc0JveDo6RWxsaXBzaXNCb3goUmVuZGVyQmxvY2tG
bG93JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpcwogCiB2b2lkIEVsbGlw
c2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBDb2xvciB0
ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEZpbGxDb2xvcik7Ci0gICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LT5maWxsQ29s
b3IoKSkKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigp
KQorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xv
clNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYgKGxpbmVTdHls
ZS50ZXh0U2hhZG93KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KExheW91dFNpemUo
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkp
LAorICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhMYXlvdXRTaXplKGxpbmVTdHlsZS50ZXh0U2hh
ZG93KCktPngoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+eSgpKSwKICAgICAgICAgICAgIGxp
bmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5j
b2xvcigpLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1
ZTsKICAgICB9CkBAIC02MSwxOCArNjEsMTggQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAg
ICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUgdGV4dC4K
ICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xvcigpID8g
cGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tGbG93KCkuc2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFsaWQoKSAmJiBmb3JlZ3Jv
dW5kICE9IHRleHRDb2xvcikKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihmb3Jl
Z3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3Jy
ZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgotICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxp
bmVTdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50
T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkpKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHlsZSwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwg
eSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
KTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KLSAgICBpZiAodGV4
dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAodGV4dENv
bG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHRleHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICBpZiAoc2V0U2hhZG93
KQotICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOworICAgICAgICBjb250ZXh0LmNsZWFy
U2hhZG93KCk7CiAKICAgICBwYWludE1hcmt1cEJveChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBs
aW5lVG9wLCBsaW5lQm90dG9tLCBsaW5lU3R5bGUpOwogfQpAQCAtMTE5LDcgKzExOSw3IEBAIElu
dFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QoKQogICAgIHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQogCi12b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVj
dGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkK
K3ZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIENvbG9yIHRleHRDb2xvciA9IHN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBDb2xvciBj
ID0gYmxvY2tGbG93KCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgICAgICBjID0gQ29sb3IoMHhmZiAt
IGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAgICBjb25z
dCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdh
eXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAg
IExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQu
eCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCBy
b290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0
KHJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0
QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5o
CmluZGV4IDI3ZTkxMmZmZmEwM2E1NGUxMjRkOWJkMzJmYzcxOTE2NjMxY2IyNTEuLjQ0YzA1ZGFm
MWFkMjRiY2ZiMDhmYzNjNDljZGExNGFiNzZjZjExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWlu
dE1hcmt1cEJveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBjb25zdCBSZW5kZXJTdHls
ZSYpOwogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0KLSAgICB2b2lkIHBhaW50U2VsZWN0aW9u
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZv
bnRDYXNjYWRlJik7CiAgICAgSW5saW5lQm94KiBtYXJrdXBCb3goKSBjb25zdDsKIAogICAgIGJv
b2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDYyZGFjNGI4YjQ2MjIzODdiOGRjY2U3
OGZlYTIwOTJkMjE0NDBlNWMuLjU3NTdlOWE4NTE4M2MwNzY4MGJhMTlmNGE2YTMyMWU2NTc2ZDFj
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcApAQCAtODAsNyArODAsNyBAQCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZpbHRlckVm
ZmVjdFJlbmRlcmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
aW5wdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJjZUltYWdl
KCktPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291cmNlSW1h
Z2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKQEAgLTQxNyw3ICs0MTcsNyBA
QCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFw
cGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0KQordm9p
ZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3ND
b250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1faGF2ZUZpbHRlckVm
ZmVjdCAmJiBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigpKTsKICAgICBGaWx0ZXJFZmZl
Y3RSZW5kZXJlciogZmlsdGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKTsKQEAg
LTQyOSw3ICs0MjksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZp
bHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQwogICAgIExheW91dFJlY3Qg
ZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3QoKTsKICAgICBkZXN0UmVjdC5tb3ZlKG1fcGFp
bnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CiAKLSAgICBkZXN0aW5hdGlvbkNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5k
ZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAorICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwKICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0
UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCmluZGV4IGJl
YjNmNzdjNDhhMGEyYjRmYTEzYjZlNjQ1NmNiM2E3N2E5YjBmNjguLjNlMTMzN2QzZDE1Zjc2MTE5
MzRkNWM2ZDU3NmE5ZjE4MjAxNDc4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcHJlcGFyZUZpbHRlckVmZmVjdChSZW5kZXJMYXllciosIGNvbnN0IExheW91dFJlY3Qm
IGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgYm9vbCBiZWdpbkZpbHRlckVmZmVjdCgpOwot
ICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNv
bnRleHQpOworICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0
aW5hdGlvbkNvbnRleHQpOwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4
dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggYzRhNmU0M2M2NzIyZjQxMGY3YmY5MGQxMDhiOGM1NjBj
MzIwMDA5Yy4uNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFiN2QxMzRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9u
ZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBx
dWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5p
c1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLmltYWdlUmVu
ZGVyaW5nKCkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAg
Ym9vbCBjb250ZXh0SXNTY2FsZWQgPSAhY3VycmVudFRyYW5zZm9ybS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpOwogICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIHNpemUgPT0g
aW1hZ2VTaXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVjdC4gSWYg
d2UgaGFkIGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoaXMg
b2JqZWN0IGZyb20gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNWQ3ZWU5MmY1N2NlYTM2YmE2NzYzMzliODY4
NmZjYTM1Y2JhNWJkLi5kMTRkYzQ5YWE3OWFmMzE1ZGFjOGUxZDUxMjFjMzQwMjYwZWY2NWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihjb25zdCBSZW5kZXJWaWV3
Jik7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCos
IFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3Qg
TGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3ND
b250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVy
LCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAppbmRleCAzNTliZWQ2NTYzMWYxN2RmODU0OWI3ZWMzNDYwYThiMDkzZmUwMWY5Li5hODc0Y2Rj
MWM3ZDFkMWU3OGU0Yjc3NjA5OWVjY2EwYzhiNGIzYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMjIwLDggKzEyMjAsOCBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBDb2xvciYgYywgYwogICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMs
IHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykK
ICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFrKCkgPT0g
RENMT05FKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlv
dXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwg
cmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICB9CiAjZW5kaWYKQEAgLTEy
NTIsOCArMTI1Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAgICAgICAgIExheW91dFVu
aXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBMYXlv
dXRVbml0KHdpZHRoKCkpOwogICAgICAgICBMYXlvdXRVbml0IHN0cmlwSGVpZ2h0ID0gaXNIb3Jp
em9udGFsKCkgPyBMYXlvdXRVbml0KGhlaWdodCgpKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCi0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlvdXRSZWN0KHJlY3Qu
eCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdp
ZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwg
c3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0
LnNpemUoKSwgb3ApOwogICAgIH0KIH0KQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGFkanVzdGVk
UGFpbnRvZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0UmVjdCBw
YWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRvZmZzZXQsIGZyYW1lUmVjdC5zaXpl
KCkpOwogICAgIC8vIFNoYWRvdyBjb21lcyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3Jv
dW5kIGFuZCBib3JkZXIuCiAgICAgaWYgKCFyZW5kZXJlcigpLmJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWROb25l
LCB0aGlzKSkKQEAgLTEzODIsOCArMTM4Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAg
ICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVj
dC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgICAgIExheW91dFJlY3QgY2xp
cFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAodGhpcywgYm9yZGVySW1hZ2Us
IHBhaW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNv
bnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRCb3JkZXIocGFp
bnRJbmZvLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdo
dCksIGxpbmVTdHlsZSk7CiAgICAgfQogfQpAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnMKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
RGVzdGluYXRpb25JbjsKICAgICAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikgewotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVEZXN0aW5hdGlvbkluKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7CiAgICAg
ICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNDI3LDE0ICsxNDI3LDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNr
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAg
Ym9vbCBoYXNCb3hJbWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNhblJlbmRl
cigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAg
aWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5pc0xvYWRlZCgpKSB7CiAgICAgICAg
IGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCBwYWlu
dCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gbG9hZC4KICAgICB9CiAK
ICAgICAvLyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2UgYXJlIHRoZSBvbmx5IGJveCBmb3Ig
dGhpcyBvYmplY3QuICBJbiB0aG9zZQogICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUgY2FsbCB0
byBkcmF3IGlzIHJlcXVpcmVkLgogICAgIGlmICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVC
b3goKSkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZv
LmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUo
KSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7
CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4
dCgpLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpLCBy
ZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXNrIGltYWdlIHRoYXQgc3BhbnMgbXVs
dGlwbGUgbGluZXMuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IF90eCBhbmQgX3R5IGJ5
IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlvdXMgbGluZXMuCkBAIC0xNDUwLDEzICsxNDUwLDEzIEBA
IHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQg
PSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRo
OwogCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUlt
YWdlU3RyaXAodGhpcywgbWFza05pbmVQaWVjZUltYWdlLCBwYWludFJlY3QpOwotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwotICAgICAgICByZW5k
ZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3Qo
c3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS5zdHls
ZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3QpOworICAgICAgICByZW5kZXJlcigp
LnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQoKSwgTGF5b3V0UmVjdChzdHJp
cFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigpLnN0eWxlKCks
IG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAgICBpZiAo
cHVzaFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3Bh
cmVuY3lMYXllcigpOwogfQogCiBJbmxpbmVCb3gqIElubGluZUZsb3dCb3g6OmZpcnN0TGVhZkNo
aWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA5ZTZkMmNlYzBmZDQ1NDNhNjdhYTc4ZmJjMmQ3MWQyZGY4MjQwYjhiLi5mMzUxM2RjM2Q1
MmNjN2M1NGRhZDcwYjQ5YTExYzJjZmYxNGQ2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0g
dGhpcy0+bGluZVN0eWxlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgK
aW5kZXggMTViMWYyNDEyODI3NDRkYzViZDZkYjVjMmY5Y2RmMTc4ODViODk4NC4uZGRiYzkzMzUw
YTczMmEzMTU1Yzc3NGVjYTI4NDk0NDNjNGI0MzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YWludEluZm8uaApAQCAtNDksMjAgKzQ5LDMxIEBAIHR5cGVkZWYgSGFzaE1hcDxPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAgKiAodHh8
dHkpIGlzIHRoZSBjYWxjdWxhdGVkIHBvc2l0aW9uIG9mIHRoZSBwYXJlbnQKICAqLwogc3RydWN0
IFBhaW50SW5mbyB7Ci0gICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhh
dmlvciBuZXdQYWludEJlaGF2aW9yLAorICAgIFBhaW50SW5mbyhHcmFwaGljc0NvbnRleHQmIG5l
d0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIG5ld1JlY3QsIFBhaW50UGhhc2UgbmV3UGhhc2Us
IFBhaW50QmVoYXZpb3IgbmV3UGFpbnRCZWhhdmlvciwKICAgICAgICAgUmVuZGVyT2JqZWN0KiBu
ZXdTdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4q
IG5ld091dGxpbmVPYmplY3RzID0gbnVsbHB0ciwKICAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0
TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogbmV3UGFpbnRDb250YWluZXIgPSBudWxscHRyKQotICAgICAgICAgICAgOiBjb250
ZXh0KG5ld0NvbnRleHQpCi0gICAgICAgICAgICAsIHJlY3QobmV3UmVjdCkKKyAgICAgICAgICAg
IDogcmVjdChuZXdSZWN0KQogICAgICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKICAgICAgICAg
ICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9yKQogICAgICAgICAgICAgLCBzdWJ0
cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCiAgICAgICAgICAgICAsIG91dGxpbmVP
YmplY3RzKG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAgICAgLCBvdmVybGFwVGVzdFJlcXVl
c3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAgICAgICAsIHBhaW50Q29udGFpbmVyKG5l
d1BhaW50Q29udGFpbmVyKQorICAgICAgICAgICAgLCBtX2NvbnRleHQoJm5ld0NvbnRleHQpCiAg
ICAgewogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuICptX2NvbnRleHQ7
CisgICAgfQorCisgICAgdm9pZCBzZXRDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dCA9ICZjb250ZXh0OworICAgIH0KKwogICAgIHZvaWQg
dXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiAgICAgewogICAgICAgICBpZiAoIXN1YnRyZWVQYWludFJvb3QpCkBAIC05Myw3ICsx
MDQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKGxvY2FsVG9BbmNlc3RvclRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybSk7CisgICAgICAgIGNvbnRl
eHQoKS5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsKIAogICAgICAgICBpZiAo
cmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMsNyArMTE0LDYg
QEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlvdXRTaXplKHRy
YW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dDsKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0xMTEsNiArMTIxLDkgQEAgc3RydWN0IFBh
aW50SW5mbyB7CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG91dGxpbmVPYmplY3Rz
OyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBzaG91bGQgYmUgcGFpbnRlZCBieSBhIGJs
b2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVy
bGFwVGVzdFJlcXVlc3RzOwogICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50
Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUgY3VycmVu
dCBwYWludGluZworCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCogbV9jb250ZXh0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggOWFkZTc5NGE1N2YxZDAwY2E3NDY1YjRjYzNmZDBmOGM4NjAzYzUy
YS4uODY0OTZkZmE5Yjc1MGEzOWZhYzc3NWM5ZDExZGM5NjRjOTJkYmRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBXZSBwYWludCBhZnRlciB3ZSBwYWlu
dGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3aWxsCiAg
ICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAgICBpZiAoKHBoYXNlID09
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpICYm
ICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKLSAgICAgICAgbGF5ZXIoKS0+
cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQo
YWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7Cisg
ICAgICAgIGxheWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9scyhwYWludEluZm8uY29udGV4dCgp
LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBh
aW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGVudHMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTE1
MTYsOSArMTUxNiw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q2FyZXQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAoY2FyZXRQ
YWludGVyID09IHRoaXMgJiYgKGlzQ29udGVudEVkaXRhYmxlIHx8IGNhcmV0QnJvd3NpbmcpKSB7
CiAgICAgICAgIGlmICh0eXBlID09IEN1cnNvckNhcmV0KQotICAgICAgICAgICAgZnJhbWUoKS5z
ZWxlY3Rpb24oKS5wYWludENhcmV0KHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNldCwgcGFp
bnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5zZWxlY3Rpb24oKS5wYWludENhcmV0
KHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGZyYW1lKCkucGFnZSgpLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkucGFpbnREcmFnQ2FyZXQoJmZyYW1lKCksIHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNl
dCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRyYWdDYXJl
dENvbnRyb2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNvbnRleHQo
KSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKQEAgLTE1MzgsMTYg
KzE1MzgsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgICAgICAgICAvLyBv
dmVyZmxvd3MgcmVnaW9uIFggYW5kIGlzIGFuIHVuc3BsaXR0YWJsZSBlbGVtZW50IChsaWtlIGFu
IGltYWdlKS4KICAgICAgICAgICAgICAgICAvLyBUaGUgc2FtZSBhcHBsaWVzIGZvciBhIGJveCBv
dmVyZmxvd2luZyB0aGUgdG9wIG9mIHJlZ2lvbiBYIHdoZW4gdGhhdCBib3ggaXMgYWxzbyBmcmFn
bWVudGVkIGluIHJlZ2lvbiBYLTEuCiAKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwog
ICAgICAgICAgICAgICAgIGRpZENsaXBUb1JlZ2lvbiA9IHRydWU7CiAKLSAgICAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcChkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+
KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25zQ2xpcFJlY3RGb3JCb3hJbk5h
bWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21lbnQpKTsKKyAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhy
ZWFkPigqcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS5kZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94
SW5OYW1lZEZsb3dGcmFnbWVudCgqdGhpcywgKm5hbWVkRmxvd0ZyYWdtZW50KSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChkaWRDbGlwVG9SZWdpb24p
Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rpb24o
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAg
TGF5b3V0VW5pdCBsYXN0VG9wID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBsYXN0TGVmdCA9IGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KCp0aGlzLCBsYXN0VG9wLCBjYWNoZSk7CiAgICAgICAg
IExheW91dFVuaXQgbGFzdFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KCp0aGlz
LCBsYXN0VG9wLCBjYWNoZSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAgTGF5b3V0
UmVjdCBnYXBSZWN0c0JvdW5kcyA9IHNlbGVjdGlvbkdhcHMoKnRoaXMsIHBhaW50T2Zmc2V0LCBM
YXlvdXRTaXplKCksIGxhc3RUb3AsIGxhc3RMZWZ0LCBsYXN0UmlnaHQsIGNhY2hlLCAmcGFpbnRJ
bmZvKTsKICAgICAgICAgaWYgKCFnYXBSZWN0c0JvdW5kcy5pc0VtcHR5KCkpIHsKQEAgLTE3OTYs
NyArMTc5Niw3IEBAIHN0YXRpYyB2b2lkIGNsaXBPdXRQb3NpdGlvbmVkT2JqZWN0cyhjb25zdCBQ
YWludEluZm8qIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pCiAgICAgVHJhY2tlZFJlbmRlcmVy
TGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3RzLT5lbmQo
KTsKICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgUmVuZGVyQm94KiByID0gKml0OwotICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmNsaXBP
dXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgpLCByLT53
aWR0aCgpLCByLT5oZWlnaHQoKSkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5jbGlw
T3V0KEludFJlY3Qob2Zmc2V0LngoKSArIHItPngoKSwgb2Zmc2V0LnkoKSArIHItPnkoKSwgci0+
d2lkdGgoKSwgci0+aGVpZ2h0KCkpKTsKICAgICB9CiB9CiAKQEAgLTE5NjYsNyArMTk2Niw3IEBA
IExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290
QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9u
LCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2lj
YWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRl
eHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwog
ICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJs
b2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2lj
YWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVj
dChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9n
aWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAg
cGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJl
Y3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBw
YWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJl
Y3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVy
biBnYXBSZWN0OwogfQogCkBAIC0yMDAwLDcgKzIwMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJs
b2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTAogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9Q
aHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290Qmxv
Y2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmlu
ZGV4IDY3ZDcyMTQwNDJiMmE3NTJkNzI5NDA0OTg3OGY0NWE5MjlmMTY0YmUuLmUxZjNmMTdiOTBl
MDQ5ODlhMTQyYTc0ZWNmNTRkN2U5ZTdjYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmCiB7CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMocGFpbnRJ
bmZvLCBwb2ludCk7CiAgICAgCi0gICAgaWYgKCFtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSB8fCBw
YWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbXVsdGlDb2x1
bW5GbG93VGhyZWFkKCkgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBvdXIgY2hpbGRyZW4gYW5k
IHBhaW50IHRoZSBjb2x1bW4gcnVsZXMgYXMgbmVlZGVkLgpAQCAtMjE5Niw3ICsyMTk2LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2sm
IHJvb3RCbG9jaywgY29uc3QgUGFpbnQKICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+
cmVuZGVyZXIoKS53aWR0aCgpLCBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5oZWlnaHQoKSk7
CiAgICAgICAgICAgICByb290QmxvY2suZmxpcEZvcldyaXRpbmdNb2RlKGZsb2F0Qm94KTsKICAg
ICAgICAgICAgIGZsb2F0Qm94Lm1vdmUocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi54KCksIHJv
b3RCbG9ja1BoeXNpY2FsUG9zaXRpb24ueSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby0+Y29u
dGV4dC0+Y2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOworICAgICAgICAgICAgcGFp
bnRJbmZvLT5jb250ZXh0KCkuY2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCBhZTZhZWE1YjVkNzgxN2E3M2Q5OTEzODBmMGRjMDcyOGVlNTdlZTIyLi5mZjE5MWVhODk5ZDE5
MDkxZGIwYTkyZmM4NTQ0Y2IwNmQzNmJlNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMTI0Miw5ICsxMjQyLDkgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9v
dEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgcGFpbnRGaWxs
TGF5ZXJzKHBhaW50SW5mbywgYmdDb2xvciwgYmdMYXllciwgdmlldygpLmJhY2tncm91bmRSZWN0
KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIsICZyb290QmFja2dy
b3VuZFJlbmRlcmVyKTsKIH0KIAotQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKK0JhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWluZUJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWROb25lOwog
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKQEAgLTEyNTIs
NyArMTI1Miw3IEBAIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvCiAgICAgaWYgKCFzdHlsZS5oYXNC
YWNrZ3JvdW5kKCkgfHwgIXN0eWxlLmhhc0JvcmRlcigpIHx8ICFzdHlsZS5oYXNCb3JkZXJSYWRp
dXMoKSB8fCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVSZW5kZXJlZCgpKQogICAgICAgICBy
ZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBj
b250ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4dC5nZXRD
VE0oKTsKICAgICBGbG9hdFNpemUgY29udGV4dFNjYWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0
bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKIAogICAgIC8v
IEJlY2F1c2UgUm91bmRlZFJlY3QgdXNlcyBJbnRSZWN0IGludGVybmFsbHkgdGhlIGluc2V0IGFw
cGxpZWQgYnkgdGhlIApAQCAtMTI5MywyMSArMTI5MywyMSBAQCB2b2lkIFJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaQogICAgICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHBhaW50UmVjdC54KCksIHBhaW50UmVj
dC55KCkgKyAodGhpcy0+aGVpZ2h0KCkgLSBoZWlnaHQpIC8gMiwgd2lkdGgsIGhlaWdodCk7IC8v
IFZlcnRpY2FsbHkgY2VudGVyIHRoZSBjaGVja2JveCwgbGlrZSBvbiBkZXNrdG9wCiAgICAgfQog
I2VuZGlmCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0gZGV0
ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBGSVhNRTog
U2hvdWxkIGV2ZW50dWFsbHkgZ2l2ZSB0aGUgdGhlbWUgY29udHJvbCBvdmVyIHdoZXRoZXIgdGhl
IGJveCBzaGFkb3cgc2hvdWxkIHBhaW50LCBzaW5jZSBjb250cm9scyBjb3VsZCBoYXZlCiAgICAg
Ly8gY3VzdG9tIHNoYWRvd3Mgb2YgdGhlaXIgb3duLgogICAgIGlmICghYm94U2hhZG93U2hvdWxk
QmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBibGVlZEF2b2lkYW5j
ZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgp
LCBOb3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAgICAgaWYgKGJsZWVkQXZv
aWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAg
IC8vIFRvIGF2b2lkIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJsZWVkaW5nIG91dCBiZWhpbmQgdGhl
IGJvcmRlciwgd2UnbGwgcmVuZGVyIGJhY2tncm91bmQgYW5kIGJvcmRlcgogICAgICAgICAvLyBp
bnRvIGEgdHJhbnNwYXJlbmN5IGxheWVyLCBhbmQgdGhlbiBjbGlwIHRoYXQgaW4gb25lIGdvICh3
aGljaCByZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBjbGlwIGJlZm9yZQogICAgICAgICAvLyBiZWdp
bm5pbmcgdGhlIGxheWVyKS4KICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVy
Rm9yKHBhaW50UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QpLnBpeGVs
U25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFu
Y2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgpAQCAtMTM0Miw3
ICsxMzQyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAgICAgcGFpbnRCb3JkZXIo
cGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKIAogICAgIGlm
IChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9p
ZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBib29sIFJlbmRlckJveDo6YmFja2dy
b3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFz
ayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNr
IHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQs
IHNpemUoKSk7CkBAIC0xNTI4LDExICsxNTI4LDExIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludE1h
c2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IAogdm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBh
aW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUo
KSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50
UmVjdCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJs
YWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpwYWludE1h
c2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBh
aW50UmVjdCkKQEAgLTE1NTcsMTggKzE1NTcsMTggQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFz
a0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEK
ICAgICAgICAgaWYgKG1hc2tMYXllcnMpCiAgICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVk
ICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOwogCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVE
ZXN0aW5hdGlvbkluKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKDEpOwogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7
CiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJbWFnZXNMb2FkZWQpIHsKICAgICAgICAgcGFpbnRG
aWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS5tYXNrTGF5ZXJzKCksIHBhaW50
UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3ApOwotICAgICAgICBwYWludE5p
bmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxl
KCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcGFpbnROaW5lUGllY2VJ
bWFnZShwYWludEluZm8uY29udGV4dCgpLCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxlKCkubWFz
a0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHB1c2hUcmFu
c3BhcmVuY3lMYXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0xNjE5LDE2ICsxNjE5LDEzIEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjLCBjb25zCiAgICAgICAgIGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKTsKICAgICB9
CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1
ZmZlciA9IGZhbHNlOwotCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKICAgICBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxkRHJhd0JhY2tncm91
bmRJblNlcGFyYXRlQnVmZmVyKSB7CiAgICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywg
YywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CiAgICAgICAgIGJhc2VCZ0NvbG9yVXNh
Z2UgPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcDsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KDEpOwogICAgIH0KIAogICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29uc3RfcmV2ZXJz
ZV9pdGVyYXRvciB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7CkBAIC0xNjM2LDcgKzE2MzMsNyBA
QCB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBDb2xvciYgYywgY29ucwogICAgICAgICBwYWludEZpbGxMYXllcihwYWludElu
Zm8sIGMsICppdCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBi
YXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlmIChzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJh
dGVCdWZmZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6
OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYg
YywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCkBA
IC0xNzY4LDEwICsxNzY1LDEwIEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgfQogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKGlzQ29u
dHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dD
bGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNl
U2NhbGVGYWN0b3IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkp
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgp
KSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcikp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3Jk
ZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkucGl4ZWxTbmFwcGVk
Um91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3
NzksNyArMTc3Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZv
JiBwYWludEluZm8sIFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFzZSwKIHsKICAgICBBU1NFUlQoaGFz
Q29udHJvbENsaXAoKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWxheWVyKCktPmlzU2VsZlBh
aW50aW5nTGF5ZXIoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICBpZiAob3JpZ2luYWxQaGFzZSA9
PSBQYWludFBoYXNlT3V0bGluZSkgewogICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBo
YXNlU2VsZk91dGxpbmU7CiAgICAgICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgYWNjdW11bGF0
ZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDU1MTg4YzYx
NjlkNDdmOTMwM2JkZjE2MWFmMjVhODJjOWQyZjk4YjkuLjE2ZDUxZDk3ZWZkNWFmZThlMWE3ZTM2
ZjdkODI0N2Y4ZjBiZGEwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTY0MCw3ICs2NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29u
dGV4dCopIGNvbnN0OworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAgYm9vbCBi
YWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVy
UmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMWRjZmUxMjJmMDI3NzIyOTFiN2ExN2I4
MzY0YTg3MGRiYTJiZDIyZS4uZmNhOTdhZGYyNWJkMTcxOTJkOTBmYTVjNDc2ZjMzZGEzYmEwNWNj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3Vz
cGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNw
ZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBJbWFnZSogaW1h
Z2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplKQogewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigp
LnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6
ZSk7CiB9CkBAIC01MTgsMzQgKzUxOCwzNCBAQCBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcgogICAg
IHJldHVybiBib3JkZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3Vu
ZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjbGlwUm91bmRlZElubmVyUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3Qp
CiB7CiAgICAgaWYgKGNsaXBSZWN0LmlzUmVuZGVyYWJsZSgpKQotICAgICAgICBjb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVj
dChjbGlwUmVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJvdW5kZWQg
cmVjdCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFraW5nIHN1
cmUgd2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAoIWNsaXBS
ZWN0LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0
b21SaWdodCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRvcENvcm5lcihj
bGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgpLCByZWN0Lm1heFgoKSAtIGNs
aXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJlY3QucmVjdCgpLnkoKSk7CiAg
ICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJSYWRpaTsKICAgICAg
ICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJlY3QucmFkaWkoKS50b3BMZWZ0
KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAgY29udGV4dC5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7
CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIocmVjdC54KCksIHJlY3QueSgp
LCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZ
KCkgLSByZWN0LnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBib3R0
b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJvdHRvbVJp
Z2h0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3R0b21Db3JuZXIsIGJvdHRvbUNv
cm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfSAK
IAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQoKS5pc0VtcHR5KCkgfHwg
IWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
RmxvYXRSZWN0IHRvcENvcm5lcihyZWN0LngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgY2xpcFJl
Y3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJlY3Qo
KS55KCkpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgdG9wQ29ybmVyUmFk
aWk7CiAgICAgICAgICAgICB0b3BDb3JuZXJSYWRpaS5zZXRUb3BSaWdodChjbGlwUmVjdC5yYWRp
aSgpLnRvcFJpZ2h0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAg
Y29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENv
cm5lclJhZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIoY2xpcFJl
Y3QucmVjdCgpLngoKSwgcmVjdC55KCksIHJlY3QubWF4WCgpIC0gY2xpcFJlY3QucmVjdCgpLngo
KSwgY2xpcFJlY3QucmVjdCgpLm1heFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAgIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpIGJvdHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAgYm90dG9t
Q29ybmVyUmFkaWkuc2V0Qm90dG9tTGVmdChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChi
b3R0b21Db3JuZXIsIGJvdHRvbUNvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU4MSw3ICs1ODEsNyBAQCBSb3VuZGVk
UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRG
b3JCbGVlZEF2b2lkYW5jZQogICAgIHJldHVybiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoYm9y
ZGVyUmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotc3RhdGljIHZv
aWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHN0eWxlLT5ib3hTaGFkb3coKTsKICAgICB3
aGlsZSAoYm94U2hhZG93LT5zdHlsZSgpICE9IE5vcm1hbCkKQEAgLTU4OSwxNSArNTg5LDE1IEBA
IHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGJv
eFNoYWRvdy0+eCgpLCBib3hTaGFkb3ctPnkoKSk7CiAgICAgaWYgKCFib3hTaGFkb3ctPmlzV2Vi
a2l0Qm94U2hhZG93KCkpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hhZG93
LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJv
eFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsK
IH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZs
b3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCiB7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7
Ci0gICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVj
dC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOworICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC54
KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4dCB0byB0aGUgY2xp
cC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFpbnQgcGhhc2UgdGhh
dCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQganVz
dCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCkBAIC02MTgsOCArNjE4LDggQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZm
ZXIqIG1hc2tJbWFnZSwgY29uc3QKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAog
ICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0Jv
eCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
UmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdl
IGJhc2VCZ0NvbG9yVXNhZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBy
ZWN0LmlzRW1wdHkoKSkKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCByZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbmNsdWRlTGVmdEVkZ2UgPSBi
b3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSA6IHRydWU7CkBAIC02NzIsMzIgKzY3
MiwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHJlY3QubG9jYXRpb24oKSwgYmxl
ZWRBdm9pZGFuY2UsIGJveCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2hh
ZG93U3RhdGVTYXZlcigqY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVy
KGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAg
IGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAgICAgICBh
cHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoY29udGV4dCwgJnN0eWxlKCkpOwogCiAgICAgICAg
IGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVl
ZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBp
eGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRB
dm9pZGFuY2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsCisg
ICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91
bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxl
ZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwKICAgICAgICAgICAgICAgICBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmco
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYgKHBpeGVsU25hcHBlZEJvcmRlci5p
c1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3Qo
cGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QoY29udGV4dCwgcGl4ZWxT
bmFwcGVkUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3QoKSwgYmdD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQucmVz
dG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBCb3JkZXJGaWxsQm94IHJhZGl1cyBjbGlwcGluZyBpcyB0YWtlbiBjYXJlIG9mIGJ5
IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyCiAgICAgYm9vbCBjbGlwVG9Cb3Jk
ZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmICEoaXNCb3JkZXJGaWxsICYmIGJsZWVkQXZv
aWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBUb0JvcmRlclN0YXRlU2F2ZXIoKmNvbnRleHQsIGNs
aXBUb0JvcmRlclJhZGl1cyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwVG9C
b3JkZXJTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CiAgICAgaWYgKGNs
aXBUb0JvcmRlclJhZGl1cykgewotICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRl
ckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpj
b250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLCBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KHJlY3QsIGJv
eCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGlu
Y2x1ZGVSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRlckZp
bGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRl
eHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0RWRnZSwg
aW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QocmVjdCwgYm94LCBi
b3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVk
ZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBjb250ZW50
IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBDb250
ZW50RmlsbEJveCkgewpAQCAtNzE0LDEyICs3MTQsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y28KICAgICBMYXlvdXRVbml0IHBMZWZ0ID0gaW5jbHVkZUxlZnRFZGdlID8gcGFkZGluZ0xlZnQo
KSA6IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHBSaWdodCA9IGluY2x1ZGVSaWdodEVk
Z2UgPyBwYWRkaW5nUmlnaHQoKSA6IExheW91dFVuaXQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlwcGVk
V2l0aExvY2FsU2Nyb2xsaW5nKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBX
aXRoU2Nyb2xsaW5nU3RhdGVTYXZlcihjb250ZXh0LCBjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5n
KTsKICAgICBMYXlvdXRSZWN0IHNjcm9sbGVkUGFpbnRSZWN0ID0gcmVjdDsKICAgICBpZiAoY2xp
cHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewogICAgICAgICAvLyBDbGlwIHRvIHRoZSBvdmVyZmxv
dyBhcmVhLgogICAgICAgICBhdXRvJiB0aGlzQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhp
cyk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0KHJlY3Qu
bG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKKyAgICAgICAg
Y29udGV4dC5jbGlwKHRoaXNCb3gub3ZlcmZsb3dDbGlwUmVjdChyZWN0LmxvY2F0aW9uKCksIGN1
cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBB
ZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQgYm94IHdp
dGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSB0aGlzQm94
LnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LnNldEhlaWdodChib3JkZXJU
b3AoKSArIGxheWVyKCktPnNjcm9sbEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCkpOwogICAgIH0K
ICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGJhY2tncm91bmRDbGlwU3RhdGVT
YXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFj
a2dyb3VuZENsaXBTdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0OwogCkBAIC03
NDEsNyArNzQxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBz
Y3JvbGxlZFBhaW50UmVjdC53aWR0aCgpIC0gYkxlZnQgLSBiUmlnaHQgLSAoaW5jbHVkZVBhZGRp
bmcgPyBwTGVmdCArIHBSaWdodCA6IExheW91dFVuaXQoKSksCiAgICAgICAgICAgICAgICAgc2Ny
b2xsZWRQYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpIC0g
KGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpIDogTGF5b3V0
VW5pdCgpKSk7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXAoY2xpcFJlY3QpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChiZ0xheWVyLT5jbGlw
KCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0
IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byBjbGlwIGJhY2tncm91bmQgZHJh
d2luZy4KQEAgLTc1MSwxNSArNzUxLDE1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAg
ICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwog
CiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IGNv
bnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAgICAgICAg
bWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUo
KSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gs
IHNjcm9sbGVkUGFpbnRSZWN0KTsKIAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVlbiBjcmVh
dGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNrZ3JvdW5k
Q2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlwKG1hc2tSZWN0KTsK
LSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29u
dGV4dC5jbGlwKG1hc2tSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxh
eWVyKDEpOwogICAgIH0KIAogICAgIC8vIE9ubHkgZmlsbCB3aXRoIGEgYmFzZSBjb2xvciAoZS5n
Liwgd2hpdGUpIGlmIHdlJ3JlIHRoZSByb290IGRvY3VtZW50LCBzaW5jZSBpZnJhbWVzL2ZyYW1l
cyB3aXRoCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNh
dmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKGNvbnRl
eHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAgICAgICBp
ZiAoYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAg
IGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUoKSk7CiAKQEAgLTgx
NywxMiArODE3LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAg
aWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgICAg
ICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNl
IGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxwaGEoKSkgewotICAgICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/
IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiZ0Nv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21w
b3NpdGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChz
aG91bGRDbGVhckJhY2tncm91bmQpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xlYXJSZWN0
KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xl
YXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC04MzQsMTcgKzgzNCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
ID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9y
QmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0
aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNs
aWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgp
ID09IE1hc2tMdW1pbmFuY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNl
TWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOwogICAgICAg
ICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAg
ICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3Bh
Y2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVz
dFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRy
eS50aWxlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+
YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5
U2NhbGluZykpOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQo
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9p
bnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgSW1hZ2VQ
YWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKLSAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAgICAgICBj
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tSZWN0LCBD
b21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOwogICAgIH0KIH0KIApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE8KICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRlc3RSZWN0KCk7CiB9CiAKLWJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwKK2Jvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1h
Z2UoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG5pbmVQaWVjZUltYWdl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBTdHlsZUltYWdlKiBzdHlsZUltYWdlID0g
bmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsKQEAgLTE0MjYsNyArMTQyNiw3IEBAIHN0YXRpYyBib29s
IGpvaW5SZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNv
bnN0IEJvcmRlckVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgY29uc3QgTGF5b3V0UmVj
dCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRl
IGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0
aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBh
bnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTQ0NCw3ICsxNDQ0
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIGNvbnN0IENvbG9yJiBjb2xvclRvUGFp
bnQgPSBvdmVycmlkZUNvbG9yID8gKm92ZXJyaWRlQ29sb3IgOiBlZGdlVG9SZW5kZXIuY29sb3Io
KTsKIAogICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgIGlmIChpbm5lckJv
cmRlci5pc1JlbmRlcmFibGUoKSkKICAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihn
cmFwaGljc0NvbnRleHQsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZSwgYWRqYWNlbnRT
aWRlMVN0eWxlc01hdGNoLCBhZGphY2VudFNpZGUyU3R5bGVzTWF0Y2gpOwogICAgICAgICBlbHNl
CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIGJv
b2wgY2xpcEFkamFjZW50U2lkZTIgPSBjb2xvck5lZWRzQW50aUFsaWFzQXRDb3JuZXIoc2lkZSwg
YWRqYWNlbnRTaWRlMiwgZWRnZXMpICYmIG1pdHJlQWRqYWNlbnRTaWRlMjsKICAgICAgICAgYm9v
bCBzaG91bGRDbGlwID0gY2xpcEZvclN0eWxlIHx8IGNsaXBBZGphY2VudFNpZGUxIHx8IGNsaXBB
ZGphY2VudFNpZGUyOwogICAgICAgICAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBjbGlwU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBzaG91bGRDbGlwKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQs
IHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgYm9v
bCBhbGlhc0FkamFjZW50U2lkZTEgPSBjbGlwQWRqYWNlbnRTaWRlMSB8fCAoY2xpcEZvclN0eWxl
ICYmIG1pdHJlQWRqYWNlbnRTaWRlMSk7CiAgICAgICAgICAgICBib29sIGFsaWFzQWRqYWNlbnRT
aWRlMiA9IGNsaXBBZGphY2VudFNpZGUyIHx8IChjbGlwRm9yU3R5bGUgJiYgbWl0cmVBZGphY2Vu
dFNpZGUyKTsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAg
ICAgICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMSA9IGZhbHNlOwogICAgICAgICAgICAgbWl0cmVB
ZGphY2VudFNpZGUyID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKCpncmFwaGljc0NvbnRleHQsIHNpZGVSZWN0LCBzaWRlLCBjb2xvclRvUGFpbnQsIGVkZ2VU
b1JlbmRlci5zdHlsZSgpLCBtaXRyZUFkamFjZW50U2lkZTEgPyBhZGphY2VudEVkZ2UxLndpZHRo
Rm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJlQWRqYWNlbnRTaWRlMiA/IGFkamFjZW50RWRnZTIud2lk
dGhGb3JQYWludGluZygpIDogMCwgYW50aWFsaWFzKTsKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9yVG9QYWludCwgZWRnZVRv
UmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFjZW50RWRnZTEud2lkdGhG
b3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRqYWNlbnRFZGdlMi53aWR0
aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOwogICAgIH0KIH0KIApAQCAtMTQ4OCw3ICsx
NDg4LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXIKICAgICByZXR1cm4gc2lkZVJlY3Q7CiB9
CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAog
ICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJvcmRlckVk
Z2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciog
b3ZlcnJpZGVDb2xvcikKIHsKQEAgLTE1MzYsNyArMTUzNiw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5z
bHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFk
anVzdG1lbnQsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVk
UmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQs
CiAgICAgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRnZXNUb0Ry
YXcsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlh
bGlhcykKIHsKICAgICAvLyB3aWxsQmVPdmVyZHJhd24gYXNzdW1lcyB0aGF0IHdlIGRyYXcgaW4g
b3JkZXI6IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC4KQEAgLTE1NjYsMTQgKzE1NjYsMTQgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIAogICAgICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxh
eWVyID0gaW5jbHVkZXNBZGphY2VudEVkZ2VzKGNvbW1vbkNvbG9yRWRnZVNldCkgJiYgY29tbW9u
Q29sb3IuaGFzQWxwaGEoKTsKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0g
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0Pihj
b21tb25Db2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgICAgICBjb21tb25Db2xvciA9IENv
bG9yKGNvbW1vbkNvbG9yLnJlZCgpLCBjb21tb25Db2xvci5ncmVlbigpLCBjb21tb25Db2xvci5i
bHVlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0Nv
bnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIGlubmVyQm9yZGVyQWRqdXN0
bWVudCwgZWRnZXMsIGNvbW1vbkNvbG9yRWRnZVNldCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMsICZjb21t
b25Db2xvcik7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
ICAgIAogICAgICAgICBlZGdlc1RvRHJhdyAmPSB+Y29tbW9uQ29sb3JFZGdlU2V0OwogICAgIH0K
QEAgLTE1ODIsOSArMTU4Miw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJh
bnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzCiB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKQogewotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0g
aW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW5m
by5jb250ZXh0KCk7CiAKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTE1OTcsNyArMTU5Nyw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwogICAgIEJv
cmRlckVkZ2U6OmdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBzdHlsZSwgZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3Qgb3V0ZXJCb3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVk
Qm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlciA9IHN0eWxlLmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpn
cmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlubmVyQm9y
ZGVyID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVz
dGVkRm9yQmxlZWRBdm9pZGFuY2UoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5j
ZSksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAog
ICAgIGJvb2wgaGF2ZUFscGhhQ29sb3IgPSBmYWxzZTsKICAgICBib29sIGhhdmVBbGxTb2xpZEVk
Z2VzID0gdHJ1ZTsKQEAgLTE3MDMsOSArMTcwMyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocGl4ZWxTbmFw
cGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBh
dGgocGF0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9F
VkVOT0REKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNb
Zmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfSAKICAgICAgICAgLy8gQXZvaWQgY3JlYXRpbmcgdHJhbnNwYXJlbnQgbGF5ZXJz
CkBAIC0xNzIwLDIzICsxNzIwLDIzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVSTyk7Cisg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJs
ZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBib29sIGNsaXBUb091dGVyQm9yZGVyID0gb3V0ZXJCb3JkZXIuaXNSb3Vu
ZGVkKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGlj
c0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlwVG9PdXRlckJvcmRlcik7CiAgICAg
aWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhlIGlubmVyIGFu
ZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tn
cm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZv
clBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIC8vIGlzUmVuZGVyYWJsZSgp
IGNoZWNrIGF2b2lkcyBpc3N1ZSBkZXNjcmliZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4Nzg3CiAgICAgICAgIC8vIFRoZSBpbnNpZGUgd2lsbCBiZSBjbGlw
cGVkIG91dCBsYXRlciAoaW4gY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKQogICAg
ICAgICBpZiAoaW5uZXJCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlci5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB9CiAKICAgICAv
LyBJZiBvbmx5IG9uZSBlZGdlIHZpc2libGUgYW50aWFsaWFzaW5nIGRvZXNuJ3QgY3JlYXRlIHNl
YW1zCkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAg
IHBhaW50Qm9yZGVyU2lkZXMoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIHVu
YWRqdXN0ZWRJbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywgZWRnZXNU
b0RyYXcsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29u
c3QgQm9yZGVyRWRnZSBlZGdlc1tdLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0Jv
eFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29uc3QgQm9yZGVy
RWRnZSBlZGdlc1tdLAogICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywg
Qm94U2lkZSBzaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yIGNvbG9yLCBFQm9y
ZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiB7CkBAIC0xNzY1LDE0ICsxNzY1LDE0IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERPVFRFRDoKICAgICBjYXNlIERBU0hF
RDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHls
ZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
Y29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgLy8gVGhlIHN0cm9rZSBpcyBk
b3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAgICAgIC8v
IG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBjbGlwcGVk
IG9mZi4gCiAgICAgICAgIC8vIFRoZSBleHRyYSBtdWx0aXBsaWVyIGlzIHNvIHRoYXQgdGhlIGNs
aXBwaW5nIG1hc2sgY2FuIGFudGlhbGlhcwogICAgICAgICAvLyB0aGUgZWRnZXMgdG8gcHJldmVu
dCBqYWdnaWVzLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhk
cmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0
cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0
cm9rZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoZHJhd1Ro
aWNrbmVzcyAqIDIgKiAxLjFmKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0
eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0cm9rZSk7
CiAKICAgICAgICAgLy8gSWYgdGhlIG51bWJlciBvZiBkYXNoZXMgdGhhdCBmaXQgaW4gdGhlIHBh
dGggaXMgb2RkIGFuZCBub24taW50ZWdyYWwgdGhlbiB3ZQogICAgICAgICAvLyB3aWxsIGhhdmUg
YW4gYXdrd2FyZGx5LXNpemVkIGRhc2ggYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4gVG8gdHJ5IHRv
IGF2b2lkIHRoYXQKQEAgLTE3OTUsMTMgKzE3OTUsMTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgICAgIERhc2hBcnJheSBsaW5lRGFzaDsKICAgICAgICAgICAgIGxpbmVEYXNo
LmFwcGVuZChkYXNoTGVuZ3RoKTsKICAgICAgICAgICAgIGxpbmVEYXNoLmFwcGVuZChnYXBMZW5n
dGgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRMaW5lRGFzaChsaW5lRGFzaCwg
ZGFzaExlbmd0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0TGluZURhc2gobGlu
ZURhc2gsIGRhc2hMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBGSVhN
RTogc3Ryb2tpbmcgdGhlIGJvcmRlciBwYXRoIGNhdXNlcyBpc3N1ZXMgd2l0aCB0aWdodCBjb3Ju
ZXJzOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg3MTEKICAgICAgICAgLy8gQWxzbywgdG8gZ2V0IHRoZSBiZXN0IGFwcGVhcmFuY2Ugd2Ugc2hv
dWxkIHN0cm9rZSBhIHBhdGggYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnMuCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnN0cm9rZVBhdGgoYm9yZGVyUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y2FzZSBET1VCTEU6IHsKQEAgLTE4MjQsMTggKzE4MjQsMTggQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKIAogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3ND
b250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5uZXJDbGlwID0g
c3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCiAgICAgICAgICAgICAg
ICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgaW5uZXJCb3Jk
ZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAgICAgICBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoaW5uZXJDbGlwKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW5uZXJDbGlwKSk7CiAgICAgICAgICAgICBkcmF3
Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyUGF0aCwg
ZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwgc3R5bGUsIGNvbG9yLCBTT0xJ
RCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9yZGVyIGxp
bmUKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBMYXlvdXRS
ZWN0IG91dGVyUmVjdCA9IGJvcmRlclJlY3Q7CiAgICAgICAgICAgICBpZiAoYmxlZWRBdm9pZGFu
Y2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgICAg
ICAgICBvdXRlclJlY3QuaW5mbGF0ZSgxKTsKQEAgLTE4NDgsNyArMTg0OCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBvdXRlckNsaXAgPSBzdHls
ZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAgICAgIG91
dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVm
dFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckNs
aXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChvdXRlckNsaXApKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBh
dGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tu
ZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIFNPTElELCBibGVlZEF2b2lk
YW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tu
ZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMxLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIFBhaW50
IGlubmVyIG9ubHkKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9
IGVkZ2VzW0JTVG9wXS53aWR0aEZvclBhaW50aW5nKCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0
IGJvdHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CiAg
ICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoID0gZWRnZXNbQlNMZWZ0XS53aWR0aEZvclBhaW50
aW5nKCkgLyAyOwpAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwK
ICAgICAgICAgICAgIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRo
LAogICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRl
RnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywg
dGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2
b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg5Miw5ICsxODkyLDkgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZ3JhcGhpY3NDb250
ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRG
aWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1JlY3Qoc25hcFJlY3RU
b0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkp
KTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91
dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5lckNvcm5lciwgY29uc3QgRmxvYXRQb2lu
dCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkKQEAgLTE5MTIsNyArMTkxMiw3IEBA
IHN0YXRpYyB2b2lkIGZpbmRJbm5lclZlcnRleChjb25zdCBGbG9hdFBvaW50JiBvdXRlckNvcm5l
ciwgY29uc3QgRmxvYXRQb2ludCYgaW5uCiAgICAgICAgIGZpbmRJbnRlcnNlY3Rpb24ob3V0ZXJD
b3JuZXIsIGlubmVyQ29ybmVyLCBGbG9hdFBvaW50KDAsIGNlbnRlclBvaW50LnkoKSksIEZsb2F0
UG9pbnQoMTAwLCBjZW50ZXJQb2ludC55KCkpLCByZXN1bHQpOwogfQogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRl
ZFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHNp
ZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcykKIHsKICAg
ICBGbG9hdFBvaW50IHF1YWRbNF07CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleAogICAgIC8vIElmIHRoZSBib3JkZXIgbWF0Y2hlcyBib3RoIG9mIGl0cyBhZGph
Y2VudCBzaWRlcywgZG9uJ3QgYW50aS1hbGlhcyB0aGUgY2xpcCwgYW5kCiAgICAgLy8gaWYgbmVp
dGhlciBzaWRlIG1hdGNoZXMsIGFudGktYWxpYXMgdGhlIGNsaXAuCiAgICAgaWYgKGZpcnN0RWRn
ZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0
Y2hlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMDQsNyArMjAwNCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZmlyc3RRdWFkWzFdID0gcXVhZFsxXTsKICAgICBm
aXJzdFF1YWRbMl0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9hdFBv
aW50KHF1YWRbM10ueCgpLCBxdWFkWzJdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMl0ueCgpLCBx
dWFkWzNdLnkoKSk7CiAgICAgZmlyc3RRdWFkWzNdID0gcXVhZFszXTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1hdGNoZXMp
OworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBmaXJzdFF1YWQsICFm
aXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0UG9pbnQgc2Vjb25kUXVhZFs0XTsKICAgICBz
ZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKQEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4CiAgICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRbMl07CiAgICAgc2Vjb25kUXVh
ZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNlY29uZCBz
aWRlLgotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVh
ZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcENvbnZleFBv
bHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0KIAogc3RhdGljIExh
eW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3VuZGVkUmVj
dCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBzaWRlKQpA
QCAtMjEyMiwxMSArMjEyMiwxMSBAQCBzdGF0aWMgUm91bmRlZFJlY3QgY2FsY3VsYXRlQWRqdXN0
ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5lckJvcmRlciwgQgogICAgIHJldHVy
biBSb3VuZGVkUmVjdChuZXdSZWN0LCBuZXdSYWRpaSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
bGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLAogICAgIEJveFNpZGUgc2lkZSwgY29uc3QgY2xhc3MgQm9yZGVyRWRn
ZSBlZGdlc1tdKQogewotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChjYWxjdWxhdGVTaWRlUmVj
dEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdlcywgc2lkZSkpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2FsY3VsYXRlQWRq
dXN0ZWRJbm5lckJvcmRlcihpbm5lckJvcmRlciwgc2lkZSkpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdl
cywgc2lkZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRl
KSkpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJPYnNjdXJlc0JhY2tn
cm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25zdApAQCAtMjIzMCw4
ICsyMjMwLDggQEAgc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5I
b2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQKIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNoYWRvd1N0eWxlIHNo
YWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBib3JkZXItaW1hZ2UuICBX
b3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWltYWdlIGFzIGEgbWFzay4KLSAgICBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUuYm94U2hhZG93KCkpCisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gaW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUm91
bmRlZFJlY3QgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHN0eWxlLmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKQpAQCAtMjI2OCw4ICsyMjY4LDggQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRSZWMKICAgICAgICAgICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QuaW5mbGF0ZShzaGFk
b3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRTaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKIAotICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CisgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CiAKICAgICAgICAgICAgIC8vIE1vdmUgdGhl
IGZpbGwganVzdCBvdXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcgMSBwaXhlbCBzZXBhcmF0aW9uIHNv
IHRoYXQgdGhlIGZpbGwgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGJsZWVkIGluIChkdWUgdG8g
YW50aWFsaWFzaW5nKSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2Zvcm1lZC4KQEAgLTIyNzgsOSAr
MjI3OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICBmaWxsUmVjdC5t
b3ZlKGV4dHJhT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAgICAgRmxvYXRSb3VuZGVk
UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFp
bnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBw
aXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9y
UGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI5MiwxOCArMjI5MiwxOCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0Lmlu
ZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKC0xKSk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQpOwogCiAgICAg
ICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5mbHVlbmNlUmVjdChMYXlvdXRSZWN0KHBpeGVsU25h
cHBlZFNoYWRvd1JlY3QpLCBib3JkZXIucmFkaWkoKSk7CiAgICAgICAgICAgICAgICAgaW5mbHVl
bmNlUmVjdC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJl
YWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5j
ZVJlY3QsIGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxs
UmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0UmFkaWkoKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xv
cjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5uZWNl
c3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKQEAgLTIz
MTMsMTQgKzIzMTMsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAg
ICBpZiAoaGFzT3BhcXVlQmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogVGhlIGZ1bmN0aW9uIHRvIGRlY2lkZSBvbiB0aGUgcG9saWN5IGJhc2VkIG9uIHRoZSB0cmFu
c2Zvcm0gc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGNoZWNrIGlzIHJpZ2h0LiBXaGF0IGFib3V0
IGludGVncmFsIHNjYWxlIGZhY3RvcnM/Ci0gICAgICAgICAgICAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICAgICAgICAgICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm0uYSgpICE9IDEgfHwgKHRyYW5zZm9ybS5kKCkgIT0gMSAm
JiB0cmFuc2Zvcm0uZCgpICE9IC0xKSB8fCB0cmFuc2Zvcm0uYigpIHx8IHRyYW5zZm9ybS5jKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0LmluZmxhdGUoTGF5b3V0VW5p
dDo6ZnJvbVBpeGVsKC0xKS50b0Zsb2F0KCkpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6
OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxl
LmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzMwLDkgKzIzMzAsOSBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3Qs
IHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBzaGFkb3dDb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgp
LCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSwgc2hhZG93Q29s
b3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAKQEAgLTIzNTcsMjUgKzIzNTcsMjUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRS
ZWMKICAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRPdXRlclJlY3QgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKExheW91dFJlY3QocGl4ZWxT
bmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hhZG93U3By
ZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9h
dFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlID0gRmxvYXRSb3VuZGVkUmVjdChw
aXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yYWRpaSgpKTsKIAot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0
KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAg
ICBQYXRoIHBhdGg7CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRCb3JkZXJSZWN0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBhdGgpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChwYXRoKTsKICAgICAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRSb3VuZGVkSG9sZS5zaHJpbmtSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRCb3Jk
ZXJSZWN0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBl
ZEJvcmRlclJlY3QucmVjdCgpKTsKIAogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgy
ICogcm91bmRUb0ludChwYWludFJlY3Qud2lkdGgoKSkgKyBzdGQ6Om1heCgwLCBzaGFkb3dPZmZz
ZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAtIDIgKiBzaGFkb3dTcHJlYWQgKyAx
LCAwKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9mZnNldC53aWR0aCgp
LCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShl
eHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBz
aGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAgICAgIGlmIChzaGFkb3ctPmlz
V2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1Jh
ZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4
ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFwcGVkT3V0
ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5jb2xvclNw
YWNlKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQ4NCwxMSArMjQ4NCwxMSBAQCBMYXlv
dXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVu
dChMYXlvdXRVbml0IHdpZHRoLAogICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IExheW91dFJlY3QoeCwgeSwgY2FyZXRXaWR0aCwgaGVpZ2h0KSA6IExh
eW91dFJlY3QoeSwgeCwgaGVpZ2h0LCBjYXJldFdpZHRoKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBub3Qg
YW50aWFsaWFzIHdoZW4gc2NhbGVkIGJ5IGFuIGludGVncmFsIHZhbHVlLAogICAgIC8vIGFuZCB3
ZSBtYXkgd2FudCB0byBhbnRpYWxpYXMgd2hlbiB0cmFuc2xhdGVkIGJ5IGEgbm9uLWludGVncmFs
IHZhbHVlLgotICAgIHJldHVybiAhY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKTsKKyAgICByZXR1cm4gIWNvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0
eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGMyMjhhNDg1ZWUzNWZjOTgyMzc3
MThjZTljN2QzOTQwMjE0ZDExNTguLjU4ODA1ZTA4YzI4MjFlNGZkYjZjOGM0OTkyNWMxOTdiOWY2
MjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZEJlY2FtZU5vbklubGluZShSZW5kZXJFbGVtZW50JikgeyB9CiAKICAgICB2b2lkIHBhaW50Qm9y
ZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UgPSB0cnVlKTsKLSAgICBib29sIHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTmluZVBpZWNl
SW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGJv
b2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBT
aGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gq
ID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9i
amVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5k
Q29sb3JVc2UpOwogCkBAIC0yNTEsMTYgKzI1MSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUm91bmRl
ZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb25z
dCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3Q7CiAgICAg
TGF5b3V0UmVjdCBib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGlj
c0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CisgICAg
Ym9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSosIGNv
bnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24oUmVuZGVy
Qm94TW9kZWxPYmplY3QqKTsKIAogICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RGb3JFbXB0
eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0KTsK
IAotICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCop
OworICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCYp
OwogCi0gICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpOwor
ICAgIHN0YXRpYyB2b2lkIGNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGNsaXBSZWN0KTsKIAogICAg
IGJvb2wgaGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25z
dDsKIApAQCAtMzA3LDE4ICszMDcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIGZpeGVk
QmFja2dyb3VuZFBhaW50c0luTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCisgICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29s
IHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElu
bmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IFJvdW5k
ZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgQm9yZGVyRWRnZVtdKTsKLSAgICB2b2lkIHBhaW50T25l
Qm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAor
ICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25z
dCBCb3JkZXJFZGdlW10pOworICAgIHZvaWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRq
YWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAgICAgICBjb25zdCBQYXRoKiwgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciogb3Zl
cnJpZGVDb2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNp
ZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IElu
dFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCisgICAgdm9pZCBwYWludFRyYW5zbHVjZW50
Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBS
b3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwg
Y29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKICAgICAgICAgY29uc3QgQm9y
ZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBi
b29sIGFudGlhbGlhcyA9IGZhbHNlKTsKLSAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2b2lkIHBhaW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAg
ICAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3QgQm9yZGVy
RWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwKICAgICAg
ICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9
IG51bGxwdHIpOwotICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKKyAg
ICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0
UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGZsb2F0IHRo
aWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciosIGNvbnN0
IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IDVlZWY3
NjI1Mjk0MDU5Y2JiMDk3ZTEwZmY5ZDk0ZDhkNTg3ZWJiNzAuLmI1M2YyYWY0ZmVlNWRiZjFmMzkw
OGQ4NDIzYjQzZWE5NTQxNTI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHZvaWQgUmVuZGVy
RGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNv
bGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
LjBmKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwogCiAgICAgYm94T3JpZ2luLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZmlsbFBhdGgoZ2V0UGF0aChib3hPcmlnaW4pKTsKIH0KIAogYm9vbCBSZW5kZXJEZXRh
aWxzTWFya2VyOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IDI1ODIwNGUwYjBiMGJhMDVlNTRjZGNlNDc3NDM2MjgzNTg2Y2U2
MjkuLjBlMTc2YWQxMTUxZmNiZjNhOGNiNThmMDc5YjY2M2MzNGJiNGI0NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTIwNDEsMTcgKzIwNDEsMTcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1Jp
bmdSZWN0cywgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5wYWludENvbnRhaW5lcik7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCB0aGVtZSgpLnBsYXRmb3JtRm9jdXNSaW5n
V2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+Zm9jdXND
b250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKSwgbmVlZHNSZXBhaW50KTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRoZW1lKCku
cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50
KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLCBuZWVk
c1JlcGFpbnQpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIGRvY3VtZW50KCkucGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwog
I2Vsc2UKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0
cywgc3R5bGUub3V0bGluZVdpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgc3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBzdHlsZS5vdXRsaW5l
V2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICNlbmRpZgogfQogCiB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVj
dCYgcGFpbnRSZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0g
KnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAzMTVkYzE0NWRkZmI4NTAxNDVj
YTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0Li4yYjFmMTY1NWQ5OTY0NmEwZmQwNTAxZWVjNWY4MjgzYjcy
NjJkNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAog
ICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIExheW91dFNpemUgY29u
dGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKICAgICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRp
b24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAgY29udGVudExvY2F0aW9uLm1vdmUo
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25h
cHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAjaWYgRU5BQkxF
KENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldElt
YWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgot
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTI2Miw5ICsyNjIsOSBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50TwogICAgIFJlbmRlcldpZGdldDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9m
ZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpZGVSZWN0KQorc3RhdGljIHZvaWQg
ZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGluc2lkZVJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAKICAgICBGbG9hdFJlY3QgcmVjdChpbnNpZGVSZWN0KTsKICAgICByZWN0
LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dQYWRkaW5nKTsKQEAgLTI3Miw5ICsyNzIsOSBAQCBz
dGF0aWMgdm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgaW5zaQogICAgIEZsb2F0UG9pbnQgY2VudGVyKHJlY3QuY2VudGVy
KCkpOwogICAgIEZsb2F0UG9pbnQgYXJyb3dUaXAocmVjdC5tYXhYKCksIGNlbnRlci55KCkpOwog
Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNvbnRleHQtPnNldExp
bmVDYXAoUm91bmRDYXApOwotICAgIGNvbnRleHQtPnNldExpbmVKb2luKFJvdW5kSm9pbik7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zZXRMaW5lQ2Fw
KFJvdW5kQ2FwKTsKKyAgICBjb250ZXh0LnNldExpbmVKb2luKFJvdW5kSm9pbik7CiAKICAgICBQ
YXRoIHBhdGg7CiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChyZWN0LngoKSwgY2VudGVyLnko
KSkpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAgICAgcGF0
aC5hZGRMaW5lVG8oRmxvYXRQb2ludChjZW50ZXIueCgpLCByZWN0LnkoKSkpOwogICAgIHBhdGgu
bW92ZVRvKGFycm93VGlwKTsKICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNlbnRlci54
KCksIHJlY3QubWF4WSgpKSk7Ci0gICAgY29udGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBj
b250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKQEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAog
ICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGNvbnRl
bnRSZWN0OwpAQCAtMzEwLDM2ICszMTAsMzYgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBQYXRoIGJhY2tncm91bmQ7CiAgICAgYmFja2dyb3VuZC5hZGRSb3VuZGVkUmVjdChpbmRpY2F0
b3JSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMsIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJl
Y3QpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKSA6
IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OwotICAgIGNvbnRleHQtPmZpbGxQYXRoKGJhY2tncm91bmQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LmNsaXAoY29udGVu
dFJlY3QpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcigp
IDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgY29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kKTsKIAogICAgIFBhdGggc3Ryb2tl
UGF0aDsKICAgICBGbG9hdFJlY3Qgc3Ryb2tlUmVjdChpbmRpY2F0b3JSZWN0KTsKICAgICBzdHJv
a2VSZWN0LmluZmxhdGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChzdHJva2VS
ZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxLCByZXBs
YWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygyKTsKLSAgICBjb250ZXh0
LT5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5h
dmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zdHJva2VQYXRoKHN0
cm9rZVBhdGgpOwogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5m
b250TWV0cmljcygpOwogICAgIGZsb2F0IGxhYmVsWCA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRS
ZWN0LmxvY2F0aW9uKCkueCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0VGV4dE1h
cmdpbik7CiAgICAgZmxvYXQgbGFiZWxZID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9j
YXRpb24oKS55KCkgKyAocmVwbGFjZW1lbnRUZXh0UmVjdC5zaXplKCkuaGVpZ2h0KCkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyICsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyByZXBsYWNlbWVu
dFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4pOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29u
dGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkp
OworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCBydW4sIEZs
b2F0UG9pbnQobGFiZWxYLCBsYWJlbFkpKTsKIAogICAgIGlmIChzaG91bGRVbmF2YWlsYWJsZVBs
dWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKSkgewogICAgICAgICBhcnJvd1JlY3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJvd0NpcmNs
ZVBhZGRpbmcpOwogCi0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4w
KTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbEVsbGlwc2UoYXJy
b3dSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMCk7Cisg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3Qp
OwogCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVh
cik7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFy
KTsKICAgICAgICAgZHJhd1JlcGxhY2VtZW50QXJyb3coY29udGV4dCwgYXJyb3dSZWN0KTsKLSAg
ICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgY29udGV4dC5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggZDVmZmY5MjAzMjM1NDE4NDgyNWIxMjA0ODYx
ZDZhNjQyZTY1ZDA3ZS4uMDk1MmZkYTM0Yjg4Mjg5MTRjMzlmYWM0YjI4OTk0M2JiMjA0ODk3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICAgICAgcGFpbnRSZWN0LnNl
dFgocGFpbnRSZWN0LngoKSArIHhPZmYpOwogICAgIH0KIAotICAgIGlmICghYm94U2hhZG93U2hv
dWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBkZXRlcm1pbmVC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpKSkKKyAgICBpZiAoIWJv
eFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChwYWludFJlY3QubG9jYXRpb24oKSwg
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KCkpKSkK
ICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIE5v
cm1hbCk7CiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmJhY2tncm91
bmRMYXllcnMoKSwgcGFpbnRSZWN0KTsKICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBh
aW50UmVjdCwgc3R5bGUoKSwgSW5zZXQpOwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgUmVuZGVy
RmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBDcmVhdGUgYSBjbGlw
cGluZyByZWdpb24gYXJvdW5kIHRoZSBsZWdlbmQgYW5kIHBhaW50IHRoZSBib3JkZXIgYXMgbm9y
bWFsCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNz
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihn
cmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gd29yayB3aXRoICJy
bCIgYW5kICJidCIgYmxvY2sgZmxvdyBkaXJlY3Rpb25zLiAgSW4gdGhvc2UKICAgICAvLyBjYXNl
cyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMg
cmVzcGVjdGl2ZWx5LgpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
CiAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0eWxlKCku
Ym9yZGVyTGVmdFdpZHRoKCksIGxlZ2VuZC0+d2lkdGgoKSkpOwogICAgICAgICBjbGlwUmVjdC5z
ZXRIZWlnaHQobGVnZW5kLT5oZWlnaHQoKSk7CiAgICAgfQotICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcE91dChzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsK
IAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCmluZGV4IGM3YWM2NzQ2YTI3NWE5OGVjODZkMDk5OGU2NzZkNmI1YWY1MWFjY2EuLjY0ZWNh
Y2IwNmVjZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTIwLDE0
ICsxMjAsMTQgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIC8vIFB1c2ggYSBjbGlwLgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwgZmFsc2UpOwogICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMpIHsKICAgICAgICAgSW50UmVj
dCBjbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkg
KyBib3JkZXJMZWZ0KCksIHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpLCBo
ZWlnaHQoKSAtIGJvcmRlckJvdHRvbSgpIC0gYm9yZGVyVG9wKCkgKyBidXR0b25TaGFkb3dIZWln
aHQpKTsKICAgICAgICAgaWYgKGNsaXBSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBS
ZWN0KTsKICAgICB9CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKSB7CkBAIC0xNjMsMTAgKzE2MywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJhc2VsaW5lUG9zaXRpb24oQWxwaGFi
ZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRoZSBmaWxlbmFtZQotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJv
dW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBJbnRQb2ludChyb3VuZFRvSW50
KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbnB1
dEVsZW1lbnQoKS5pY29uKCkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0aGUg
aWNvbiBzaG91bGQgYmUgcGxhY2VkCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW4KICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAgICAvLyBEcmF3IHRoZSBm
aWxlIGljb24KLSAgICAgICAgICAgIGlucHV0RWxlbWVudCgpLmljb24oKS0+cGFpbnQoKnBhaW50
SW5mby5jb250ZXh0LCBJbnRSZWN0KHJvdW5kVG9JbnQoaWNvblgpLCByb3VuZFRvSW50KGljb25Z
KSwgaWNvbldpZHRoLCBpY29uSGVpZ2h0KSk7CisgICAgICAgICAgICBpbnB1dEVsZW1lbnQoKS5p
Y29uKCktPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIEludFJlY3Qocm91bmRUb0ludChpY29u
WCksIHJvdW5kVG9JbnQoaWNvblkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKICNlbmRpZgog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHAKaW5kZXggMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYwNC4uMmY4
MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4ZDIyZmE4MGE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MCwxNSArOTAsMTUgQEAgdm9pZCBS
ZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0aGluZyBj
bGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1lZXQgYXQgYSBqb2lu
LgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgpLmNv
bG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVs
ZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3Bh
Y2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCku
aGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNlKTsKICAg
ICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3Vn
aCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0
aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3Qud2lkdGgo
KSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5s
b2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50
KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdo
dCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4
dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSgxLCBoZWln
aHQoKSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9y
ZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigp
LCBjb2xvclNwYWNlKTsKICAgICB9CiB9CiAKQEAgLTExMCwxNSArMTEwLDE1IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OnBhaW50Um93Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiBiCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBzb21ldGhpbmcgY2xl
dmVyIHdoZW4gYm9yZGVycyBmcm9tIGRpc3RpbmN0IGZyYW1lc2V0cyBtZWV0IGF0IGEgam9pbi4K
ICAgICAKICAgICAvLyBGaWxsIGZpcnN0LgotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xv
clNwYWNlKCk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVt
ZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNl
KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhh
c0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JTcGFjZSk7CiAKICAg
ICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29t
IHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmls
bCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3QuaGVpZ2h0KCkgPj0g
MykgewotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRp
b24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9y
U3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRl
clJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwg
Ym9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwg
Ym9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0LngoKSwgYm9yZGVyUmVjdC5tYXhZKCkg
LSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNw
YWNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1M
Q2FudmFzLmNwcAppbmRleCA1YTY1MGFhYzlkZGI0OTc3N2I2M2YzYmQ4ODAzZjA2ZTVlYzZiYzE2
Li5jNjczZDgwZWFkOTgzNjQ3YWZlYjkzMWY0M2Q3NGQ0ZDBmZTViN2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IGJvb2wgUmVuZGVySFRNTENhbnZhczo6cmVxdWlyZXNMYXllcigpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0ID0gdGhp
cy0+Y29udGVudEJveFJlY3QoKTsKICAgICBjb250ZW50Qm94UmVjdC5tb3ZlQnkocGFpbnRPZmZz
ZXQpOwpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogCiAgICAgLy8g
Tm90IGFsbG93ZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnRlbnQgYm94LgogICAgIGJvb2wgY2xpcCA9
ICFjb250ZW50Qm94UmVjdC5jb250YWlucyhyZXBsYWNlZENvbnRlbnRSZWN0KTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBjbGlw
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcChzbmFwcGVkSW50UmVjdChjb250ZW50Qm94UmVjdCkpOwogCiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk4NGQ1N2NhYjdmMzA3ZDk5ZjhmZTAwMDYyNzE3MTA2MjEx
MDNiZC4uNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBMYXlvdXRVbml0IGxlZnRQYWQgPSBwYWRkaW5nTGVm
dCgpOwogICAgIExheW91dFVuaXQgdG9wUGFkID0gcGFkZGluZ1RvcCgpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZSgpLnBhZ2UoKTsKQEAgLTM5MSwxMCArMzkxLDEwIEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gTGF5b3V0VW5p
dCgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgICAgICAgICAvLyBEcmF3IGFuIG91dGxp
bmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgotICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0
UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdo
dCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOworICAgICAgICAgICAgY29udGV4
dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJvcmRlciArIGxlZnRQ
YWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dpZHRoLCBjSGVpZ2h0
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAgICAgICAgIGJvb2wg
ZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VP
ZmZzZXQ7CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lm
IEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExh
eW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFn
ZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
bV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFz
Y2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwpAQCAtNDQzLDkgKzQ0Myw5IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0ZXh0V2lkdGggPSBm
b250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgICAgIGlmIChlcnJvclBpY3R1cmVEcmF3
bikgewogICAgICAgICAgICAgICAgICAgICBpZiAodXNhYmxlV2lkdGggPj0gdGV4dFdpZHRoICYm
IGZvbnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0LmhlaWdodCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRl
eHRSdW4sIGFsdFRleHRPZmZzZXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNhYmxl
V2lkdGggPj0gdGV4dFdpZHRoICYmIHVzYWJsZUhlaWdodCA+PSBmb250TWV0cmljcy5oZWlnaHQo
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwg
YWx0VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYg
Y0hlaWdodCA+IDApIHsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QgPSB0aGlzLT5yZXBsYWNl
ZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7CiAgICAgICAgIHJlcGxhY2VkQ29udGVudFJl
Y3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICAgICAgYm9vbCBjbGlwID0gIWNvbnRlbnRCb3hS
ZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXApOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcCk7CiAgICAgICAgIGlm
IChjbGlwKQotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50Qm94UmVjdCk7CisgICAg
ICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudEJveFJlY3QpOwogCiAgICAgICAgIHBhaW50SW50
b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0
LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lk
IFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJ
bmZvKQogICAgIGlmIChkb2N1bWVudCgpLnByaW50aW5nKCkgfHwgIWZyYW1lKCkuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAo
cGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhcGFpbnRJbmZvLmNvbnRl
eHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8uY29udGV4dCgpLnVwZGF0aW5nQ29udHJv
bFRpbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50
ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludElu
Zm8pCiAgICAgaWYgKCFvdXRsaW5lV2lkdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhaW50
SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIG91dGxpbmVXaWR0aCwKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdpZHRoLAogICAgICAg
ICBhcmVhRWxlbWVudFN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksCiAgICAgICAgIGFyZWFFbGVtZW50
U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwog
I2VuZGlmCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6YXJlYUVsZW1lbnRG
b2N1c0NoYW5nZWQoSFRNTEFyZWFFbGVtZW50KiBlbGVtZW50KQogICAgIHJlcGFpbnQoKTsKIH0K
IAotdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAg
ICAgaWYgKCFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8fCBpbWFnZVJlc291cmNlKCkuZXJy
b3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8IHJlY3QuaGVpZ2h0KCkgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlv
bigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZVJlc291cmNlKCkuaW1h
Z2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCksIHJlY3QsCisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBy
ZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDkwZjNl
MjZiZTQ4MTIwOWJjZmY2Zjg4NzVjMTRlZmQ4NzNiNjYzZDQuLjY3ZGVkMTc2ZDZhMzE3YjZkYmM0
ZjYxYmNmNTgxYzQzYjYxZGU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFn
ZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNDlkNDUyMDVjMGE5YzhiMWQ2MTQ1MDI1NjJlNTViZjBhODM0NjNjNS4uZmU4OGU3NmM4ZTEx
OWJjMjAwZDVkZTgzY2QxZWM1YTBmM2U4YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQgUmVuZGVySW5saW5l
OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mCiAgICAgaWYgKGhhc091dGxpbmVBbm5vdGF0aW9uKCkgJiYgIXN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlSXNBdXRvKCkgJiYgIXRoZW1lKCkuc3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1Vz
ZSkpCiAgICAgICAgIGFkZFBERlVSTFJlY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owot
ICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgaWYg
KGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlKCkgPT0gQk5PTkUpCkBAIC0xNTgxLDcgKzE1ODEsNyBAQCB2b2lkIFJlbmRlcklu
bGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZgogICAgIENvbG9yIG91dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2UudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKICAgICBib29sIHVzZVRyYW5z
cGFyZW5jeUxheWVyID0gb3V0bGluZUNvbG9yLmhhc0FscGhhKCk7CiAgICAgaWYgKHVzZVRyYW5z
cGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgIG91dGxpbmVD
b2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0bGluZUNvbG9yLmdyZWVuKCksIG91
dGxpbmVDb2xvci5ibHVlKCkpOwogICAgIH0KIApAQCAtMTU4OSwxMCArMTU4OSwxMCBAQCB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludE91dGxpbmVGb3JMaW5lKGdyYXBoaWNz
Q29udGV4dCwgcGFpbnRPZmZzZXQsIHJlY3RzLmF0KGkgLSAxKSwgcmVjdHMuYXQoaSksIHJlY3Rz
LmF0KGkgKyAxKSwgb3V0bGluZUNvbG9yKTsKIAogICAgIGlmICh1c2VUcmFuc3BhcmVuY3lMYXll
cikKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKK3ZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBsYXN0bGluZSwgY29uc3QgTGF5b3V0
UmVjdCYgdGhpc2xpbmUsIGNvbnN0IExheW91dFJlY3QmIG5leHRsaW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3Igb3V0bGluZUNvbG9yKQogewpA
QCAtMTYxNCw3ICsxNjE0LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZE5leHRMaW5lID0gc25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsg
bmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAgICAKICAgICAvLyBsZWZ0
IGVkZ2UKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBGbG9hdFJlY3QoRmxvYXRQ
b2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICBwaXhlbFNu
YXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS54KCkgPCBsYXN0
bGluZS54KCkgfHwgKGxhc3RsaW5lLm1heFgoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG91dGxp
bmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpLApA
QCAtMTYyNiw3ICsxNjI2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgYW50
aWFsaWFzKTsKICAgICAKICAgICAvLyByaWdodCBlZGdlCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRl
KCpncmFwaGljc0NvbnRleHQsCisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSwK
ICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIChsYXN0bGluZS5pc0VtcHR5KCkgfHwgbGFz
dGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgpIHx8ICh0aGlzbGluZS5tYXhYKCkgLSAxKSA8
PSBsYXN0bGluZS54KCkgPyBvdXRsaW5lV2lkdGggOiAwKSksCiAgICAgICAgIEZsb2F0UG9pbnQo
cGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2MzgsNyArMTYzOCw3
IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAgIGFudGlhbGlhcyk7CiAgICAgLy8g
dXBwZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkpCi0gICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9p
bnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAgIHBpeGVs
U25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgpLAogICAgICAgICAgICAgRmxvYXRQb2ludChz
dGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAobGFzdGxpbmUu
aXNFbXB0eSgpID8gMTAwMDAwMCA6IHBpeGVsU25hcHBlZExhc3RMaW5lLngoKSkpLApAQCAtMTY0
OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFudGlh
bGlhcyk7CiAgICAgCiAgICAgaWYgKGxhc3RsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgoKSkK
LSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3Qo
RmxvYXRQb2ludChzdGQ6Om1heChsYXN0bGluZS5pc0VtcHR5KCkgPyAtMTAwMDAwMCA6IHBpeGVs
U25hcHBlZExhc3RMaW5lLm1heFgoKSwgcGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0
aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gb3V0bGluZVdpZHRoKSwKICAg
ICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0
aCwKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAg
ICAgICBvdXRsaW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUueCgpID09
IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0Nv
bnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGlu
ZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCks
CiAgICAgICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5l
V2lkdGgsCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogCiAg
ICAgLy8gbG93ZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBuZXh0bGluZS54KCkpCi0g
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZs
b2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAg
IHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChzdGQ6Om1p
bihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAhbmV4dGxpbmUuaXNFbXB0
eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUueCgpICsgMSA6IDEwMDAwMDApLApAQCAtMTY4Miw3
ICsxNjgyLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFudGlhbGlh
cyk7CiAgICAgCiAgICAgaWYgKG5leHRsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgoKSkKLSAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxv
YXRQb2ludChzdGQ6Om1heCghbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExp
bmUubWF4WCgpIDogLTEwMDAwMDAsIHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgp
LAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9h
dFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCkBAIC0xNjkyLDcg
KzE2OTIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgb3V0bGluZVdp
ZHRoLCBhbnRpYWxpYXMpOwogCiAgICAgaWYgKHRoaXNsaW5lLngoKSA9PSB0aGlzbGluZS5tYXhY
KCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAg
ICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChw
aXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCmluZGV4IDkyYmNlYjViNmVlNDcyMTlkNzQ5YTU2MThjYmE4MTQ3
MzBiMjVkZTUuLjQ1MGJiMGY5OTU2ODZmMWVlZmYxM2RlNWM2ZTFkNDc3ZDBhNDg5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+IGNsb25lKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwgY29uc3QgTGF5b3V0UmVj
dCYgdGhpc0xpbmUsCisgICAgdm9pZCBwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgcHJldkxpbmUsIGNvbnN0
IExheW91dFJlY3QmIHRoaXNMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMYXlvdXRSZWN0JiBuZXh0TGluZSwgY29uc3QgQ29sb3IpOwogICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdkZWRlNzFjYzRk
NDM0MTRlODNhOWY4YTcxNzU5NjI5YWI3ZGFkNzMuLjc0MzA5ZmRjMjgxZmY4MmE2MWM5NTUyMWU3
NzA2ODIyYzg1ZjRjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMTc4Nyw5ICsxNzg3LDkgQEAgc3RhdGljIExheW91dFJlY3QgcGFpbnRpbmdFeHRlbnQo
Y29uc3QgUmVuZGVyTGF5ZXImIGN1cnJlbnRMYXllciwgY29uc3QgUmVuZGVyTGEKICAgICByZXR1
cm4gaW50ZXJzZWN0aW9uKHRyYW5zcGFyZW5jeUNsaXBCb3goY3VycmVudExheWVyLCByb290TGF5
ZXIsIFBhaW50aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCwgUm9vdE9mVHJhbnNwYXJlbmN5Q2xpcEJv
eCwgcGFpbnRCZWhhdmlvciksIHBhaW50RGlydHlSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0
eVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQorICAgIGlmIChjb250ZXh0LnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFp
bnRCZWhhdmlvcikgJiYgbV91c2VkVHJhbnNwYXJlbmN5KSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yID0gdHJhbnNwYXJlbnRQYWludGluZ0FuY2VzdG9yKCk7
CkBAIC0xNzk4LDIyICsxNzk4LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQCiAgICAgCiAg
ICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ip
KSB7CiAgICAgICAgIG1fdXNlZFRyYW5zcGFyZW5jeSA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIExheW91dFJlY3QgYWRq
dXN0ZWRDbGlwUmVjdCA9IHBhaW50aW5nRXh0ZW50KCp0aGlzLCBwYWludGluZ0luZm8ucm9vdExh
eWVyLCBkaXJ0eVJlY3QsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAgICAgYWRq
dXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7CiAg
ICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRDbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpOwotICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsK
KyAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsKIAogI2lmIEVOQUJM
RShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3NpdGVPcGVy
YXRpb24oKSwgYmxlbmRNb2RlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKCkpOwogI2Vu
ZGlmCiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5kZXJlcigp
Lm9wYWNpdHkoKSk7CisgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5k
ZXJlcigpLm9wYWNpdHkoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAg
ICBpZiAoaGFzQmxlbmRNb2RlKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7
CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBv
c2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwogI2VuZGlmCiAKICNpZmRlZiBSRVZF
QUxfVFJBTlNQQVJFTkNZX0xBWUVSUwpAQCAtMzU0MSw3ICszNTQxLDcgQEAgYm9vbCBSZW5kZXJM
YXllcjo6c2hvd3NPdmVyZmxvd0NvbnRyb2xzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBh
aW50aW5nT3ZlcmxheUNvbnRyb2xzKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHdl
IGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
KQpAQCAtMzYwNSw3ICszNjA1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0Nv
bnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQKICAgICBwYWlu
dFJlc2l6ZXIoY29udGV4dCwgYWRqdXN0ZWRQYWludE9mZnNldCwgZGFtYWdlUmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NF
UlQoYm94KTsKQEAgLTM2MTUsNyArMzYxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Ny
b2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAg
ICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNv
bnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxDb3Ju
ZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzYyOCwxMCArMzYyOCwxMCBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQg
d2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9sbGJhcnMsIHNpbmNlIHdlIG5lZWQKICAgICAv
LyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAgICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFy
cygpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJv
eC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGFic1Jl
Y3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KQordm9pZCBSZW5kZXJM
YXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCiB7CiAgICAgUmVmUHRyPEltYWdl
PiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7CkBA
IC0zNjQ3LDE4ICszNjQ3LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6
ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgfQogCiAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xs
YmFyT25Mb2dpY2FsTGVmdCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAg
Y29udGV4dC0+dHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNvcm5lclJlc2l6ZXJT
aXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJDb3JuZXJSZWN0Lmhl
aWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShy
ZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKLSAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAgICAgY29udGV4
dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNpemUud2lk
dGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVpZ2h0KCkg
LSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKC0xLjAsIDEuMCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3Ju
ZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKKyAgICAgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhY
TWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQtPmRy
YXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJ
bWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucmVzaXplKCkg
PT0gUkVTSVpFX05PTkUpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NzEsNyArMzY3MSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91dFBvaW50JiBwYWluCiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdl
UmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRy
b2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewog
ICAgICAgICB1cGRhdGVSZXNpemVyU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTM2ODYsMTQgKzM2ODYsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAvLyBEcmF3
IGEgZnJhbWUgYXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3JleSBsaW5lKSBpZiB0aGVyZSBhcmUg
YW55IHNjcm9sbGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlwcGluZyB3aWxsIGV4Y2x1ZGUgdGhl
IHJpZ2h0IGFuZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFtZS4KICAgICBpZiAoIWhhc092ZXJs
YXlTY3JvbGxiYXJzKCkgJiYgKG1fdkJhciB8fCBtX2hCYXIpKSB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQt
PmNsaXAoYWJzUmVjdCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAgICAgICBM
YXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5z
ZXRTaXplKExheW91dFNpemUobGFyZ2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9t
UGl4ZWwoMSksIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgx
KSkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywg
MjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPmRy
YXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxhcmdlckNvcm5lcikpOworICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2Vy
Q29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNzYxLDcgKzM3NjEsNyBAQCBib29sIFJlbmRlckxh
eWVyOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKGRpcmVjdGlvbiwg
Z3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNv
bnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1
YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAg
ICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKQEAgLTM3NzIs
NyArMzc3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwKICAgICAgICAgd2lkZ2V0LT5zZXRP
dmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3Zl
cmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCog
c3VidHJlZVBhaW50Um9vdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdCkKIHsKICAgICBpZiAoIW1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKQogICAg
ICAgICByZXR1cm47CkBAIC0zNzk3LDE4ICszNzk3LDE4IEBAIHN0YXRpYyBib29sIGluQ29udGFp
bmluZ0Jsb2NrQ2hhaW4oUmVuZGVyTGF5ZXIqIHN0YXJ0TGF5ZXIsIFJlbmRlckxheWVyKiBlbmRM
YXllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0
KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0LCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1
bGUgcnVsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGlw
UmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSBydWxlKQogewogICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCk7CiAKICAgICBib29sIG5lZWRzQ2xpcHBpbmcgPSBjbGlwUmVjdC5yZWN0KCkgIT0g
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgIGlmIChuZWVkc0NsaXBwaW5nIHx8IGNs
aXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOworICAg
ICAgICBjb250ZXh0LnNhdmUoKTsKIAogICAgIGlmIChuZWVkc0NsaXBwaW5nKSB7CiAgICAgICAg
IExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBSZWN0LnJlY3QoKTsKICAgICAgICAg
YWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7
Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoc25hcFJlY3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENs
aXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICBjb250ZXh0LmNsaXAoc25hcFJl
Y3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwog
ICAgIH0KIAogICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAgLTM4MTks
NyArMzgxOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250CiAgICAgICAgICAgICBpZiAobGF5
ZXItPnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkuc3R5
bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSAmJiBpbkNvbnRhaW5pbmdCbG9ja0NoYWluKHRoaXMsIGxh
eWVyKSkgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IExh
eW91dFJlY3QodG9MYXlvdXRQb2ludChsYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yKHBhaW50aW5n
SW5mby5yb290TGF5ZXIpKSwgbGF5ZXItPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgYWRqdXN0
ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3QpLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihhZGp1c3RlZENsaXBSZWN0KS5waXhlbFNuYXBwZWRS
b3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXllciA9PSBwYWludGluZ0luZm8ucm9v
dExheWVyKQpAQCAtMzgyOCwxMCArMzgyOCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9S
ZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udAog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xpcFJl
Y3QmIGNsaXBSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xp
cFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChjbGlwUmVjdC5yZWN0KCkgIT0gcGFpbnREaXJ0
eVJlY3QgfHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250ZXh0LT5y
ZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBzdGF0aWMgdm9pZCBw
ZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBUZXN0UmVxdWVzdE1hcCYgb3ZlcmxhcFRlc3RSZXF1
ZXN0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyKQpAQCAtMzg3NSwxMiArMzg3NSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFpbnRGb3JG
aXhlZFJvb3RCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTAogICAg
IHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5pc1Jvb3QoKSAmJiAocGFpbnRGbGFncyAmIFJlbmRl
ckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpOwogfQogCi12b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRo
ZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBv
c2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2Ug
ZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRo
aXMgY2FzZS4KLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgfHwg
KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycykpCisgICAgICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkg
fHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycykpCiAgICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJUZW1w
b3JhcnlDbGlwUmVjdHM7CiAgICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50c0ludG9X
aW5kb3coKQogICAgICAgICAgICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRB
bmNlc3RvcigpCkBAIC0zOTY0LDcgKzM5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mCiAg
ICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCBwYWludGluZ0luZm8s
IHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNB
bmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJl
bmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRM
YXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIo
KSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTM5ODIsOSArMzk4
Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKGNv
bnRleHQsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKIH0KIAotYm9vbCBSZW5kZXJM
YXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKQorYm9vbCBSZW5kZXJMYXllcjo6c2V0dXBGb250
U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBib29sIHNjcm9sbGluZ09uTWFpblRocmVhZCA9IHRydWU7CkBAIC00MDAyLDggKzQw
MDIsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGJvb2wmCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSByZW5k
ZXJlcigpLmZyYW1lKCkucGFnZSgpKQogICAgICAgICBpc1pvb21pbmcgPSAhcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkuaGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaWYgKHNjcm9sbGlu
Z09uTWFpblRocmVhZCB8fCBjb250ZW50c1Njcm9sbEJ5UGFpbnRpbmcgfHwgaXNab29taW5nKSB7
Ci0gICAgICAgIGRpZFF1YW50aXplRm9udHMgPSBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoKTsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKGZhbHNlKTsKKyAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQuc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKCk7CisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQwNzIsOSArNDA3Miw5IEBAIFBhdGggUmVuZGVyTGF5ZXI6OmNvbXB1
dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYK
ICAgICByZXR1cm4gUGF0aCgpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRo
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50
aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJv
b3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCitib29s
IFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpLmhhc0NsaXBQYXRo
KCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghcmVuZGVyZXIoKS5o
YXNDbGlwUGF0aCgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKSB7CkBAIC00
MDg4LDggKzQwODgsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgICAgICBXaW5kUnVs
ZSB3aW5kUnVsZTsKICAgICAgICAgTGF5b3V0U2l6ZSBwYWludGluZ09mZnNldEZyb21Sb290ID0g
TGF5b3V0U2l6ZShzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwob2Zmc2V0RnJvbVJvb3QgKyBwYWludGlu
Z0luZm8uc3VicGl4ZWxBY2N1bXVsYXRpb24sIExheW91dFBvaW50KCksIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIFBhdGggcGF0aCA9IGNvbXB1
dGVDbGlwUGF0aChwYWludGluZ09mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMsIHdp
bmRSdWxlKTsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlw
UGF0aChwYXRoLCB3aW5kUnVsZSk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBj
b250ZXh0LmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC00MDk4LDcgKzQwOTgsNyBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmdldEVsZW1lbnRC
eUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFnbWVudCgpKTsKICAgICAgICAgaWYg
KGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhUYWcpICYm
IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB1c2UgYSBzYWZlciBjYXN0IHN1Y2ggYXMgdG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcigp
LgotICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC0+c2F2ZSgp
IGFuZCByZXR1cm4gdHJ1ZSBzbyB3ZSByZXN0b3JlIHRoZSBjb250ZXh0PworICAgICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC5zYXZlKCkgYW5kIHJldHVybiB0cnVl
IHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5yZW5kZXJlcigpKS0+YXBwbHlDbGlwcGlu
Z1RvQ29udGV4dChyZW5kZXJlcigpLCByb290UmVsYXRpdmVCb3VuZHMsIHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCwgY29udGV4dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MTA2LDkgKzQx
MDYsOSBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwYWludEZsYWdzICYgUGFpbnRMYXllclBh
aW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpCkBAIC00MTI2LDcgKzQxMjYsNyBAQCBib29sIFJlbmRl
ckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFBhaW50TGF5ZXJGbAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3Qs
IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRz
Q29tcHV0ZWQpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJl
bmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJv
dW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7CiAgICAgaWYgKCFoYXNG
aWx0ZXJUaGF0SXNQYWludGluZyhjb250ZXh0LCBwYWludEZsYWdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00MTYzLDcgKzQxNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDbwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyOjph
cHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50ZXIsIEdy
YXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCitHcmFwaGljc0NvbnRleHQm
IFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZp
bHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCiB7
CiAgICAgQVNTRVJUKGZpbHRlclBhaW50ZXItPmhhc1N0YXJ0ZWRGaWx0ZXJFZmZlY3QoKSk7CiAg
ICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgY2xpcHBpbmcgKGllLiBvdmVyZmxvdzogaGlkZGVuKS4K
QEAgLTQxODUsNyArNDE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlWkluZGV4KFJl
bmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIqIHNlY29uZCkKIC8vIFRoZXNlIGxheWVycyBz
aG91bGQgbm90IGJlIHBhaW50ZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgb3RoZXIgZWxlbWVu
dHMgY29sbGVjdGVkIGluCiAvLyBuYW1lZCBmbG93cyAtIHJlZ2lvbnMgLT4gbmFtZWQgZmxvd3Mg
LSBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIGNsaXBwZWQgdG8gdGhlCiAvLyByZWdp
b25zIHZpZXdwb3J0Lgotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRG
bG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzKQogewogICAgIGlmICghaXNSb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDIwNiw3ICs0MjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0lu
TmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEwKICAgICAgICAgZml4
ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExh
eWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNT
RVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRh
bnQoKSk7CiAKQEAgLTQyNDgsMjQgKzQyNDgsMjUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZGlzYWJsZSBzdWJwaXhlbCBxdWFu
dGl6YXRpb24gZm9yIG92ZXJmbG93IGNsaXBzIG9yIHN1YmZyYW1lcyBvbmNlIHdlIHNjcm9sbCB0
aG9zZQogICAgIC8vIHRoaW5ncyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4KICAgICBib29sIGRp
ZFF1YW50aXplRm9udHMgPSB0cnVlOwotICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4ZWxRdWFu
dGl6YXRpb24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LCBkaWRRdWFu
dGl6ZUZvbnRzKTsKKyAgICBib29sIG5lZWRUb0FkanVzdFN1YnBpeGVsUXVhbnRpemF0aW9uID0g
c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24ob3JpZ2luYWxDb250ZXh0LCBkaWRRdWFudGl6
ZUZvbnRzKTsKIAogICAgIC8vIEFwcGx5IGNsaXAtcGF0aCB0byBjb250ZXh0LgogICAgIExheW91
dFNpemUgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IG9mZnNldEZyb21Sb290OwotICAgIGlm
IChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSAmJiAocmVuZGVyZXIoKS5o
YXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50Rmxh
Z3MpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgJiYg
KHJlbmRlcmVyKCkuaGFzQ2xpcFBhdGgoKSB8fCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhvcmln
aW5hbENvbnRleHQsIHBhaW50RmxhZ3MpKSkKICAgICAgICAgY29sdW1uQXdhcmVPZmZzZXRGcm9t
Um9vdCA9IHRvTGF5b3V0U2l6ZShjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9v
dExheWVyLCBMYXlvdXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1bW5zKSk7CiAKICAgICBib29sIGhh
c0NsaXBQYXRoID0gZmFsc2U7CiAgICAgaWYgKHNob3VsZEFwcGx5Q2xpcFBhdGgocGFpbnRpbmdJ
bmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpCi0gICAgICAgIGhhc0NsaXBQYXRo
ID0gc2V0dXBDbGlwUGF0aChjb250ZXh0LCBwYWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0
RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
OworICAgICAgICBoYXNDbGlwUGF0aCA9IHNldHVwQ2xpcFBhdGgob3JpZ2luYWxDb250ZXh0LCBw
YWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5k
cywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogCiAgICAgTGF5ZXJQYWludGluZ0luZm8g
bG9jYWxQYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCog
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0gY29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMo
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIGNvbHVtbkF3YXJlT2Zmc2V0
RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
OworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CisgICAg
R3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBvcmlnaW5hbENvbnRl
eHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBmaWx0
ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFp
bnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCBy
b290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgaWYgKGZpbHRlclBhaW50ZXIpIHsKICAg
ICAgICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXItPmZpbHRlckNvbnRleHQoKTsKLSAgICAgICAg
aWYgKGNvbnRleHQgIT0gdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFuc3BhcmVu
Y3kpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgIT0gJnRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCAm
JiBoYXZlVHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVy
IGFuZCB0cmFuc3BhcmVuY3ksIHdlIGhhdmUgdG8gZWFnZXJseSBzdGFydCBhIHRyYW5zcGFyZW5j
eSBsYXllciBoZXJlLCByYXRoZXIgdGhhbiByaXNrIGEgY2hpbGQgbGF5ZXIgbGF6aWx5IHN0YXJ0
cyBvbmUgd2l0aCB0aGUgd3JvbmcgY29udGV4dC4KICAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdCk7CiAgICAgICAgIH0KQEAgLTQzMTEsNjMgKzQzMTIs
NjMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0
ZWRCYWNrZ3JvdW5kKSB7CiAgICAgICAgIC8vIFBhaW50IG9ubHkgdGhlIGJhY2tncm91bmRzIGZv
ciBhbGwgb2YgdGhlIGZyYWdtZW50cyBvZiB0aGUgbGF5ZXIuCiAgICAgICAgIGlmIChzaG91bGRQ
YWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpCi0gICAgICAgICAgICBwYWludEJhY2tncm91
bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVy
Q29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAor
ICAgICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAq
Y29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgfQog
CiAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggbmVnYXRp
dmUgei1pbmRpY2VzLgogICAgIGlmICgoaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQ
YWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQg
JiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFpbnRMaXN0KG5l
Z1pPcmRlckxpc3QoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CisgICAgICAgIHBhaW50TGlzdChuZWdaT3JkZXJMaXN0KCksICpjb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAKICAgICBpZiAoaXNQYWludGluZ0Nv
bXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQpCi0g
ICAgICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNv
bnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlS
ZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRm9yRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0
LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAg
ICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlciwgc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09u
bHkpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCi0gICAgICAgIHBhaW50
T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CisgICAg
ICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVy
ZXIpOwogCiAgICAgaWYgKGlzUGFpbnRpbmdDb21wb3NpdGVkRm9yZWdyb3VuZCkgewogICAgICAg
ICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2ZSBvdmVyZmxvdy4KLSAgICAgICAg
cGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCksIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWludExpc3QobV9ub3JtYWxGbG93TGlz
dC5nZXQoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwog
ICAgIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0
aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50TGlzdChwb3NaT3JkZXJMaXN0KCks
IGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBw
YWludExpc3QocG9zWk9yZGVyTGlzdCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxv
Y2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGZpeGVkIGVsZW1lbnRzIGZy
b20gZmxvdyB0aHJlYWRzLgotICAgICAgICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKGNv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9j
YWxQYWludEZsYWdzKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSByZWdpb24s
IHBhaW50IGl0cyBjb250ZW50cyB2aWEgdGhlIGZsb3cgdGhyZWFkJ3MgbGF5ZXIuCiAgICAgICAg
IGlmIChzaG91bGRQYWludENvbnRlbnQpCi0gICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJl
Z2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJlZ2lv
bkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
LCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIH0KIAogICAgIGlmIChpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMgJiYgaGFzU2Nyb2xsYmFycygpKQotICAgICAgICBwYWludE92ZXJmbG93Q29udHJv
bHNGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
KTsKKyAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21l
bnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOwogCiAgICAgaWYgKGZpbHRlclBhaW50
ZXIpIHsKLSAgICAgICAgY29udGV4dCA9IGFwcGx5RmlsdGVycyhmaWx0ZXJQYWludGVyLmdldCgp
LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsYXllckZyYWdt
ZW50cyk7CisgICAgICAgIGNvbnRleHQgPSAmYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50ZXIuZ2V0
KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxheWVyRnJh
Z21lbnRzKTsKICAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51bGxwdHI7CiAgICAgfQogICAgIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1c2UgdGhlIG9yaWdpbmFsIHRyYW5zcGFyZW5j
eSBjb250ZXh0LgotICAgIEFTU0VSVCh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4
dCk7CisgICAgQVNTRVJUKCZ0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4dCk7CiAK
ICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rp
b25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFp
bnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAg
IC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAgICAgICAgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50TWFza0Zv
ckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNlKSAmJiAo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSkp
IHsKICAgICAgICAgICAgIC8vIFJlLXVzZSBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzIHRvIHBhaW50IGJsYWNrIGZvciB0aGUgY29tcG9zaXRpbmcgY2xpcHBpbmcgbWFzay4KLSAg
ICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVu
dHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVy
ZXIpOworICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoKGxvY2FsUGFp
bnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2UpKSB7CiAg
ICAgICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyIHJhZGl1cyBtYXNrIGZvciB0aGUgZnJhZ21l
bnRzLgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzODYsNyArNDM4
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUo
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJh
bnNsYXRpb25PZmZzZXQpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRT
aXplJiB0cmFuc2xhdGlvbk9mZnNldCkKIHsKICAgICAvLyBUaGlzIGludm9sdmVzIHN1YnRyYWN0
aW5nIG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVyIGluIG91ciBjdXJyZW50IGNvb3JkaW5h
dGUgc3BhY2UsIGJ1dCBwcmVzZXJ2aW5nCiAgICAgLy8gdGhlIGFjY3VtdWxhdGVkIGVycm9yIGZv
ciBzdWItcGl4ZWwgbGF5b3V0LgpAQCAtNDQwMiw4ICs0NDAzLDggQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ3JhcGhpY3MgY29udGV4dCB0byB0aGUgc25h
cHBpbmcgcG9zaXRpb24gdG8gYXZvaWQgb2ZmLWRldmljZS1waXhlbCBwb3NpdGluZy4KICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xh
eWVyLndpZHRoKCksIGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllci5oZWlnaHQo
KSk7CiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybS4KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFu
c2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuY29uY2F0Q1RNKHRyYW5zZm9ybS50
b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhlIHJv
b3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4
ZWxBY2N1bXVsYXRpb24gPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBp
eGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7CkBAIC00NDEyLDcgKzQ0MTMsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihj
b250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZv
LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlz
dChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1OTcsNyAr
NDU5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50
cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAgICAgfQogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRM
YXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVk
TGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7
CiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50czsKICAgICBM
YXlvdXRTaXplIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CkBAIC00NjI5LDcgKzQ2
MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21l
bnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQq
IHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dy
b3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXll
ckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJl
Y3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CkBAIC00NjU3LDcgKzQ2NTgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQqIHRyYW5z
cGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRl
eHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJv
b2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRp
bmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2JqZWN0KiBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGJvb2wgc2VsZWN0aW9uT25seSkKIHsKQEAgLTQ3
MTQsNyArNDcxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgICAgIHJlc3RvcmVD
bGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBjbGlwcGVkUmVj
dCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dp
dGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBM
YXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
ICAgICBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVu
ZGVyZXIpCiB7CiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRv
RGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA+IDE7CkBAIC00NzM2LDcgKzQ3Mzcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhh
c2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgbG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5m
bywKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewogICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQg
OiBsYXllckZyYWdtZW50cykgewpAQCAtNDc1MSw3ICs0NzUyLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLAor
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21l
bnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVu
dCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzcxLDcgKzQ3NzIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJh
Z21lbnRzLCBHcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBw
aW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvLAogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewog
ICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgewpAQCAtNDc5
MCw3ICs0NzkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXIKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBm
cmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAgIGlmIChmcmFnbWVudC5iYWNrZ3Jv
dW5kUmVjdC5pc0VtcHR5KCkpCkBAIC02OTE4LDcgKzY5MTksNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQogICAgIHJlbmRlcmVyKCkucmVwYWludCgpOwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIExheW91
dFJlY3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9uLCBMYXlvdXRSZWN0IHBh
aW50RGlydHlSZWN0LCBMYXlvdXRQb2ludCBwYWludE9mZnNldCwgUGFpbnRCZWhhdmlvciBwYWlu
dEJlaGF2aW9yLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBMYXlvdXRSZWN0
IHJlZ2lvbkNvbnRlbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlZ2lvbi0+bGF5ZXJPd25l
cigpKS5jb250ZW50Qm94UmVjdCgpOwogICAgIEN1cnJlbnRSZW5kZXJSZWdpb25NYWludGFpbmVy
IHJlZ2lvbk1haW50YWluZXIoKnJlZ2lvbik7CkBAIC02OTI2LDE3ICs2OTI3LDE3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuCiAKICAgICBMYXlvdXRTaXplIG1vdmVPZmZzZXQgPSByZWdpb24t
PmZsb3dUaHJlYWRQb3J0aW9uTG9jYXRpb24oKSAtIChwYWludE9mZnNldCArIHJlZ2lvbkNvbnRl
bnRCb3gubG9jYXRpb24oKSkgKyByZWdpb24tPmZyYWdtZW50Q29udGFpbmVyKCkuc2Nyb2xsZWRD
b250ZW50T2Zmc2V0KCk7CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91
bmRQb2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQobW92ZU9mZnNldCksIHJlbmRlcmVy
KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0LT5zYXZlKCk7
Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgLWFkanVz
dGVkUGFpbnRPZmZzZXQueSgpKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtYWRqdXN0ZWRQYWludE9mZnNldC54KCksIC1hZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSk7CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVsQWNjdW11bGF0aW9uID0gbW92ZU9mZnNldCAt
IHRvTGF5b3V0U2l6ZShMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSk7CiAgICAgcGFp
bnREaXJ0eVJlY3QubW92ZShtb3ZlT2Zmc2V0KTsKICAgICBwYWludChjb250ZXh0LCBwYWludERp
cnR5UmVjdCwgTGF5b3V0U2l6ZSgtc3VicGl4ZWxBY2N1bXVsYXRpb24ud2lkdGgoKSwgLXN1YnBp
eGVsQWNjdW11bGF0aW9uLmhlaWdodCgpKSwgcGFpbnRCZWhhdmlvciwgbnVsbHB0ciwgcGFpbnRG
bGFncyB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwogICAgIHJlZ2lvbi0+cmVzdG9y
ZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKCk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwor
ICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludEZsb3dU
aHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgZnJhZ21lbnRz
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWlu
dGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBp
ZiAoIXJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGI2
YTEyOGNhOGVmOTQ1ZDAwNmUxOGI3OTA5YWM5MTc1YzdjMmFiNDMuLmVkMWI0MDAyNDY3NDgxN2Iy
N2U3YjQ3MTc2YTA2M2UxNmYyZTJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGl0VGVzdE92ZXJm
bG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50KTsK
ICAgICBJbnRTaXplIG9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50UG9pbnQmIGFic29s
dXRlUG9pbnQpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBi
b29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KTsKLSAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZv
aWQgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFBvaW50
JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBwYWludGluZ092ZXJsYXlDb250cm9s
cyA9IGZhbHNlKTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdm9pZCBw
YWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0KCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHB1YmxpYzoKICAgICAvLyBwYWludHMg
dGhlIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZGFtYWdlIHJlY3QgZnJvbSBiYWNrIHRvCiAg
ICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBi
eSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZy
b250IHRvIGJhY2suCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlv
biA9IExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCisg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlvbiA9IExheW91dFNpemUo
KSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCiAgICAgICAgIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFBhaW50TGF5ZXJGbGFncyA9IDApOwog
ICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsK
ICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJz
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVo
YXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOworICAgIHZv
aWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QgPSBudWxscHRyKTsKIAotICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBMYXlvdXRS
ZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFBh
aW50TGF5ZXJGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBMYXlvdXRS
ZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFBh
aW50TGF5ZXJGbGFncyA9IDApOwogCiAgICAgc3RydWN0IENsaXBSZWN0c0NvbnRleHQgewogICAg
ICAgICBDbGlwUmVjdHNDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyKiBpblJvb3RMYXllciwgQ2xp
cFJlY3RzVHlwZSBpbkNsaXBSZWN0c1R5cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5
IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFy
U2l6ZSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCBpblJlc3BlY3RPdmVyZmxvd0NsaXAgPSBS
ZXNwZWN0T3ZlcmZsb3dDbGlwKQpAQCAtNzE3LDggKzcxNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21wdXRlUmVwYWludFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKICAgICB2b2lkIGNs
ZWFyUmVwYWludFJlY3RzKCk7CiAKLSAgICB2b2lkIGNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBDbGlwUmVjdCYsIEJvcmRlclJhZGl1
c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKLSAgICB2b2lkIHJl
c3RvcmVDbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlS
ZWN0LCBjb25zdCBDbGlwUmVjdCYpOworICAgIHZvaWQgY2xpcFRvUmVjdChjb25zdCBMYXllclBh
aW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IENsaXBSZWN0JiwgQm9yZGVyUmFk
aXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOworICAgIHZvaWQg
cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CiAKICAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxh
eW91dCgpIGNvbnN0OwogCkBAIC03NjgsNDIgKzc2OCw0MiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpOwogCi0gICAgYm9vbCBz
ZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQqLCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKTsKKyAgICBib29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgUGF0aCBjb21w
dXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3Qm
IHJvb3RSZWxhdGl2ZUJvdW5kcywgV2luZFJ1bGUmKSBjb25zdDsKIAotICAgIGJvb2wgc2V0dXBD
bGlwUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3Vu
ZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBib29sIHNldHVwQ2xp
cFBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRz
LCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKLSAgICBib29sIGhhc0ZpbHRl
clRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCosIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZp
bHRlcnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVs
YXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLSAgICBHcmFw
aGljc0NvbnRleHQqIGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdy
YXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVy
RnJhZ21lbnRzJik7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0Nv
bnRleHQmLCBQYWludExheWVyRmxhZ3MpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYsIExh
eWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVs
YXRpdmVCb3VuZHNDb21wdXRlZCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBhcHBseUZpbHRlcnMo
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29u
dGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZyYWdtZW50cyYpOwogCi0gICAgdm9pZCBw
YWludExheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3Mp
OwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7Ci0gICAgdm9p
ZCBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJh
bnNsYXRpb25PZmZzZXQgPSBMYXlvdXRTaXplKCkpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXll
ckZsYWdzKTsKLSAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsK
KyAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0luTmFt
ZWRGbG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdz
KTsKKyAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlv
dXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7CisgICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXll
cio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExh
eWVyRmxhZ3MpOwogCiAgICAgdm9pZCBjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
LAogICAgICAgICBQYWdpbmF0aW9uSW5jbHVzaW9uTW9kZSwKICAgICAgICAgQ2xpcFJlY3RzVHlw
ZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJl
bGV2YW5jeSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QqIGxheWVyQm91bmRpbmdCb3gg
PSBudWxscHRyLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyA9IElnbm9yZVJvb3RP
ZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21l
bnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVy
RmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRG
cm9tUm9vdCk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQqIHRyYW5zcGFy
ZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4dCYg
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFu
c3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0KiB0cmFu
c3BhcmVuY3lMYXllckNvbnRleHQsCisgICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVu
dHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRl
eHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYg
dHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5n
Um9vdEZvclJlbmRlcmVyLAogICAgICAgICBib29sIHNlbGVjdGlvbk9ubHkpOwotICAgIHZvaWQg
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UsIGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsK
LSAgICB2b2lkIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlv
ciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwYWlu
dE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYpOwotICAgIHZvaWQgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJl
bmRlcmVyKTsKLSAgICB2b2lkIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQg
cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludEZv
cmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSwgY29uc3QgTGF5ZXJGcmFn
bWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZv
aWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50T3ZlcmZs
b3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7CisgICAgdm9pZCBwYWludE1hc2tGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIp
OworICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CisgICAgdm9pZCBwYWludFRy
YW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFu
c3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKLSAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5
b3V0UmVjdCYgZGlydHlSZWN0KTsKKyAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVj
dCYgZGlydHlSZWN0KTsKIAogICAgIFJlbmRlckxheWVyKiBoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxheWVyLCBjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LAogICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgYm9vbCBhcHBs
aWVkVHJhbnNmb3JtLApAQCAtOTM4LDcgKzkzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzaXplclN0eWxlKCk7CiAK
LSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCk7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1S
ZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNv
cm5lclJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVQYWdpbmF0aW9uKCk7CiAKQEAgLTk4Miw3ICs5
ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwKICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiwgZG91
YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsCiAgICAgICAgIGRvdWJsZSogek9mZnNldCwgY29u
c3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLCBi
b29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKLSAgICB2b2lkIHBhaW50Rmxvd1RocmVhZElmUmVn
aW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFp
bnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFn
cyk7CiAgICAgYm9vbCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKENsaXBS
ZWN0cyYpIGNvbnN0OwogCiAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGN1cnJlbnRSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA1MDY0YzRmOGNmODZlZjNlNzBhM2VlNzdk
YjIyYzEyNTY2ZWI0N2Y5Li4zOTA0MWE3OTk1ZThkNmY2ZjE5ZWExN2Y2NDEzM2M5ZmVlMzgxMWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRl
bnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCit2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3Jh
cGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGNvbnN0IEludFJlY3Qm
IHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9mIHJvb3RMYXllci4KICAgICBQYWlu
dEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIHBhaW50
aW5nUGhhc2UpCiB7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFw
aAogICAgICAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KGNvbXBv
c2l0ZWRCb3VuZHNJbmNsdWRpbmdNYXJnaW4oKSkpOwogCiAgICAgICAgIC8vIFdlIGhhdmUgdG8g
dXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9k
cyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgotICAgICAgICBwYWludEludG9MYXll
cihncmFwaGljc0xheWVyLCAmY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFs
LCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwg
Y29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsK
IAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KCZyZW5kZXJlcigp
LCBkaXJ0eVJlY3QpOwogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvckhv
cml6b250YWxTY3JvbGxiYXIoKSkgewpAQCAtMjM1NCw4ICsyMzU0LDggQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllciwgR3JhcGgKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lckFuZFJl
c2l6ZXIueCgpLCAtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci55KCkpOwogICAgICAgICBMYXlvdXRS
ZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91dFJlY3QoY2xpcCk7CiAgICAgICAgIHRyYW5zZm9y
bWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKTsKLSAgICAg
ICAgbV9vd25pbmdMYXllci5wYWludFNjcm9sbENvcm5lcigmY29udGV4dCwgSW50UG9pbnQoKSwg
c25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIu
cGFpbnRSZXNpemVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOworICAg
ICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIEludFBvaW50KCks
IHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOworICAgICAgICBtX293bmluZ0xheWVy
LnBhaW50UmVzaXplcihjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOwogICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDI0ZWIyYmJkYmIx
NDIxNWYzMjQwZTk3ZjUzZTA1ZGU5ZWI0ODY0OTEuLmQ2NmZiODIxNTQ4MWI1OTVlZWNhMTkzM2Iy
YmViZGYzNDU2YjAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzVGls
ZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gKG1fY2hpbGRDb250YWlu
bWVudExheWVyICYmIG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpOyB9CiAgICAgR3JhcGhpY3NMYXll
ciogdGlsZUNhY2hlRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV91c2luZ1RpbGVk
Q2FjaGVMYXllciA/IG1fY2hpbGRDb250YWlubWVudExheWVyLmdldCgpIDogbnVsbHB0cjsgfQog
Ci0gICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3IsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBwYWludERp
cnR5UmVjdCwgUGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOwogCiAg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB1cGRhdGVHZW9tZXRyeS4KICAgICB2b2lkIGFkanVz
dEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3QmIGFuY2Vz
dG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2Vz
dG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggODk1NTZlMzFjM2ExM2ZhNTc0MzRkNzhjNmUyZjE4Y2EyMzRk
NWY4ZC4uNmY0NWU5Njc4NWVmYzNiZjAxOTYzNjZjZmQwYTJmNzZmZmMwZmZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTI4NjYsNyArMjg2Niw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC50
cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QueCgpLCAtc2Nyb2xsYmFyUmVjdC55KCkpOwogICAgIElu
dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5
KHNjcm9sbGJhclJlY3QubG9jYXRpb24oKSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWludCgmY29udGV4
dCwgdHJhbnNmb3JtZWRDbGlwKTsKKyAgICBzY3JvbGxiYXItPnBhaW50KGNvbnRleHQsIHRyYW5z
Zm9ybWVkQ2xpcCk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKQEAgLTI4ODMsNyArMjg4
Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KC1zY3JvbGxDb3JuZXIueCgpLCAtc2Nyb2xsQ29ybmVyLnkoKSk7CiAgICAgICAgIEludFJlY3Qg
dHJhbnNmb3JtZWRDbGlwID0gcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0
ZW1zOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lci5sb2NhdGlv
bigpKTsKLSAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBhaW50U2Nyb2xsQ29ybmVy
KCZjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDQwZjVlMzJjZjUwMmNiYmRlMGJmNTNjNDBjMzNhMjQx
ZjQ2NWEzNzcuLmUzY2I3OTZiZmY0NzM2ZjQ3ZGM2YTExNjZlOGU0NDJlYjBmNDYwN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0NSw3ICszNDUs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICAgICAgbV92QmFyLT53aWR0aCgp
LAogICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkp
OwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAgICAgbV92
QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJl
Y3QpKTsKKyAgICAgICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVk
SW50UmVjdChwYWludEluZm8ucmVjdCkpOwogICAgIH0KIH0KIApAQCAtMzk3LDcgKzM5Nyw3IEBA
IHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgfQogCiAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0
RmlsbENvbG9yKHRleHRDb2xvciwgY29sb3JTcGFjZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKIAogICAgIFRleHRSdW4gdGV4
dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0eWxlLmRp
cmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSwgVGV4
dFJ1bjo6Tm9Sb3VuZGluZyk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZv
bnRDYXNjYWRlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYK
ICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBpdGVtIHRleHQKLSAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCByb3VuZGVkSW50UG9pbnQoci5sb2Nh
dGlvbigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3QmlkaVRleHQoaXRlbUZvbnQs
IHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChyLmxvY2F0aW9uKCkpKTsKIH0KIAogdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGludCBsaXN0SW5kZXgpCkBAIC00MzUsNyArNDM1
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVtUmVj
dCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAgICAg
IGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwg
YmFja0NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxs
UmVjdChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29sb3JTcGFjZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKaW5kZXggYTg1NWE0OGU1Mjg4MDhiMjRjZjk1YzgxNzIwZTBjOTkxYzRiNTg2MC4uOGJhMGQ2
ZDMyMTRmNGRjNTZhY2IwMTQ4NjQ2MTg2NDA0ZjdlNWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTE5NCwxNCArMTE5NCwxNCBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEZsb2F0UmVjdCBtYXJrZXIgPSBnZXRSZWxhdGl2
ZU1hcmtlclJlY3QoKTsKICAgICBtYXJrZXIubW92ZUJ5KGJveE9yaWdpbik7CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgaWYgKGlzSW1hZ2Uo
KSkgewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywgbWFy
a2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOworICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKS5n
ZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rp
b25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2Vs
UmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnko
Ym94T3JpZ2luKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRS
ZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEyMDksMjYgKzEyMDksMjYgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBpZiAoc2Vs
ZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIExheW91dFJlY3Qgc2Vs
UmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxSZWN0
KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3Qp
LCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBm
KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBz
dHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2Fz
ZSBEaXNjOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdFbGxpcHNlKG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAg
ICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KG1hcmtlcik7
CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzMTcsMjIgKzEzMTcsMjIgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKICAgICBUZXh0UnVuIHRl
eHRSdW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBtX3RleHQs
IHN0eWxlKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpj
b250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGZhbHNlKTsKICAgICBpZiAoIXN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICBtYXJrZXIubW92ZUJ5KC1ib3hPcmlnaW4pOwogICAgICAgICBtYXJr
ZXIgPSBtYXJrZXIudHJhbnNwb3NlZFJlY3QoKTsKICAgICAgICAgbWFya2VyLm1vdmVCeShGbG9h
dFBvaW50KGJveC54KCksIGJveC55KCkgLSBsb2dpY2FsSGVpZ2h0KCkpKTsKICAgICAgICAgc3Rh
dGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShtYXJrZXIueCgpLCBt
YXJrZXIubWF4WSgpKTsKLSAgICAgICAgY29udGV4dC0+cm90YXRlKHN0YXRpY19jYXN0PGZsb2F0
PihkZWcycmFkKDkwLikpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1tYXJrZXIueCgp
LCAtbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG1hcmtlci54KCks
IG1hcmtlci5tYXhZKCkpOworICAgICAgICBjb250ZXh0LnJvdGF0ZShzdGF0aWNfY2FzdDxmbG9h
dD4oZGVnMnJhZCg5MC4pKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1tYXJrZXIueCgp
LCAtbWFya2VyLm1heFkoKSk7CiAgICAgfQogCiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0g
RmxvYXRQb2ludChtYXJrZXIueCgpLCBtYXJrZXIueSgpICsgc3R5bGUoKS5mb250TWV0cmljcygp
LmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKExh
eW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKIAogICAgIGlmICh0eXBlID09IEFzdGVy
aXNrcyB8fCB0eXBlID09IEZvb3Rub3RlcykKLSAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
dGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIHN1
ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKIApAQCAt
MTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgfQogICAg
ICAgICB0ZXh0UnVuLnNldFRleHQoU3RyaW5nVmlldyh0b0RyYXcpKTsKIAotICAgICAgICBjb250
ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAgY29udGV4
dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAppbmRleCAy
MTcxMzg4ZWFmZThhOGMyM2JkMzE1OTZhYzBjZWU5NDgyOGI4YjFhLi5iNTJhNmM5YjRjZGRiNjkw
MTMwY2ZiOTFiZTdmOGRmMmI2NGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCkBAIC05MSw5ICs5MSw5IEBAIHN0YXRpYyBGbG9h
dFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9v
bWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAg
ICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxl
dmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3Qu
eCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVu
em9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0K
ICAgICByZXR1cm4gdW56b29tZWRSZWN0OwogfQpAQCAtMTI4LDc2ICsxMjgsNzYgQEAgdm9pZCBS
ZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHls
ZSYgc3R5bGUpCiAKIGJvb2wgUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xz
UGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBwYXJ0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4
dCgpKTsKIAogICAgIHN3aXRjaCAocGFydCkgewogICAgIGNhc2UgTWVkaWFFbnRlckZ1bGxzY3Jl
ZW5CdXR0b246CiAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uOgogICAgICAgICBp
ZiAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAg
ICAgICAgICBib29sIGVudGVyQnV0dG9uID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhRW50
ZXJGdWxsc2NyZWVuQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoZW50ZXJC
dXR0b24gPyBXS01lZGlhVUlQYXJ0RnVsbHNjcmVlbkJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRFeGl0
RnVsbHNjcmVlbkJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChlbnRl
ckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tNZWRpYVVJUGFydEV4
aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbjoKICAgICBjYXNlIE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50KiBidG4gPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAg
IGJvb2wgY2FwdGlvbnNWaXNpYmxlID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoY2FwdGlv
bnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6IFdLTWVk
aWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0
aW9uc0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvbjoKICAg
ICBjYXNlIE1lZGlhVW5NdXRlQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVt
ZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGF1ZGlvRW5hYmxlZCA9IGJ0bi0+
ZGlzcGxheVR5cGUoKSA9PSBNZWRpYU11dGVCdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdLTWVkaWFV
SVBhcnRVbk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoYXVk
aW9FbmFibGVkID8gV0tNZWRpYVVJUGFydE11dGVCdXR0b24gOiBXS01lZGlhVUlQYXJ0VW5NdXRl
QnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVBh
dXNlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFQbGF5QnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGNhblBsYXkg
PSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFQbGF5QnV0dG9uOwotICAgICAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoY2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDogV0tNZWRp
YVVJUGFydFBhdXNlQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KGNh
blBsYXkgPyBXS01lZGlhVUlQYXJ0UGxheUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRQYXVzZUJ1dHRv
biwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXdpbmRC
dXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRSZXdpbmRCdXR0
b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0UmV3aW5kQnV0
dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla1RvUmVh
bHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0
ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVNlZWtCYWNrQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVNl
ZWtGb3J3YXJkQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVNsaWRlcjogewogICAgICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gcGFyZW50TWVkaWFFbGVtZW50KG8pKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdW56b29t
ZWRSZWN0ID0gZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQobywgcGFpbnRJ
bmZvLCByKTsKLSAgICAgICAgICAgIHdrRHJhd01lZGlhU2xpZGVyVHJhY2socGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykp
OworICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayhwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVyY2VudExv
YWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1cnJlbnRU
aW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1lZGlhU2xpZGVyVGh1bWI6
Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRUaW1lbGluZVNsaWRlclRo
dW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0
YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRpbWVsaW5l
U2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFZv
bHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXJDb250YWluZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRp
YVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVZvbHVtZVNsaWRlclRodW1iOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYjoK
LSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRl
cm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRG
dWxsU2NyZWVuVm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0QmFja2dyb3VuZCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFD
dXJyZW50VGltZURpc3BsYXk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXgg
N2UxZmQ1YjRjNGY2N2Y4MzYxNzZhMjVkMTFkNDk5OWM3ZWY3OGIyYi4uNTljNjNjMGEwYmMyZjVk
MTJiZjFjMjRhMjVjNzY0OGY2NThkMjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Zmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1
bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0g
bXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG8KICAgICBpZiAoY29sQ291bnQgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4
dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8u
Y29udGV4dCgpKTsKIAogICAgIGlmIChmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzSW5saW5lKCkp
IHsKICAgICAgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIF4gZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CkBAIC02MTcsNyAr
NjE3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueSgp
ICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBydWxlTG9n
aWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7CiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBydWxlQm90dG9tID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVU
b3AgKyBjb250ZW50SGVpZ2h0KCkgOiBydWxlVG9wICsgcnVsZVRoaWNrbmVzczsKICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gc25hcHBlZEludFJlY3QocnVs
ZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCAtIHJ1bGVMZWZ0LCBydWxlQm90dG9tIC0gcnVsZVRv
cCk7Ci0gICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29udGV4
dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAw
LCAwLCBhbnRpYWxpYXMpOworICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWlu
dEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9y
LCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCA9IGN1cnJMb2dpY2FsTGVmdE9mZnNldDsK
QEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVt
blJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgY29sQ291bnQ7IGkrKykgewogICAgICAgICAgICAgcnVsZVJl
Y3QubW92ZShzdGVwKTsKICAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3Qg
PSBzbmFwcGVkSW50UmVjdChydWxlUmVjdCk7Ci0gICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoKnBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVs
ZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICBkcmF3TGlu
ZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJv
eFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA5NzllOWNmZjczYzJiZWQ5ZDA5NzM2YjhiYmM2YTE3NzBmZDMyNDdkLi5jODA1MWQ5MWEzZmEx
MmFlYWJhYWFlNmJhYzU2NGE5ZWZlNjYyMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojph
ZGRQREZVUkxSZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gZG93bmNhc3Q8RWxlbWVudD4oKm5v
ZGUpLmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChub2RlLT5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0KSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRVUkxGb3JSZWN0KG5vZGUtPmRvY3VtZW50KCkuY29t
cGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmlu
ZGV4IDhjOThiYmE4NTQ2MzYwZmEwMmVkNWNiNWFhNzdlMjU0YTBhZWYyOWQuLmZkMjA1MDRlYzNk
NWNjZTgxYWI2MTRhYTYyZDU1YmQ3MDcxNDM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc4LDEwICsxNzgsMTAgQEAgdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICAgICAgICAgIGNvbXBsZXRlbHlDbGlwcGVkT3V0ID0gdHJ1ZTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9y
ZGVyIHJhZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50
IHRoYXQgZ2V0cyBwYWludGVkLgotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICAgICAg
RmxvYXRSb3VuZGVkUmVjdCByb3VuZGVkSW5uZXJSZWN0ID0gRmxvYXRSb3VuZGVkUmVjdChzdHls
ZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsCiAgICAgICAgICAgICAgICAg
cGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdCb3R0b20oKSArIGJvcmRlckJvdHRv
bSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBwYWRkaW5nUmlnaHQoKSArIGJvcmRl
clJpZ2h0KCksIHRydWUsIHRydWUpKTsKLSAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0
KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOworICAgICAg
ICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRSZWN0
LCByb3VuZGVkSW5uZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg5LDcgKzE4OSw3
IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIHBhaW50UmVwbGFjZWQocGFpbnRJ
bmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAogICAgICAgICBpZiAoc3R5bGUoKS5oYXNCb3Jk
ZXJSYWRpdXMoKSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAgICAgICAg
IAogICAgIC8vIFRoZSBzZWxlY3Rpb24gdGludCBuZXZlciBnZXRzIGNsaXBwZWQgYnkgYm9yZGVy
LXJhZGl1cyByb3VuZGluZywgc2luY2Ugd2Ugd2FudCBpdCB0byBydW4gcmlnaHQgdXAgdG8gdGhl
IGVkZ2VzIG9mCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICBpZiAoZHJhd1NlbGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25Q
YWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0aW9uUGFp
bnRpbmdSZWN0Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCks
IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9u
UGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcAppbmRleCAzNzcyMGZlMzg5YzE5MzZjOGRlMjY1ZGM2ZWM0YTFmYmNkMjA3MzNmLi42
MWQwYTE3YjM4YTE5OGQyZmNkZjBlMDZkYWI0MjdlMjYyMTJkOWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgUmVu
ZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAgICAgUmVuZGVyTGF5ZXIqIHJvb3RQYWludGluZ0xheWVyID0g
bGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJlbnQoKSA6IGxheWVyKCktPmVuY2xv
c2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKICAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFp
bnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFpbnRpbmdMYXllciwgcGFpbnRJbmZvLnJlY3Qs
IFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNpemUoKSwgMCk7CiAgICAgICAgIFJlbmRlckxh
eWVyOjpQYWludExheWVyRmxhZ3MgZmxhZ3MgPSBSZW5kZXJMYXllcjo6UGFpbnRMYXllckhhdmVU
cmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gfCBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyB8IFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uOwotICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+
cGFpbnRMYXllcihwYWludEluZm8uY29udGV4dCwgcGFpbnRpbmdJbmZvLCBmbGFncyk7CisgICAg
ICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0KCksIHBh
aW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VNYXNrKQogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50
T2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAKaW5kZXggYzM2NDEwZDU3MjA1MjJlMWRiOWYyNGY4MDA4OTM2MDgwNTU5OTg0Ny4uMjc3ZGFj
OGRmYTRjYzNhMzNlZWFkZDI3ZTFmMWU4MzYyYjNjNjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTEwMiw5ICsxMDIsOSBAQCB2b2lkIFJl
bmRlclNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygp
OwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkK
IHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChj
b250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsYmFy
UGFydHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lk
IFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydChTY3JvbGxiYXJQYXJ0IHBhcnRU
eXBlKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcGFydFJlbmRlcmVyID0g
bV9wYXJ0cy5nZXQocGFydFR5cGUpOwogICAgIGlmICghcGFydFJlbmRlcmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGY2Yzg1Yzk3N2MwYjRiZmQz
ZWZiNjk4YWRiYmFjZGQwMDA3OTdkNDYuLmYyN2VjMDNiYmIwOTA3ODBkNDJlMzQ3YjZjMjNhYTRk
NmQ4YzA0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBvd25pbmdSZW5kZXJl
cigpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludFBhcnQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyUGFydCwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRQYXJ0KEdyYXBoaWNzQ29u
dGV4dCYsIFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIEludFJlY3QgYnV0
dG9uUmVjdChTY3JvbGxiYXJQYXJ0KTsKICAgICBJbnRSZWN0IHRyYWNrUmVjdChpbnQgc3RhcnRM
ZW5ndGgsIGludCBlbmRMZW5ndGgpOwpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkUGFydChT
Y3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc3NlZFBhcnQo
U2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWQ3MWE4OWIxY2NkOTg1ZDI2M2ZjMmUyYTBl
NTM4Nzc4OTI1MzkwMy4uMGNiZWMwZmM5MzRmMTZlZGVmMTQ1MGQ4NTA0NzQwNTJhN2RmMDk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cApAQCAtMTU1LDIzICsxNTUsMjMgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWMKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9S
ZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJl
IG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0LgogICAgIHNldExvY2F0aW9uKHJlY3QubG9j
YXRpb24oKSAtIHRvTGF5b3V0U2l6ZShwYWludE9mZnNldCkpOwogICAgIHNldFdpZHRoKHJlY3Qu
d2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpOwogCi0gICAgaWYgKGdyYXBo
aWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZSgpLm9wYWNpdHkoKSkKKyAg
ICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUoKS5vcGFj
aXR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBSZW5kZXJMYXll
cnMgZm9yIHNjcm9sbGJhciBwYXJ0cywgc28gd2UgbmVlZCB0byBoYW5kbGUgb3BhY2l0eSBoZXJl
LgogICAgIC8vIE9wYWNpdHkgZm9yIFNjcm9sbGJhckJHUGFydCBpcyBoYW5kbGVkIGJ5IFJlbmRl
clNjcm9sbGJhclRoZW1lOjp3aWxsUGFpbnRTY3JvbGxiYXIoKS4KICAgICBib29sIG5lZWRzVHJh
bnNwYXJlbmN5TGF5ZXIgPSBtX3BhcnQgIT0gU2Nyb2xsYmFyQkdQYXJ0ICYmIHN0eWxlKCkub3Bh
Y2l0eSgpIDwgMTsKICAgICBpZiAobmVlZHNUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJl
Y3QpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5
bGUoKS5vcGFjaXR5KCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5bGUoKS5vcGFjaXR5KCkpOwogICAgIH0KICAgICAKICAg
ICAvLyBOb3cgZG8gdGhlIHBhaW50LgpAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgUmVuZGVyU2Ny
b2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QKICAgICBwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChu
ZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggN2E3MWZhNzM5ZjhkODUxMWM0
OTRhMDA0YTQzOTMzNzJmMTM0MzFjYS4uODY1OTkxNDJhOWZjYmFlMmM1OGU4NWIwZDBkYjE4Mjdk
YWQ5YWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBw
YWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3Qg
TGF5b3V0UmVjdCYpOwogCiAgICAgLy8gU2Nyb2xsYmFyIHBhcnRzIG5lZWRzIHRvIGJlIHJlbmRl
cmVkIGF0IGRldmljZSBwaXhlbCBib3VuZGFyaWVzLgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBt
YXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdp
bkJveC50b3AoKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gudG9wKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDA5ZDk2NTIx
OGU4NzVlZDY3NGE0YmNhMzcyZjhiOWI1ZWEyODM3OGEuLmRiNTI4OGZkYzVlNTUyNmE0M2YwYWJl
ZmI5N2Q5NmNmZDRkMDg2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI1LDM1ICsxMjUsMzUgQEAgdm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNj
cm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29u
dGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYg
c2Nyb2xsYmFyKQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5w
YWludFBhcnQoJmNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgp
KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNv
bnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgpKTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZj
b250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAK
IHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3Jv
bGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVu
ZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsK
IH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Ny
b2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJl
bmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVjdCk7
CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZj
b250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4o
c2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNDdm
MGY4MDMzZWIwOTRjMDRkMTk0M2FlZjY3ODQxZWY5NjQxODIwOC4uZjdlNDE5ZDA1YTFiNDMxNDc3
Y2Q1NTUyZjhjNmRjMzBkYzllOWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAppbmRleCA0NTVmY2U4OTI5ZDA1ZjJlYTEwMTNmNzNlN2ZlM2ViYjdkOTQ5
OThlLi5iZDFhOWQ1MWQyNWIzZDg5YzQxYTA5MTAyOWE4OTM0ZTFkZDY0NTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
QEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNu
YXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmICghY1dp
ZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShj
V2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IGxvY2F0
aW9uKCkgKyBwYWludE9mZnNldDsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCku
Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRp
b25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykp
OwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNv
cihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBjNzBhNGQxMjAw
N2E4NDI3YzI5YzI1NDYyNTdkMzVhMzA1NzMyMGE2Li40ODU1OTVhMWI4MDY0YTYzMmY5Zjg1MzQ0
ZDljZTFmOGQ2Mzk2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKQEAgLTc0OSw3ICs3NDksNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcAogICAgIExheW91
dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBzdWJ0cmFjdENhcHRpb25SZWN0
KHJlY3QpOwogCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0g
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFib3hT
aGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5sb2NhdGlvbigpLCBibGVlZEF2
b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcmVjdCwgc3R5bGUo
KSwgTm9ybWFsKTsKICAgICBwYWludEJhY2tncm91bmQocGFpbnRJbmZvLCByZWN0LCBibGVlZEF2
b2lkYW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CmluZGV4IDE3ZTVhYzQ1NDBiNDczYmFlNmZhNmY5YjU3NTM2ZTRjNDM0ZDg2NTcuLjExNWZmYzc5
NzQ4NmI3OWE5ZmNjNDhjOGI3YzA4NjljNmM3Y2Q4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjAxLDggKzEyMDEsOCBAQCB2b2lkIFJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChwYWludFJlY3QubWF4WSgpICsgdGFibGUoKS0+b3V0
ZXJCb3JkZXJCb3R0b20oKSA8PSBsb2NhbFJlcGFpbnRSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBpZiAoIXRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNz
Q29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoIXRhYmxlKCktPmN1cnJl
bnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZUZvckNlbGxGbG93
ID0gdGhpcy0+c3R5bGVGb3JDZWxsRmxvdygpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG8KICAgICAKICAgICBmb3IgKENvbGxhcHNlZEJvcmRlciogYm9yZGVy
ID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7IGJvcmRlcjsgYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9y
ZGVyKCkpIHsKICAgICAgICAgaWYgKGJvcmRlci0+Ym9yZGVyVmFsdWUuaXNTYW1lSWdub3JpbmdD
b2xvcigqdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkpKQotICAgICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KGJvcmRl
ci0+eDEsIGJvcmRlci0+eTEpLCBGbG9hdFBvaW50KGJvcmRlci0+eDIsIGJvcmRlci0+eTIpKSwg
Ym9yZGVyLT5zaWRlLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm9yZGVyLT54MSwgYm9yZGVyLT55MSksIEZsb2F0
UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55MikpLCBib3JkZXItPnNpZGUsCiAgICAgICAgICAg
ICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAwLCAwLCBh
bnRpYWxpYXMpOwogICAgIH0KIH0KQEAgLTEyNzUsMTEgKzEyNzUsMTEgQEAgdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXkKICAgICAgICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUg
YmFja2dyb3VuZCB3b3VsZCBwYWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMg
b3RoZXJ3aXNlLiAgVGhpcyBvbmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAg
ICBib29sIHNob3VsZENsaXAgPSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNr
Z3JvdW5kT2JqZWN0ID09IHRoaXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYg
dGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBzaG91bGRDbGlwKTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0
KCksIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQo
KSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSwKICAgICAgICAgICAgICAg
ICB3aWR0aCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKSwgaGVpZ2h0KCkgLSBib3Jk
ZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChj
bGlwUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywg
YywgYmdMYXllciwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzbmFwcGVkSW50UmVj
dChmcmFtZVJlY3QoKSkuc2l6ZSgpKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291
cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBjOTEwYWI2ZjZhYjA2OWJhNGI2
MzI1MjI0ZmVhMDAxMmM0NmY3ZTUzLi4zZTlkOGE1ZmIxY2FiYzkxMGQyODRkYTE1ZjNkZDcwZTRj
NmFjOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBh
aW50Um93R3JvdXBCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGJvb2wgYW4KICAg
ICByZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29u
dGV4dCwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm9yZGVyQ29s
b3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICBkcmF3TGluZUZvckJveFNp
ZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoYm9yZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKIH0K
IAogaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6b2Zmc2V0TGVmdEZvclJvd0dyb3VwQm9yZGVyKFJl
bmRlclRhYmxlQ2VsbCogY2VsbCwgY29uc3QgTGF5b3V0UmVjdCYgcm93R3JvdXBSZWN0LCB1bnNp
Z25lZCByb3cpCkBAIC0xMTY5LDExICsxMTY5LDExIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9u
OjpwYWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5m
CiB7CiAgICAgaWYgKHRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpLT5wcmVjZWRlbmNlKCkg
PiBCUk9XR1JPVVApCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxp
YXNMaW5lcyhwYWludEluZm8uY29udGV4dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRB
bnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCgpKTsKICAgICBMYXlvdXRSZWN0IHJvd0dy
b3VwUmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgcm93R3JvdXBS
ZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQob3V0ZXJCb3JkZXJMZWZ0KCZzdHlsZSksIChib3JkZXJT
aWRlID09IEJTUmlnaHQpID8gMCA6IG91dGVyQm9yZGVyVG9wKCZzdHlsZSkpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggN2EyYjk3NmNkNjk5MmJlNTJi
NjAwZjYwYmRiNDA2ZjVmZTY0YzEwYy4uZGNhYzRmYTczMTZlYzM1YjBlNjFiYzIwMGQ4MjIxZWE2
MDIzZTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0y
NjcsMTIgKzI2NywxMiBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gm
IGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIC8vIElmIHBhaW50
aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJlbid0IHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIHRo
ZW4ganVzdCBiYWlsLgogICAgIC8vIElmIHdlIGFyZSB1cGRhdGluZyBjb250cm9sIHRpbnRzLCBq
dXN0IHNjaGVkdWxlIGEgcmVwYWludCBpZiB0aGUgdGhlbWUgc3VwcG9ydHMgdGludGluZwogICAg
IC8vIGZvciB0aGF0IGNvbnRyb2wuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT51cGRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkudXBkYXRpbmdD
b250cm9sVGludHMoKSkgewogICAgICAgICBpZiAoY29udHJvbFN1cHBvcnRzVGludHMoYm94KSkK
ICAgICAgICAgICAgIGJveC5yZXBhaW50KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgp
OwpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBC
dXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRl
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIG1f
dGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250
ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5
bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwg
Y29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVj
dCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQxMSw3ICs0MTEsNyBAQCBib29s
IFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYg
Y29udHJvbFN0YXRlcywgY29ucwogCiBib29sIFJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHko
Y29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDY1LDcg
KzQ2NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seShjb25zdCBSZW5kZXJC
b3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluCiAKIGJvb2wgUmVuZGVyVGhlbWU6OnBh
aW50RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50UmVjdCBp
bnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7CkBAIC0xMDUzLDggKzEw
NTMsOCBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICB0aWNrUmVnaW9uV2lkdGgg
PSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KICAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBp
KyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwogICAg
ICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50Pigqbm9kZSk7CkBAIC0xMDY5LDcgKzEwNjksNyBAQCB2b2lkIFJlbmRlclRoZW1l
OjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludAogICAgICAgICAgICAgdGlja1JlY3Quc2V0WCh0aWNrUG9zaXRpb24pOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRZKHRpY2tQb3NpdGlvbik7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aWNrUmVjdCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggZDBmY2FkNjk2MjM0
YjNkZGVlNzI0NWNkOTg0ZGIwZTQ2OGFjNzlhYi4uYmFjMWQ2ZjIxMDBhNTk1N2YzMTAwMzRmOTM3
NWM5Y2E2NDY5ZjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVF
ZmwuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVt
ZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGMKICAgICBl
ZGplX29iamVjdF9tZXNzYWdlX3NpZ25hbF9wcm9jZXNzKGVudHJ5LT5lZGplKCkpOwogICAgIGV2
YXNfcmVuZGVyKGVjb3JlX2V2YXNfZ2V0KGVudHJ5LT5jYW52YXMoKSkpOwogCi0gICAgY2Fpcm9f
dCogY2Fpcm8gPSBpbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNh
aXJvX3QqIGNhaXJvID0gaW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgQVNTRVJUKGNhaXJvKTsKIAogICAgIGNhaXJvX3NhdmUoY2Fpcm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMTg2Yjc2MDE0OWU2YWVlNjBj
MGRhY2I3NDIyZTkwNTc0Mjg3NjFiMS4uZmVmYmIyNGI1NjQ4MjRlMzQ2MzljNTE5MDllZDNmMDZj
N2QzOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3Bw
CkBAIC01MjYsMTYgKzUyNiwxNiBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZShjb25zdCBSZW5k
ZXJUaGVtZUd0ayogdGhlbWUsIEdUeXBlIHdpZGdldFR5cGUsIGNvbnN0IFJlbgogICAgIGd0a19z
dHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdz
PihmbGFncykpOwogCiAgICAgaWYgKHdpZGdldFR5cGUgPT0gR1RLX1RZUEVfQ0hFQ0tfQlVUVE9O
KQotICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBlbHNlCi0gICAgICAgIGd0a19y
ZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgICAgICBndGtfcmVuZGVyX29wdGlvbihjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmpl
Y3QpKSB7CiAgICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdChyZWN0KTsKICAgICAgICAgZ2lu
dCBpbmRpY2F0b3JTcGFjaW5nOwogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUo
Y29udGV4dCwgImluZGljYXRvci1zcGFjaW5nIiwgJmluZGljYXRvclNwYWNpbmcsIG51bGxwdHIp
OwogICAgICAgICBpbmRpY2F0b3JSZWN0LmluZmxhdGUoaW5kaWNhdG9yU3BhY2luZyk7Ci0gICAg
ICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5kaWNhdG9yUmVjdC55KCksCisg
ICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaW5kaWNhdG9yUmVjdC54KCksIGluZGljYXRvclJlY3QueSgp
LAogICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC53aWR0aCgpLCBpbmRpY2F0b3JSZWN0LmhlaWdo
dCgpKTsKICAgICB9CiAKQEAgLTU5NCw4ICs1OTQsOCBAQCBzdGF0aWMgdm9pZCByZW5kZXJCdXR0
b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
bgogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxF
X0NMQVNTX0RFRkFVTFQpOwogICAgIH0KIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJl
Y3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgp
LCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5k
ZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lk
dGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0
LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWln
aHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmplY3QpKSB7CiAgICAg
ICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7CkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGlj
IHZvaWQgcmVuZGVyQnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBSZW4KICAgICAgICAgICAgIGJ1dHRvblJlY3QubW92ZShjaGlsZERpc3Bs
YWNlbWVudFgsIGNoaWxkRGlzcGxhY2VtZW50WSk7CiAgICAgICAgIH0KIAotICAgICAgICBndGtf
cmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRo
KCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRl
eHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJl
Y3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKICAgICB9CiB9CiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludEJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC03NDQsNyArNzQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29u
c3QgUGFpbnQKICAgICAvLyBGSVhNRTogYWRvcHQgc3VicGl4ZWwgdGhlbWVzLgogICAgIEludFJl
Y3QgcmVjdCA9IEludFJlY3Qocik7CiAKLSAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fp
cm9Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
ICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PEd0a1RleHREaXJl
Y3Rpb24+KGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkp
KTsKIAogICAgIC8vIFBhaW50IHRoZSBidXR0b24uCkBAIC04ODAsOCArODgwLDggQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJP
YmplY3QsIGNvbnN0IFBhaW4KICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfRk9DVVNF
RDsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8
R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVy
X2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVj
dCkgJiYgaXNFbmFibGVkKHJlbmRlck9iamVjdCkpIHsKICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJp
b3JGb2N1czsKQEAgLTg5MCw3ICs4OTAsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRl
eHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbgogICAg
ICAgICBpZiAoIWludGVyaW9yRm9jdXMpIHsKICAgICAgICAgICAgIEludFJlY3QgZm9jdXNSZWN0
KHJlY3QpOwogICAgICAgICAgICAgZm9jdXNSZWN0LmluZmxhdGUoZm9jdXNXaWR0aCArIGZvY3Vz
UGFkKTsKLSAgICAgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3Qu
eSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAg
IGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgZm9jdXNSZWN0LngoKSwgZm9jdXNSZWN0LnkoKSwgZm9jdXNSZWN0Lndp
ZHRoKCksIGZvY3VzUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkwNCw3
ICs5MDQsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjbwogICAgIHJldHVybiBwYWludFRleHRG
aWVsZChvLCBpLCByKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGlj
b25SZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGljb25SZWN0KQogewog
ICAgIEludFNpemUgaWNvblNpemUoZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgoaWNvbiksIGdka19waXhi
dWZfZ2V0X2hlaWdodChpY29uKSk7CiAgICAgR1JlZlB0cjxHZGtQaXhidWY+IHNjYWxlZEljb247
CkBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnMKICAgICAgICAgaWNv
biA9IHNjYWxlZEljb24uZ2V0KCk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJv
X3NldF9zb3VyY2VfcGl4YnVmKGNyLCBpY29uLCBpY29uUmVjdC54KCksIGljb25SZWN0LnkoKSk7
CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5k
ZXJPYmplY3QmIHIKICAgICAgICAgZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUo
KS5kaXJlY3Rpb24oKSksCiAgICAgICAgIGd0a0ljb25TdGF0ZSh0aGlzLCByZW5kZXJPYmplY3Qp
LAogICAgICAgICBnZXRJY29uU2l6ZUZvclBpeGVsU2l6ZShyZWN0LmhlaWdodCgpKSk7Ci0gICAg
cGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsK
KyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgpLCBpY29u
UmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyT2JqZQogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVj
dC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMsIHJlbmRl
ck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVpZ2h0KCkp
KTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQoKSwgaWNv
blJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGljb24uZ2V0
KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwNDcsNyArMTA0Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiB7CiAgICAgLy8gVGhlIG90aGVyIHBhaW50IG1l
dGhvZHMgZG9uJ3QgbmVlZCB0byBjaGVjayB3aGV0aGVyIHBhaW50aW5nIGlzIGRpc2FibGVkIGJl
Y2F1c2UgUmVuZGVyVGhlbWUgYWxyZWFkeSBjaGVja3MgaXQKICAgICAvLyBiZWZvcmUgY2FsbGlu
ZyB0aGVtLCBidXQgcGFpbnRDYXBzTG9ja0luZGljYXRvcigpIGlzIGNhbGxlZCBieSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUgd2hpY2ggZG9lc24ndCBjaGVjayBpdC4KLSAgICBpZiAocGFp
bnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aW50IGljb25TaXplID0gc3RkOjptaW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKQEAg
LTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRp
Y2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiAgICAgICAgIHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpIC0gaWNvblNpemUsCiAgICAgICAgIHJlY3QueSgpICsgKHJlY3Qu
aGVpZ2h0KCkgLSBpY29uU2l6ZSkgLyAyLAogICAgICAgICBpY29uU2l6ZSwgaWNvblNpemUpOwot
ICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVj
dCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwg
aWNvblJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTAyLDE1ICsxMTAyLDE1IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVyT2JqZWN0
KSkKICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIEdUS19TVEFU
RV9GTEFHX0lOU0VOU0lUSVZFKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2Zy
YW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0
a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVjdCkp
IHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKICAgICAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsICJmb2N1cy1saW5lLXdpZHRoIiwgJmZvY3VzV2lk
dGgsICJmb2N1cy1wYWRkaW5nIiwgJmZvY3VzUGFkLCBudWxscHRyKTsKICAgICAgICAgSW50UmVj
dCBmb2N1c1JlY3QocmVjdCk7CiAgICAgICAgIGZvY3VzUmVjdC5pbmZsYXRlKGZvY3VzV2lkdGgg
KyBmb2N1c1BhZCk7Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1Jl
Y3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAg
Z3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lk
dGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICB9CiAKICAgICBndGtfc3R5bGVfY29udGV4
dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGEKICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOwogICAgIGd0
a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZs
YWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9zbGlkZXIoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAgICBndGtfcmVuZGVyX3NsaWRlcihjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKICAgICAgICAgcGFydCA9PSBT
bGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwgOiBH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9y
ZShjb250ZXh0KTsKQEAgLTExNzQsOCArMTE3NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NM
QVNTX1RST1VHSCk7CiAKLSAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3RrX3JlbmRlcl9mcmFtZShjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVy
X2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsK
IApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVz
c0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBwcm9n
cmVzc1JlY3QgPSBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KHJlbmRlck9i
amVjdCwgcHJvZ3Jlc3NSZWN0KTsKIAogICAgIGlmICghcHJvZ3Jlc3NSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgZ3RrX3JlbmRlcl9hY3Rpdml0eShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55
KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55KCksIHBy
b2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0
eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjU2
LDggKzEyNTYsOCBAQCBzdGF0aWMgdm9pZCBwYWludFNwaW5BcnJvd0J1dHRvbihSZW5kZXJUaGVt
ZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgYwogICAgIGJ1dHRvblJlY3Quc2V0
SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyAyKTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfanVu
Y3Rpb25fc2lkZXMoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrSnVuY3Rpb25TaWRlcz4oanVuY3Rp
b24pKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0
LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKLSAgICBndGtf
cmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRo
KCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25S
ZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55
KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAKICAgICAvLyBQ
YWludCBhcnJvdyBjZW50ZXJlZCBpbnNpZGUgYnV0dG9uLgogICAgIC8vIFRoaXMgY29kZSBpcyBi
YXNlZCBvbiBndGtzcGluYnV0dG9uLmMgY29kZS4KQEAgLTEyODMsNyArMTI4Myw3IEBAIHN0YXRp
YyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVD
b250ZXh0KiBjb250ZXh0LCBjCiAgICAgZ2ludCBoZWlnaHQgPSAod2lkdGggKyAxKSAvIDI7CiAK
ICAgICBhcnJvd1JlY3QubW92ZSgoYXJyb3dSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyLCAoYXJy
b3dSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDIpOwotICAgIGd0a19yZW5kZXJfYXJyb3coY29u
dGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBhbmdsZSwg
YXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgpOworICAgIGd0a19yZW5kZXJfYXJy
b3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
YW5nbGUsIGFycm93UmVjdC54KCksIGFycm93UmVjdC55KCksIHdpZHRoKTsKIAogICAgIGd0a19z
dHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBT
dHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKQogfQogI2Vu
ZGlmCiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgY2hhciogc3ltYm9saWNJY29uTmFtZSwgY29uc3QgY2hhciogZmFs
bGJhY2tTdG9ja0ljb25OYW1lKQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBj
b25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCiB7CiAgICAgSW50UmVjdCBpY29uUmVj
dCgKICAgICAgICAgcmVjdC54KCkgKyAocmVjdC53aWR0aCgpIC0gbV9tZWRpYUljb25TaXplKSAv
IDIsCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpoYXNPd25EaXNh
YmxlZFN0YXRlSGFuZGxpbmdGb3IoQ29udHJvbFBhcnQgcGFydCkgY29uc3QKIAogYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QsICJ2aWV3LWZ1bGxzY3JlZW4tc3ltYm9saWMiLCBHVEtfU1RP
Q0tfRlVMTFNDUkVFTik7CisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0
LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCAidmlldy1mdWxsc2NyZWVuLXN5bWJvbGljIiwg
R1RLX1NUT0NLX0ZVTExTQ1JFRU4pOwogfQogCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1l
ZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xNDQ2LDcgKzE0NDYs
NyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIG11dGVkID0gbWVkaWFFbGVtZW50LT5tdXRlZCgpOwotICAgIHJldHVybiBwYWludE1l
ZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsCisgICAgcmV0
dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCgpLCBy
ZWN0LAogICAgICAgICBtdXRlZCA/ICJhdWRpby12b2x1bWUtbXV0ZWQtc3ltYm9saWMiIDogImF1
ZGlvLXZvbHVtZS1oaWdoLXN5bWJvbGljIiwKICAgICAgICAgbXV0ZWQgPyAiYXVkaW8tdm9sdW1l
LW11dGVkIiA6ICJhdWRpby12b2x1bWUtaGlnaCIpOwogfQpAQCAtMTQ2MSwxOSArMTQ2MSwxOSBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxheUJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9v
bCBzaG93UGxheUJ1dHRvbiA9IG5vZGVIYXNDbGFzcyhub2RlLCAicGF1c2VkIik7CiAKLSAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LAorICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCwKICAgICAgICAgc2hvd1BsYXlCdXR0b24gPyAibWVkaWEtcGxheWJh
Y2stc3RhcnQtc3ltYm9saWMiIDogIm1lZGlhLXBsYXliYWNrLXBhdXNlLXN5bWJvbGljIiwKICAg
ICAgICAgc2hvd1BsYXlCdXR0b24gPyBHVEtfU1RPQ0tfTUVESUFfUExBWSA6IEdUS19TVE9DS19N
RURJQV9QQVVTRSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrQmFj
a0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVk
aWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNl
ZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfUkVXSU5EKTsKKyAgICByZXR1
cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJl
Y3QsICJtZWRpYS1zZWVrLWJhY2t3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElBX1JFV0lO
RCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0
b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNlZWstZm9y
d2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9GT1JXQVJEKTsKKyAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJt
ZWRpYS1zZWVrLWZvcndhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfRk9SV0FSRCk7CiB9
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oY29uc3Qg
UmVuZGVyT2JqZWN0JiByZQogICAgICAgICBpY29uID0gZ2V0U3RvY2tTeW1ib2xpY0ljb25Gb3JX
aWRnZXRUeXBlKEdUS19UWVBFX0NPTlRBSU5FUiwgInVzZXItaW52aXNpYmxlLXN5bWJvbGljIiwg
R1RLX1NUT0NLX0pVU1RJRllfRklMTCwKICAgICAgICAgICAgIGd0a1RleHREaXJlY3Rpb24ocmVu
ZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLCBndGtJY29uU3RhdGUodGhpcywgcmVuZGVy
T2JqZWN0KSwgaWNvblJlY3Qud2lkdGgoKSk7CiAgICAgfQotICAgIHBhaW50R2RrUGl4YnVmKHBh
aW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhi
dWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVy
biB0cnVlOwogfQogI2VuZGlmCkBAIC0xNTA3LDkgKzE1MDcsOSBAQCBib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQ
YWludEluZgogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBj
b250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAg
Y29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAK
ICAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOwogICAg
IGZsb2F0IHRvdGFsVHJhY2tXaWR0aCA9IHIud2lkdGgoKTsKQEAgLTE1MjcsMTcgKzE1MjcsMTcg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmYKICAgICAgICAgcmFuZ2VSZWN0LnNldFdpZHRoKGxl
bmd0aFJhdGlvICogdG90YWxUcmFja1dpZHRoKTsKICAgICAgICAgaWYgKGluZGV4KQogICAgICAg
ICAgICAgcmFuZ2VSZWN0Lm1vdmUoc3RhcnRSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCwgMCk7Ci0g
ICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVj
dCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250
ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFk
aWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAotICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQog
ewogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IG8uc3R5bGUoKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9t
U3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUp
KSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5j
b2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTU1Niw5ICsxNTU2LDkg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICBpZiAoIXZvbHVtZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0KCk7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShO
b1N0cm9rZSk7CiAKICAgICBpbnQgcmVjdEhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CiAgICAgZmxv
YXQgdHJhY2tIZWlnaHQgPSByZWN0SGVpZ2h0ICogdm9sdW1lOwpAQCAtMTU2Nyw5ICsxNTY3LDkg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICB2b2x1bWVSZWN0Lm1vdmUoMCwgcmVjdEhl
aWdodCAtIHRyYWNrSGVpZ2h0KTsKICAgICB2b2x1bWVSZWN0LnNldEhlaWdodChjZWlsKHRyYWNr
SGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLAorICAgIGNvbnRleHQu
ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9sdW1lUmVjdCwgYm9yZGVyUmFkaWlG
cm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5kZXggNGFjZDBhNmU0ZDUz
ZGMzOTQ0NDI5YWI4MDUzZTFiMTJmYjU1MWU1OC4uMWI5YzBiMzM4YmQyNmJmZWQxZDA5NjdhNjdj
NDkwODkxOTY5MmVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgflJlbmRlclRoZW1l
SU9TKCkgeyB9CiAKICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IoKSBjb25zdDsKLSAgICBG
bG9hdFJlY3QgYWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAgICBGbG9hdFJlY3QgYWRkUm91bmRl
ZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmKTsKIAogICAgIHZpcnR1YWwgQ29sb3Igc3lzdGVtQ29sb3IoQ1NTVmFsdWVJ
RCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQppbmRleCBlYzcyYWUzMzlhNjJlN2RkOTUwMjA3MjlhMWRiMmRmZjQxMDQzNzBmLi43
MDQ3ZjNkNDNiZDFmZjZkNjI1M2I1MzIxNWZjOGFiZThkYWMwZmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zMjQsNyArMzI0LDcgQEAgY29uc3Qg
Q29sb3ImIFJlbmRlclRoZW1lSU9TOjpzaGFkb3dDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIGNv
bG9yOwogfQogCi1GbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRCb3JkZXJDbGlw
KGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QpCitGbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFkZFJvdW5kZWRCb3Jk
ZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gVG8gZml4IGlubmVyIGJvcmRlciBibGVl
ZGluZyBpc3N1ZXMgPHJkYXI6Ly9wcm9ibGVtLzk4MTI1MDc+LCB3ZSBjbGlwIHRvIHRoZSBvdXRl
ciBib3JkZXIgYW5kIGFzc2VydCB0aGF0CiAgICAgLy8gdGhlIGJvcmRlciBpcyBvcGFxdWUgb3Ig
dHJhbnNwYXJlbnQsIHVubGVzcyB3ZSdyZSBjaGVja2VkIGJlY2F1c2UgY2hlY2tlZCByYWRpby9j
aGVja2JveGVzIHNob3cgbm8gYmxlZWRpbmcuCkBAIC0zMzIsOSArMzMyLDkgQEAgRmxvYXRSZWN0
IFJlbmRlclRoZW1lSU9TOjphZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgR3JhcGhpY3MKICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0NoZWNrZWQoYm94KSA/
IHN0eWxlLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihyZWN0KSA6IHN0eWxlLmdldFJvdW5kZWRC
b3JkZXJGb3IocmVjdCk7CiAKICAgICBpZiAoYm9yZGVyLmlzUm91bmRlZCgpKQotICAgICAgICBj
b250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpKTsKKyAgICAg
ICAgY29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIpKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRleHQtPmNsaXAoYm9yZGVyLnJlY3QoKSk7CisgICAgICAgIGNv
bnRleHQuY2xpcChib3JkZXIucmVjdCgpKTsKIAogICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewog
ICAgICAgICBBU1NFUlQoc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wQ29sb3IpLmFscGhhKCkgJSAyNTUgPT0gMCk7CkBAIC0zNjcsMTMgKzM2NywxMyBAQCBz
dGF0aWMgQ0dQb2ludCBzaG9ydGVuZWQoQ0dQb2ludCBzdGFydCwgQ0dQb2ludCBlbmQsIGZsb2F0
IHdpZHRoKQogCiBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVjb3JhdGlvbnMo
Y29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRl
ZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7CisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIEZs
b2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4
dCgpLCByZWN0KTsKIAogICAgIGZsb2F0IHdpZHRoID0gY2xpcC53aWR0aCgpOwogICAgIGZsb2F0
IGhlaWdodCA9IGNsaXAuaGVpZ2h0KCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBj
Z0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlm
IChpc0NoZWNrZWQoYm94KSkgewogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQs
IGdyYWRpZW50V2l0aE5hbWUoQ29uY2F2ZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9h
dFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24pOwogCkBA
IC0zOTgsMTUgKzM5OCwxNSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludENoZWNrYm94RGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaQogICAgICAgICAgICAg
c2hvcnRlbmVkKGxpbmVbMl0sIGxpbmVbMV0sIGxpbmVXaWR0aCAvIDQuMGYpCiAgICAgICAgIH07
CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lk
dGgpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4w
ZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhsaW5lV2lkdGgpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuN2YpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd0pvaW5lZExpbmVzKHNoYWRvdywgMywgdHJ1ZSwga0NHTGluZUNhcFNxdWFyZSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0pvaW5lZExpbmVzKHNoYWRvdywgMywgdHJ1
ZSwga0NHTGluZUNhcFNxdWFyZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcyhzdGQ6Om1pbihjbGlwLndpZHRoKCksIGNsaXAuaGVpZ2h0KCkpICogdGhp
Y2tuZXNzUmF0aW8pOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
Q29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMjQwIC8gMjU1LjBmKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6
bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMS4wZiwgMS4wZiwg
MS4wZiwgMjQwIC8gMjU1LjBmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Sm9pbmVkTGluZXMobGluZSwgMywgdHJ1ZSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgRmxvYXRQb2ludCBib3R0b21DZW50ZXIoY2xpcC54KCkgKyBjbGlw
LndpZHRoKCkgLyAyLjBmLCBjbGlwLm1heFkoKSk7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50
KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdyYWRpZW50KSwgY2xpcC5sb2NhdGlv
bigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRp
b24pOwpAQCAtNDUwLDEwICs0NTAsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0UmFk
aW9TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVtZW4KIAogYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRSYWRpb0RlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVj
dCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5j
b250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwg
cGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBGbG9hdFJlY3QgY2xpcCA9IGFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7CiAKLSAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChpc0NoZWNrZWQoYm94KSkgewogICAgICAgICBk
cmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29uY2F2ZUdyYWRp
ZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSks
IExpbmVhckludGVycG9sYXRpb24pOwogCkBAIC00NjUsMTAgKzQ2NSwxMCBAQCBib29sIFJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gs
IGNvbnN0IFBhaW50SQogICAgICAgICBjbGlwLmluZmxhdGVYKC1jbGlwLndpZHRoKCkgKiBJbm5l
ckludmVyc2VSYXRpbyk7CiAgICAgICAgIGNsaXAuaW5mbGF0ZVkoLWNsaXAuaGVpZ2h0KCkgKiBJ
bm5lckludmVyc2VSYXRpbyk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdSYWlz
ZWRFbGxpcHNlKGNsaXAsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgc2hhZG93
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgICAgICBGbG9h
dFNpemUgcmFkaXVzKGNsaXAud2lkdGgoKSAvIDIuMGYsIGNsaXAuaGVpZ2h0KCkgLyAyLjBmKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KGNsaXAsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOworICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXAsIHJh
ZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIH0KICAgICBGbG9hdFBvaW50IGJv
dHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMCwgY2xpcC5tYXhZKCkpOwog
ICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTaGFkZUdy
YWRpZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFko
KSksIExpbmVhckludGVycG9sYXRpb24pOwpAQCAtNDgxLDE1ICs0ODEsMTUgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRUZXh0RmllbGREZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgY29uc3QgUGEKICAgICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBib3guc3R5bGUoKTsKICAg
ICBGbG9hdFBvaW50IHBvaW50KHJlY3QueCgpICsgc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHJl
Y3QueSgpICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICBw
YWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KHN0eWxlLmdldFJvdW5kZWRCb3JkZXJG
b3IoTGF5b3V0UmVjdChyZWN0KSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhi
b3guZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0
KHJlY3QpKS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIC8vIFRoaXMgZ3JhZGllbnQgZ2V0cyBkcmF3
biBibGFjayB3aGVuIHByaW50aW5nLgogICAgIC8vIERvIG5vdCBkcmF3IHRoZSBncmFkaWVudCBp
ZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRvcCBib3JkZXIuCiAgICAgYm9vbCB0b3BCb3JkZXJJc0lu
dmlzaWJsZSA9ICFzdHlsZS5oYXNCb3JkZXIoKSB8fCAhc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSB8
fCBzdHlsZS5ib3JkZXJUb3BJc1RyYW5zcGFyZW50KCk7CiAgICAgaWYgKCFib3gudmlldygpLnBy
aW50aW5nKCkgJiYgIXRvcEJvcmRlcklzSW52aXNpYmxlKQotICAgICAgICBkcmF3QXhpYWxHcmFk
aWVudChwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGdyYWRpZW50V2l0aE5h
bWUoSW5zZXRHcmFkaWVudCksIHBvaW50LCBGbG9hdFBvaW50KENHUG9pbnRNYWtlKHBvaW50Lngo
KSwgcG9pbnQueSgpICsgMy4wZikpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKKyAgICAgICAgZHJh
d0F4aWFsR3JhZGllbnQocGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgZ3Jh
ZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwgcG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2ludE1h
a2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBmKSksIExpbmVhckludGVycG9sYXRpb24pOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjE4LDcgKzYxOCw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJv
eCwgY29uc3QKICAgICBSZW5kZXJTdHlsZSYgc3R5bGUgPSBib3guc3R5bGUoKTsKICAgICBmbG9h
dCBib3JkZXJUb3BXaWR0aCA9IHN0eWxlLmJvcmRlclRvcFdpZHRoKCk7CiAgICAgRmxvYXRSZWN0
IGNsaXAocmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHls
ZS5ib3JkZXJUb3BXaWR0aCgpLCByZWN0LndpZHRoKCkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgo
KSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgcmVjdC5oZWlnaHQoKSAtIHN0eWxlLmJvcmRl
clRvcFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKLSAgICBDR0NvbnRleHRS
ZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpOwogCiAgICAgZmxvYXQgYWRqdXN0TGVmdCA9IDAuNTsKICAgICBmbG9hdCBhZGp1c3RS
aWdodCA9IDAuNTsKQEAgLTYyOSw5ICs2MjksOSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWlu
dE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAg
ICAgewogICAgICAgICBGbG9hdFJlY3QgdGl0bGVDbGlwKGNsaXAueCgpIC0gYWRqdXN0TGVmdCwg
Y2xpcC55KCkgLSBhZGp1c3RUb3AsIGNsaXAud2lkdGgoKSAtIE1lbnVMaXN0QnV0dG9uUGFkZGlu
Z1JpZ2h0ICsgYWRqdXN0TGVmdCwgY2xpcC5oZWlnaHQoKSArIGFkanVzdFRvcCArIGFkanVzdEJv
dHRvbSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVDbGlwLAorICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRpdGxl
Q2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJU
b3BMZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxlZnRX
aWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0
KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksIEZsb2F0U2l6ZSgw
LCAwKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJC
b3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlckxl
ZnRXaWR0aCgpLCB2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCku
aGVpZ2h0KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSksIEZs
b2F0U2l6ZSgwLCAwKSkpOwogCkBAIC02NDMsMTkgKzY0MywxOSBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gs
IGNvbnN0CiAKICAgICBmbG9hdCBzZXBhcmF0b3IgPSBjbGlwLm1heFgoKSAtIE1lbnVMaXN0QnV0
dG9uUGFkZGluZ1JpZ2h0OwogCi0gICAgYm94LmRyYXdMaW5lRm9yQm94U2lkZSgqcGFpbnRJbmZv
LmNvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KHNlcGFyYXRvciAtIGJvcmRlclRvcFdpZHRo
LCBjbGlwLnkoKSksIEZsb2F0UG9pbnQoc2VwYXJhdG9yLCBjbGlwLm1heFkoKSkpLCBCU1JpZ2h0
LCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciks
IHN0eWxlLmJvcmRlclRvcFN0eWxlKCksIDAsIDApOworICAgIGJveC5kcmF3TGluZUZvckJveFNp
ZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0g
Ym9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQb2ludChzZXBhcmF0b3IsIGNsaXAubWF4
WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJv
cmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5bGUoKSwgMCwgMCk7CiAKICAgICBGbG9h
dFJlY3QgYnV0dG9uQ2xpcChzZXBhcmF0b3IgLSBhZGp1c3RUb3AsIGNsaXAueSgpIC0gYWRqdXN0
VG9wLCBNZW51TGlzdEJ1dHRvblBhZGRpbmdSaWdodCArIGFkanVzdFRvcCArIGFkanVzdFJpZ2h0
LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsgYWRqdXN0Qm90dG9tKTsKIAogICAgIC8vIE5v
dyBwYWludCB0aGUgYnV0dG9uIHBvcnRpb24uCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVk
UmVjdChidXR0b25DbGlwLAorICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCiAgICAgICAgICAgICBGbG9hdFNpemUo
MCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJUb3BSaWdodFJhZGl1
cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCksIHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCksIHJlY3Qu
aGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksCiAgICAgICAgICAgICBGbG9hdFNp
emUoMCwgMCksIEZsb2F0U2l6ZSh2YWx1ZUZvckxlbmd0aChzdHlsZS5ib3JkZXJCb3R0b21SaWdo
dFJhZGl1cygpLndpZHRoKCksIHJlY3Qud2lkdGgoKSkgLSBzdHlsZS5ib3JkZXJSaWdodFdpZHRo
KCksIHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0
KCksIHJlY3QuaGVpZ2h0KCkpIC0gc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSkpKTsKIAotICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+ZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNw
YWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0KGJ1dHRvbkNsaXAs
IHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRl
eHQsIGdyYWRpZW50V2l0aE5hbWUoaXNGb2N1c2VkKGJveCkgJiYgIWlzUmVhZE9ubHlDb250cm9s
KGJveCkgPyBDb25jYXZlR3JhZGllbnQgOiBDb252ZXhHcmFkaWVudCksIGJ1dHRvbkNsaXAubG9j
YXRpb24oKSwgRmxvYXRQb2ludChidXR0b25DbGlwLngoKSwgYnV0dG9uQ2xpcC5tYXhZKCkpLCBM
aW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICB9CkBAIC02NzAsNyArNjcwLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJv
eCYgYm94LCBjb25zdAogICAgICAgICBGbG9hdFJlY3QgZWxsaXBzZShidXR0b25DbGlwLngoKSAr
IChidXR0b25DbGlwLndpZHRoKCkgLSBjb3VudCAqIChzaXplICsgcGFkZGluZykgKyBwYWRkaW5n
KSAvIDIuMCwgYnV0dG9uQ2xpcC5tYXhZKCkgLSAxMC4wLCBzaXplLCBzaXplKTsKIAogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuNWYpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1JhaXNlZEVs
bGlwc2UoZWxsaXBzZSwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCAwLjVmKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAg
ICBlbGxpcHNlLm1vdmUoc2l6ZSArIHBhZGRpbmcsIDApOwogICAgICAgICB9CiAgICAgfSAgZWxz
ZSB7CkBAIC02ODksMTMgKzY4OSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAgICAg
IHNoYWRvd1syXSA9IEZsb2F0UG9pbnQoYXJyb3dbMl0ueCgpLCBhcnJvd1syXS55KCkgKyAxLjBm
KTsKIAogICAgICAgICBmbG9hdCBvcGFjaXR5ID0gaXNSZWFkT25seUNvbnRyb2woYm94KSA/IDAu
MiA6IDAuNTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
KDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBm
LCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBzaGFkb3csIHRydWUpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNp
dHkpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRGaWxsQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29u
KDMsIHNoYWRvdywgdHJ1ZSk7CiAKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5Z29uKDMsIGFy
cm93LCB0cnVlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihD
b2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93LCB0
cnVlKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC03NTksMTMgKzc1OSwxMyBAQCBi
b29sIFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYg
Ym94LCBjb25zdCBQYWludEluZm8mCiAKICAgICAvLyBEcmF3IHRoZSB0cmFjayBncmFkaWVudC4K
ICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFp
bnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAgSW50U2l6ZSBjb3JuZXJTaXpl
KGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwogICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IGlu
bmVyQm9yZGVyKHRyYWNrQ2xpcCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwg
Y29ybmVyU2l6ZSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
aW5uZXJCb3JkZXIpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChpbm5lckJvcmRlcik7CiAKLSAgICAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAgICAgQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgICAg
IElPU0dyYWRpZW50UmVmIGdyYWRpZW50ID0gcmVhZG9ubHkgPyBncmFkaWVudFdpdGhOYW1lKFJl
YWRvbmx5U2xpZGVyVHJhY2tHcmFkaWVudCkgOiBncmFkaWVudFdpdGhOYW1lKFNsaWRlclRyYWNr
R3JhZGllbnQpOwogICAgICAgICBpZiAoaXNIb3Jpem9udGFsKQogICAgICAgICAgICAgZHJhd0F4
aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVudCwgdHJhY2tDbGlwLmxvY2F0aW9uKCksIEZs
b2F0UG9pbnQodHJhY2tDbGlwLngoKSwgdHJhY2tDbGlwLm1heFkoKSksIExpbmVhckludGVycG9s
YXRpb24pOwpAQCAtNzc1LDEzICs3NzUsMTMgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRT
bGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJbmZvJgogCiAg
ICAgLy8gRHJhdyB0aGUgdHJhY2sgYm9yZGVyLgogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
IAotICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOworICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgaWYgKHJlYWRvbmx5KQot
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDE3OCwg
MTc4LCAxNzgpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoNzYsIDc2LCA3NiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcig3Niwg
NzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAgICAgUmV0YWluUHRyPENHTXV0
YWJsZVBhdGhSZWY+IHJvdW5kZWRSZWN0UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJs
ZSgpKTsKICAgICAgICAgQ0dQYXRoQWRkUm91bmRlZFJlY3Qocm91bmRlZFJlY3RQYXRoLmdldCgp
LCAwLCB0cmFja0NsaXAsIGNvcm5lcldpZHRoLCBjb3JuZXJIZWlnaHQpOwpAQCAtODEyLDEwICs4
MTIsMTAgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRl
clN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50U2xpZGVyVGh1bWJEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Ci0gICAg
RmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250
ZXh0LCByZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CisgICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVy
Q2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogCi0gICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRl
eHQoKTsKICAgICBGbG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgo
KSAvIDIuMGYsIGNsaXAubWF4WSgpKTsKICAgICBpZiAoaXNQcmVzc2VkKGJveCkpCiAgICAgICAg
IGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShTbGlkZXJUaHVt
Yk9wYXF1ZVByZXNzZWRHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludChjbGlw
LngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKQEAgLTg0NSwxOCArODQ1
LDE4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgY29uc3QgaW50IHByb2dyZXNzQmFy
SGVpZ2h0ID0gOTsKICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNhbE9mZnNldCA9IChyZWN0LmhlaWdo
dCgpIC0gcHJvZ3Jlc3NCYXJIZWlnaHQpIC8gMi4wOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGlmIChy
ZWN0LndpZHRoKCkgPCAxMCB8fCByZWN0LmhlaWdodCgpIDwgOSkgewogICAgICAgICAvLyBUaGUg
cmVjdCBpcyBzbWFsbGVyIHRoYW4gdGhlIHN0YW5kYXJkIHByb2dyZXNzIGJhci4gV2UgY2xpcCB0
byB0aGUgZWxlbWVudCdzIHJlY3QgdG8gYXZvaWQKICAgICAgICAgLy8gbGVha2luZyBwaXhlbHMg
b3V0c2lkZSB0aGUgcmVwYWludCByZWN0LgotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xp
cChyZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKHJlY3QpOwogICAgIH0K
IAogICAgIC8vIDEpIERyYXcgdGhlIHByb2dyZXNzIGJhciB0cmFjay4KICAgICAvLyAxLjEpIERy
YXcgdGhlIHdoaXRlIGJhY2tncm91bmQgd2l0aCBncmV5IGdyYWRpZW50IGJvcmRlci4KLSAgICBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBjb250ZXh0
LT5zZXRTdHJva2VUaGlja25lc3MoMC42OCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0KCk7CisgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMC42OCk7CisgICAgY29u
dGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAKICAgICBjb25zdCBmbG9hdCB2ZXJ0
aWNhbFJlbmRlcmluZ1Bvc2l0aW9uID0gcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldDsKICAgICBS
ZWZQdHI8R3JhZGllbnQ+IHN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBv
aW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkp
OwpAQCAtODY0LDI4ICs4NjQsMjggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVz
c0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAgICBzdHJv
a2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNDUsIENvbG9yKDB4ZWUsIDB4ZWUsIDB4ZWUpKTsK
ICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENvbG9yKDB4ZWUsIDB4ZWUs
IDB4ZWUpKTsKICAgICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29sb3IoMHg4
ZCwgMHg4ZCwgMHg4ZCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KHN0cm9rZUdy
YWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlR3JhZGllbnQo
c3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBDb2xvclNwYWNlIGNvbG9y
U3BhY2UgPSByZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5zZXRG
aWxsQ29sb3IoQ29sb3IoMjU1LCAyNTUsIDI1NSksIGNvbG9yU3BhY2UpOworICAgIGNvbnRleHQu
c2V0RmlsbENvbG9yKENvbG9yKDI1NSwgMjU1LCAyNTUpLCBjb2xvclNwYWNlKTsKIAogICAgIFBh
dGggdHJhY2tQYXRoOwogICAgIEZsb2F0UmVjdCB0cmFja1JlY3QocmVjdC54KCkgKyAwLjI1LCB2
ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgcmVjdC53aWR0aCgpIC0gMC41LCBwcm9n
cmVzc0JhckhlaWdodCAtIDAuNSk7CiAgICAgRmxvYXRTaXplIHJvdW5kZWRDb3JuZXJSYWRpdXMo
NSwgNCk7CiAgICAgdHJhY2tQYXRoLmFkZFJvdW5kZWRSZWN0KHRyYWNrUmVjdCwgcm91bmRlZENv
cm5lclJhZGl1cyk7Ci0gICAgY29udGV4dC0+ZHJhd1BhdGgodHJhY2tQYXRoKTsKKyAgICBjb250
ZXh0LmRyYXdQYXRoKHRyYWNrUGF0aCk7CiAKICAgICAvLyAxLjIpIERyYXcgdG9wIGdyYWRpZW50
IG9uIHRoZSB1cHBlciBoYWxmLiBJdCBpcyBzdXBwb3NlZCB0byBvdmVybGF5IHRoZSBmaWxsIGZy
b20gdGhlIGJhY2tncm91bmQgYW5kIGRhcmtlciB0aGUgc3Ryb2tlZCBwYXRoLgogICAgIEZsb2F0
UmVjdCBib3JkZXIocmVjdC54KCksIHJlY3QueSgpICsgdmVydGljYWxPZmZzZXQsIHJlY3Qud2lk
dGgoKSwgcHJvZ3Jlc3NCYXJIZWlnaHQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJv
dW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRp
dXMpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywg
cm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQg
dXBwZXJHcmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47CiAgICAgUmVmUHRy
PEdyYWRpZW50PiB1cHBlckdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJl
Y3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41KSwgRmxvYXRQb2ludChyZWN0
LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWlnaHQgLSAx
LjUpKTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC4wLCBDb2xvcigxMzMsIDEz
MywgMTMzLCAxODgpKTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xv
cigxOCwgMTgsIDE4LCA1MSkpOwotICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCh1cHBlckdy
YWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KHVw
cGVyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICBjb250ZXh0LT5maWxsUmVjdChG
bG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgo
KSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0
KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uLCByZWN0LndpZHRoKCksIHVwcGVy
R3JhZGllbnRIZWlnaHQpKTsKIAogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93
bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlcmVyKTsKICAgICBpZiAocmVuZGVyUHJvZ3Jlc3Mu
aXNEZXRlcm1pbmF0ZSgpKSB7CkBAIC04OTksMTMgKzg5OSwxMyBAQCBib29sIFJlbmRlclRoZW1l
SU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IFBhaW50SQogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTEsIENvbG9yKDM2
LCAxMTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNTUsIENv
bG9yKDM2LCAxMTQsIDIxMCkpOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEu
MCwgQ29sb3IoNTcsIDE0MiwgMjQ0KSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVu
dChiYXJHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQoYmFyR3JhZGllbnQucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAgUmVmUHRy
PEdyYWRpZW50PiBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpKTsK
ICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDk1LCAx
MDcsIDE4MykpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuNSwg
Q29sb3IoNjYsIDEwNiwgMTc0LCAyNDApKTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCgxLjAsIENvbG9yKDM4LCAxMDQsIDE2NikpOwotICAgICAgICBjb250ZXh0LT5z
ZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNlTm9uTnVsbCgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChiYXJTdHJva2VHcmFkaWVudC5yZWxlYXNl
Tm9uTnVsbCgpKTsKIAogICAgICAgICBQYXRoIGJhclBhdGg7CiAgICAgICAgIGludCBsZWZ0ID0g
cmVjdC54KCk7CkBAIC05MTMsNyArOTEzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEkKICAg
ICAgICAgICAgIGxlZnQgPSByZWN0Lm1heFgoKSAtIGJhcldpZHRoOwogICAgICAgICBGbG9hdFJl
Y3QgYmFyUmVjdChsZWZ0ICsgMC4yNSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuMjUs
IHN0ZDo6bWF4KGJhcldpZHRoIC0gMC41LCAwLjApLCBwcm9ncmVzc0JhckhlaWdodCAtIDAuNSk7
CiAgICAgICAgIGJhclBhdGguYWRkUm91bmRlZFJlY3QoYmFyUmVjdCwgcm91bmRlZENvcm5lclJh
ZGl1cyk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdQYXRoKGJhclBhdGgpOworICAgICAgICBjb250
ZXh0LmRyYXdQYXRoKGJhclBhdGgpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTk4
NCwxMCArOTg0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50CiAKIGJvb2wgUmVuZGVyVGhl
bWVJT1M6OnBhaW50UHVzaEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0
KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJ
bmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5k
ZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
OworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwogICAgIGlmIChib3guc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmlzRGFyaygpKQogICAgICAgICBkcmF3QXhpYWxH
cmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29udmV4R3JhZGllbnQpLCBjbGlw
LmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50
ZXJwb2xhdGlvbik7CiAgICAgZWxzZSB7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBjb25zdCBpbnQg
a011bHRpcGxlVGh1bWJuYWlsU2hyaW5rU2l6ZSA9IDI7CiAKIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBSZW5kZXJPYmplY3QmIGJ1dHRvblJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCwgSWNvbiogaWNvbiwgRmlsZVVwbG9hZERlY29yYXRpb25z
IGZpbGVVcGxvYWREZWNvcmF0aW9ucykKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBJbnRTaXplIGNv
cm5lclNpemUoa1RodW1ibmFpbEJvcmRlckNvcm5lclJhZGl1cywga1RodW1ibmFpbEJvcmRlckNv
cm5lclJhZGl1cyk7CiAgICAgQ29sb3IgcGljdHVyZUZyYW1lQ29sb3IgPSBidXR0b25SZW5kZXJl
ci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9y
KTsKQEAgLTEwMzEsMTIgKzEwMzEsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxl
VXBsb2FkSWNvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKIAogICAg
ICAgICAvLyBCYWNrZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIHNpbXBsZSBiYWNrZ3JvdW5kIGlj
b24gd2l0aCBhIGdyYWRpZW50IG1hdGNoaW5nIHRoZSBidXR0b24uCiAgICAgICAgIENvbG9yIGJh
Y2tncm91bmRJbWFnZUNvbG9yID0gQ29sb3IoYnV0dG9uUmVuZGVyZXIuc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLnJnYigpKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRo
dW1ibmFpbFBpY3R1cmVGcmFtZVJlY3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNp
emUsIGNvcm5lclNpemUpLCBwaWN0dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNr
Z3JvdW5kSW1hZ2VDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGlj
dHVyZUZyYW1lUmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVy
U2l6ZSksIHBpY3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdCh0aHVtYm5haWxSZWN0LCBiYWNrZ3JvdW5kSW1h
Z2VDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHsKLSAgICAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcjIoKnBhaW50SW5mby5jb250ZXh0KTsK
LSAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcCh0
aHVtYm5haWxSZWN0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcjIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcCh0aHVtYm5haWxSZWN0KTsKICAgICAgICAg
ICAgIGlmIChiYWNrZ3JvdW5kSW1hZ2VDb2xvci5pc0RhcmsoKSkKICAgICAgICAgICAgICAgICBk
cmF3QXhpYWxHcmFkaWVudChjZ0NvbnRleHQsIGdyYWRpZW50V2l0aE5hbWUoQ29udmV4R3JhZGll
bnQpLCB0aHVtYm5haWxSZWN0LmxvY2F0aW9uKCksIEZsb2F0UG9pbnQodGh1bWJuYWlsUmVjdC54
KCksIHRodW1ibmFpbFJlY3QubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAgICAgICAg
ICAgICBlbHNlIHsKQEAgLTEwNTIsOCArMTA1Miw4IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBh
aW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBS
CiAgICAgfQogCiAgICAgLy8gRm9yZWdyb3VuZCBwaWN0dXJlIGZyYW1lIGFuZCBpY29uLgotICAg
IHBhaW50SW5mby5jb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVt
Ym5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXpl
LCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgIGljb24tPnBhaW50KCpwYWludEluZm8uY29udGV4dCwgdGh1bWJuYWlsUmVjdCk7CisgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVt
Ym5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXpl
LCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1lQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGljb24tPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIHRodW1ibmFpbFJlY3QpOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tCmluZGV4IGRlMjJkMDBjODY3ZTQ0MDBkZTQ2ODMxMDZmNGY0NzYyMjNlMGZmYTIuLmZi
NGU0YzgwYzg2MjkwZGNlMTZhY2FhMTlkYmZiN2QyZmEzNmU5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTg1MCwxMSArODUwLDExIEBAIE5TQ29u
dHJvbFNpemUgUmVuZGVyVGhlbWVNYWM6OmNvbnRyb2xTaXplRm9yU3lzdGVtRm9udChSZW5kZXJT
dHlsZSYgc3R5bGUpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEZpZWxk
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxD
b250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgTlNUZXh0RmllbGRD
ZWxsICp0ZXh0RmllbGQgPSB0aGlzLT50ZXh0RmllbGQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAg
IFt0ZXh0RmllbGQgc2V0RW5hYmxlZDooaXNFbmFibGVkKG8pICYmICFpc1JlYWRPbmx5Q29udHJv
bChvKSldOwogICAgIFt0ZXh0RmllbGQgZHJhd1dpdGhGcmFtZTpOU1JlY3QocikgaW5WaWV3OmRv
Y3VtZW50Vmlld0ZvcihvKV07CkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1h
Yzo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxl
bWVudCoKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHIp
CiB7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludElu
Zm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4
dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICB3a0RyYXdCZXplbGVkVGV4dEFyZWEociwgaXNF
bmFibGVkKG8pICYmICFpc1JlYWRPbmx5Q29udHJvbChvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpAQCAtOTA5LDcgKzkwOSw3IEBAIGNvbnN0IGludCogUmVuZGVyVGhlbWVNYWM6OnBvcHVwQnV0
dG9uUGFkZGluZyhOU0NvbnRyb2xTaXplIHNpemUpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBMb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250
ZXh0KCkpOwogICAgIHNldFBvcHVwQnV0dG9uQ2VsbFN0YXRlKHJlbmRlcmVyLCBJbnRTaXplKHJl
Y3Quc2l6ZSgpKSk7CiAKICAgICBOU1BvcFVwQnV0dG9uQ2VsbCogcG9wdXBCdXR0b24gPSB0aGlz
LT5wb3B1cEJ1dHRvbigpOwpAQCAtOTI0LDE5ICs5MjQsMTkgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWlu
dEluZm8KICAgICBpZiAocmVjdC53aWR0aCgpID49IG1pbmltdW1NZW51TGlzdFNpemUocmVuZGVy
ZXIuc3R5bGUoKSkpCiAgICAgICAgIGluZmxhdGVkUmVjdCA9IGluZmxhdGVSZWN0KHJlY3QsIHNp
emUsIHBvcHVwQnV0dG9uTWFyZ2lucygpLCB6b29tTGV2ZWwpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAg
ICAgLy8gQmVmb3JlIFlvc2VtaXRlIHdlIGRpZCBub3Qgd2FudCB0aGUgY2VsbCB0byBldmVyIGRy
YXcgb3V0c2lkZSB0aGUgZ2l2ZW4gcmVjdGFuZ2xlLgogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9N
SU5fUkVRVUlSRUQgPCAxMDEwMDAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChpbmZsYXRl
ZFJlY3QpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChpbmZsYXRlZFJlY3QpOwogI2Vu
ZGlmCiAKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgaW5mbGF0ZWRSZWN0
LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgaW5m
bGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwot
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGlu
ZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50
cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRS
ZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpv
b21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNs
YXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAg
cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnRJZk5lY2Vzc2FyeShwb3B1
cEJ1dHRvbiwgcmVuZGVyZXIsIHBhaW50SW5mbywgaW5mbGF0ZWRSZWN0KTsKQEAgLTk2NCwxMCAr
OTY0LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mCiAgICAgaWYgKCFpczxSZW5kZXJNZXRl
cj4ocmVuZGVyT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0
KCkpOwogCiAgICAgTlNMZXZlbEluZGljYXRvckNlbGwqIGNlbGwgPSBsZXZlbEluZGljYXRvckZv
cihkb3duY2FzdDxSZW5kZXJNZXRlcj4ocmVuZGVyT2JqZWN0KSk7Ci0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAg
ICAgW2NlbGwgZHJhd1dpdGhGcmFtZTpyZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IocmVuZGVy
T2JqZWN0KV07CiAgICAgW2NlbGwgc2V0Q29udHJvbFZpZXc6bmlsXTsKQEAgLTExMzQsNyArMTEz
NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgdHJhY2tJbmZvLnJlc2VydmVkID0g
MDsKICAgICB0cmFja0luZm8uZmlsbGVyMSA9IDA7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIHBhaW50SW5mby5jb250ZXh0LCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIHBhaW50SW5mby5jb250ZXh0KCksIHRydWUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0xMTQyLDE0ICsxMTQyLDE0IEBAIGJvb2wgUmVu
ZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJP
YmplY3QsIGNvbnN0IFBhCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNnQ29udGV4dENv
bnRhaW5lci5jb250ZXh0KCk7CiAgICAgSElUaGVtZURyYXdUcmFjaygmdHJhY2tJbmZvLCAwLCBj
Z0NvbnRleHQsIGtISVRoZW1lT3JpZW50YXRpb25Ob3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAg
ICAgaWYgKCFyZW5kZXJQcm9ncmVzcy5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkg
ewotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKDIgKiBpbmZsYXRlZFJlY3Qu
eCgpICsgaW5mbGF0ZWRSZWN0LndpZHRoKCksIDApOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
dHJhbnNsYXRlKDIgKiBpbmZsYXRlZFJlY3QueCgpICsgaW5mbGF0ZWRSZWN0LndpZHRoKCksIDAp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6ZSgtMSwgMSkpOwog
ICAgIH0KIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGluZmxhdGVkUmVjdC5sb2NhdGlvbigpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtMTIxMCwxMCArMTIxMCwxMCBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywg
Y29uc3QgUAogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ29u
dGV4dENvbnRhaW5lciBjZ0NvbnRleHRDb250YWluZXIocGFpbnRJbmZvLmNvbnRleHQpOworICAg
IENvbnRleHRDb250YWluZXIgY2dDb250ZXh0Q29udGFpbmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQo
KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWlu
dEluZm8uY29udGV4dCgpKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYm9yZGVyID0gRmxvYXRS
b3VuZGVkUmVjdChvLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihyKSk7CiAgICAgaW50IHJh
ZGl1cyA9IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpOwpAQCAtMTIzOSwzMyArMTIz
OSwzMyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRz
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIFJldGFpblB0cjxDR1NoYWRpbmdS
ZWY+IHJpZ2h0U2hhZGluZyA9IGFkb3B0Q0YoQ0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBD
R1BvaW50TWFrZShyLm1heFgoKSwgIHIueSgpKSwgQ0dQb2ludE1ha2Uoci5tYXhYKCkgLSByYWRp
dXMsIHIueSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHsK
LSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8u
Y29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
YWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0
LCByKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOwog
ICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAg
Q0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwogICAgIH0K
IAogICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50
KSwgYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLCBib3JkZXIucmFkaWkoKS50b3BSaWdodCgpLCBJ
bnRTaXplKCksIEludFNpemUoKSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQp
LCBib3JkZXIucmFkaWkoKS50b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIElu
dFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWlu
ZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCB0b3BT
aGFkaW5nLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHko
KSkgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50
SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNv
bnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBS
b3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QoYm90dG9tR3JhZGll
bnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm9yZGVyLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBi
b3JkZXIucmFkaWkoKS5ib3R0b21SaWdodCgpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0
b21HcmFkaWVudCksIEludFNpemUoKSwgSW50U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21M
ZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbVJpZ2h0KCkpKTsKICAgICAgICAgY29udGV4dCA9
IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFk
aW5nKGNvbnRleHQsIGJvdHRvbVNoYWRpbmcuZ2V0KCkpOwogICAgIH0KIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4
dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludElu
Zm8uY29udGV4dCgpKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOwogICAgICAg
ICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250
ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgICAgICBDR0Nv
bnRleHREcmF3U2hhZGluZyhjb250ZXh0LCByaWdodFNoYWRpbmcuZ2V0KCkpOwpAQCAtMTI5Miwx
MCArMTI5MiwxMCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVj
b3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIGlmIChib3VuZHMud2lk
dGgoKSA8IGFycm93V2lkdGggKyBhcnJvd1BhZGRpbmdMZWZ0ICogcmVuZGVyZXIuc3R5bGUoKS5l
ZmZlY3RpdmVab29tKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29s
b3JTcGFjZSgpKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJv
a2UpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHJlbmRlcmVyLnN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCByZW5kZXJlci5zdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7CiAKICAgICBGbG9hdFBvaW50IGFycm93MVszXTsKICAgICBhcnJvdzFbMF0g
PSBGbG9hdFBvaW50KGxlZnRFZGdlLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJyb3dzIC8gMi4w
Zik7CkBAIC0xMzAzLDcgKzEzMDMsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgIGFy
cm93MVsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVy
WSAtIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgLSBhcnJvd0hlaWdodCk7CiAKICAgICAvLyBE
cmF3IHRoZSB0b3AgYXJyb3cKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHln
b24oMywgYXJyb3cxLCB0cnVlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdDb252ZXhQ
b2x5Z29uKDMsIGFycm93MSwgdHJ1ZSk7CiAKICAgICBGbG9hdFBvaW50IGFycm93MlszXTsKICAg
ICBhcnJvdzJbMF0gPSBGbG9hdFBvaW50KGxlZnRFZGdlLCBjZW50ZXJZICsgc3BhY2VCZXR3ZWVu
QXJyb3dzIC8gMi4wZik7CkBAIC0xMzExLDcgKzEzMTEsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJl
ciwgYwogICAgIGFycm93MlsyXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8g
Mi4wZiwgY2VudGVyWSArIHNwYWNlQmV0d2VlbkFycm93cyAvIDIuMGYgKyBhcnJvd0hlaWdodCk7
CiAKICAgICAvLyBEcmF3IHRoZSBib3R0b20gYXJyb3cKLSAgICBwYWludEluZm8uY29udGV4dC0+
ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cyLCB0cnVlKTsKKyAgICBwYWludEluZm8uY29udGV4
dCgpLmRyYXdDb252ZXhQb2x5Z29uKDMsIGFycm93MiwgdHJ1ZSk7CiAKICAgICBDb2xvciBsZWZ0
U2VwYXJhdG9yQ29sb3IoMCwgMCwgMCwgNDApOwogICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29s
b3IoMjU1LCAyNTUsIDI1NSwgNDApOwpAQCAtMTMyMSwxNCArMTMyMSwxNCBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94
JiByZW5kZXJlciwgYwogICAgIGludCBsZWZ0RWRnZU9mU2VwYXJhdG9yID0gc3RhdGljX2Nhc3Q8
aW50PihsZWZ0RWRnZSAtIGFycm93UGFkZGluZ0xlZnQgKiByZW5kZXJlci5zdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSk7IC8vIEZJWE1FOiBSb3VuZD8KIAogICAgIC8vIERyYXcgdGhlIHNlcGFyYXRv
ciB0byB0aGUgbGVmdCBvZiB0aGUgYXJyb3dzCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsgLy8gRGVsaWJlcmF0ZWx5IGlnbm9yZXMgem9vbSBzaW5jZSBpdCBs
b29rcyBuaWNlciBpZiBpdCBzdGF5cyB0aGluLgotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9r
ZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJv
dW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKDEp
OyAvLyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0
IHN0YXlzIHRoaW4uCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihsZWZ0U2Vw
YXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0
b3IsIGJvdW5kcy5tYXhZKCkpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNl
cGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0
cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRv
ciArIHNlcGFyYXRvclNwYWNlLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciArIHNlcGFyYXRvclNwYWNlLCBi
b3VuZHMubWF4WSgpKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTQ1NCw3ICsxNDU0LDcg
QEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeShOU0NlbGwKICAgICBib29sIHNob3VsZERyYXdGb2N1c1Jpbmcg
PSBpc0ZvY3VzZWQocmVuZGVyZXIpICYmIHJlbmRlcmVyLnN0eWxlKCkub3V0bGluZVN0eWxlSXNB
dXRvKCk7CiAgICAgYm9vbCBzaG91bGRVc2VJbWFnZUJ1ZmZlciA9IHJlbmRlcmVyLnN0eWxlKCku
ZWZmZWN0aXZlWm9vbSgpICE9IDEgfHwgcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgIT0gMTsKICAg
ICBib29sIHNob3VsZERyYXdDZWxsID0gdHJ1ZTsKLSAgICBpZiAoVGhlbWVNYWM6OmRyYXdDZWxs
T3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KGNlbGwsIHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LCBkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpLCBzaG91bGREcmF3Q2VsbCwgc2hvdWxkRHJh
d0ZvY3VzUmluZywgc2hvdWxkVXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpKQorICAgIGlmIChUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0Nv
bnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgZG9jdW1lbnRWaWV3Rm9yKHJl
bmRlcmVyKSwgc2hvdWxkRHJhd0NlbGwsIHNob3VsZERyYXdGb2N1c1JpbmcsIHNob3VsZFVzZUlt
YWdlQnVmZmVyLCBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKSkKICAgICAgICAgcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnROZWVkc1JlcGFpbnQoKTsKIH0KIApAQCAt
MTQ5MSw3ICsxNDkxLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhj
b25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgYm91bmRz
LnNldFgoci54KCkgKyByLndpZHRoKCkgLyAyIC0gem9vbWVkVHJhY2tXaWR0aCAvIDIpOwogICAg
IH0KIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBsb2Nh
bENvbnRleHQuY2dDb250ZXh0KCk7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmlj
ZVJHQkNvbG9yU3BhY2VSZWYoKTsKIApAQCAtMTQ5OSw3ICsxNDk5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBh
aW50SW5mbyYgcGEKICAgICBwYWludFNsaWRlclRpY2tzKG8sIHBhaW50SW5mbywgcik7CiAjZW5k
aWYKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWlu
dEluZm8uY29udGV4dCgpKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdW5k
cyk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2FsbGJhY2tzID0geyAw
LCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKQEAgLTE1MTEsNyArMTUxMSw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAgICAgICAgIG1haW5TaGFkaW5nID0gYWRvcHRDRihD
R1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKGJvdW5kcy54KCksICBib3Vu
ZHMueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgYm91bmRzLm1heFkoKSksIG1haW5GdW5j
dGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBJbnRTaXplIHJhZGl1cyh0cmFja1Jh
ZGl1cywgdHJhY2tSYWRpdXMpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1
cykpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRl
ZFJlY3QoYm91bmRzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzLCByYWRpdXMpKTsKICAgICBjb250
ZXh0ID0gbG9jYWxDb250ZXh0LmNnQ29udGV4dCgpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5n
KGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKIApAQCAtMTUzMiw3ICsxNTMyLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICAgICAgPyBzbGlkZXJUaHVtYlZlcnRpY2FsKCkKICAg
ICAgICAgOiBzbGlkZXJUaHVtYkhvcml6b250YWwoKTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAK
ICAgICAvLyBVcGRhdGUgdGhlIHZhcmlvdXMgc3RhdGVzIHdlIHJlc3BvbmQgdG8uCiAgICAgdXBk
YXRlRW5hYmxlZFN0YXRlKHNsaWRlclRodW1iQ2VsbCwgbyk7CkBAIC0xNTY4LDE2ICsxNTY4LDE2
IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiAgICAgaWYgKG8uc3R5bGUoKS5hcHBlYXJhbmNl
KCkgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpCiAgICAgICAgIGJvdW5kcy5zZXRIZWlnaHQo
Ym91bmRzLmhlaWdodCgpICsgdmVydGljYWxTbGlkZXJIZWlnaHRQYWRkaW5nICogby5zdHlsZSgp
LmVmZmVjdGl2ZVpvb20oKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgZmxvYXQgem9vbUxldmVsID0g
by5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIEZsb2F0UmVjdCB1bnpvb21lZFJlY3Qg
PSBib3VuZHM7CiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9vbWVk
UmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAg
IHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVs
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgp
LCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9v
bWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0U2l6
ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRy
YW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIAog
ICAgIFtzbGlkZXJUaHVtYkNlbGwgZHJhd0tub2I6dW56b29tZWRSZWN0XTsKQEAgLTE1ODgsMTIg
KzE1ODgsMTIgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKIAogYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewotICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAg
ICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwogCiAgICAgc2V0
U2VhcmNoQ2VsbFN0YXRlKG8sIHIpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgZmxvYXQgem9vbUxl
dmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIApAQCAtMTYwMiw5ICsxNjAyLDkgQEAg
Ym9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIGNvbnN0IFBhaW50SW5mbyYgcGEKICAgICBpZiAoem9vbUxldmVsICE9IDEuMGYpIHsKICAg
ICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8gem9vbUxl
dmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0
KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHVu
em9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJl
Y3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUodW56b29tZWRS
ZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CiAgICAgfQogCiAgICAgLy8gU2V0IHRoZSBzZWFyY2ggYnV0dG9uIHRvIG5pbCBiZWZvcmUg
ZHJhd2luZy4gIFRoZW4gcmVzZXQgaXQgc28gd2UgY2FuIGRyYXcgaXQgbGF0ZXIuCkBAIC0xNjg1
LDcgKzE2ODUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGlmICghaW5wdXQtPnJl
bmRlcmVyKCktPmlzQm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2FsQ3Vy
cmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAg
IExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgc2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVuZGVyZXIoKSwgcik7CiAK
ICAgICBOU1NlYXJjaEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CkBAIC0xNjk1
LDcgKzE2OTUsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGVsc2UgaWYgKFtbc2Vh
cmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGlzSGlnaGxpZ2h0ZWRdKQogICAgICAgICBbW3NlYXJjaCBj
YW5jZWxCdXR0b25DZWxsXSBzZXRIaWdobGlnaHRlZDpOT107CiAKLSAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAg
ICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpOwogCkBAIC0xNzA2
LDkgKzE3MDYsOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogICAgIGlmICh6b29tTGV2ZWwg
IT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0Lndp
ZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9v
bWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwp
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0Lngo
KSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5z
bGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11
bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBbW3NlYXJjaCBjYW5jZWxCdXR0b25DZWxs
XSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsK
QEAgLTE3NjYsNyArMTc2Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmll
bGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvCiAgICAgaWYgKCFp
bnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4
dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludElu
Zm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigp
LCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRDZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsK
QEAgLTE3OTksNyArMTc5OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmll
bGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QKICAgICBpZiAoIWlu
cHV0LT5yZW5kZXJlcigpLT5pc0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0
KTsKKyAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5m
by5jb250ZXh0KCkpOwogICAgIHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRlcmVyKCks
IHIpOwogCiAgICAgTlNTZWFyY2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwpA
QCAtMTgwNyw3ICsxODA3LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlmICghW3Nl
YXJjaCBzZWFyY2hNZW51VGVtcGxhdGVdKQogICAgICAgICBbc2VhcmNoIHNldFNlYXJjaE1lbnVU
ZW1wbGF0ZTpzZWFyY2hNZW51VGVtcGxhdGUoKV07CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgZmxvYXQg
em9vbUxldmVsID0gby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKIAogICAgIEZsb2F0UmVjdCBs
b2NhbEJvdW5kcyA9IFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25h
cHBlZEludFJlY3QoaW5wdXQtPnJlbmRlckJveCgpLT5jb250ZW50Qm94UmVjdCgpKSldOwpAQCAt
MTgxNyw5ICsxODE3LDkgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJl
c3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlmICh6b29tTGV2
ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0
LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVu
em9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2
ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0
LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRy
YW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsK
KyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCks
IC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBbW3NlYXJjaCBzZWFyY2hCdXR0b25D
ZWxsXSBkcmF3V2l0aEZyYW1lOnVuem9vbWVkUmVjdCBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8p
XTsKQEAgLTE4NDMsNyArMTg0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNo
b3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAgaWYg
KCFjb250ZW50V2lkdGggfHwgIWNvbnRlbnRIZWlnaHQpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAogICAgIExh
eW91dFNpemUgY29udGVudFNpemUoY29udGVudFdpZHRoLCBjb250ZW50SGVpZ2h0KTsKICAgICBM
YXlvdXRQb2ludCBjb250ZW50TG9jYXRpb24gPSByZW5kZXJCbG9jay5sb2NhdGlvbigpOwpAQCAt
MTg5OSw3ICsxODk5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBs
dWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25l
ZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9
IDApCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY29udGV4dC0+ZHJhd0ltYWdlKHNuYXBz
aG90LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJl
Y3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKHNuYXBzaG90
LCBwbHVnSW5SZW5kZXJlci5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYWxpZ25lZFBsdWdpblJlY3Qs
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMjA2Mywx
MCArMjA2MywxMCBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNCdXR0
b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29ucwogI2lmIEhBVkUoQVBQS0lUX1NF
UlZJQ0VfQ09OVFJPTFNfU1VQUE9SVCkKICAgICBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxs
ICpjZWxsID0gc2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwoKTsKIAotICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50
SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZShyZWN0
LngoKSwgcmVjdC55KCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHJlY3Qu
eCgpLCByZWN0LnkoKSk7CiAKICAgICBJbnRSZWN0IGlubmVyRnJhbWUoSW50UG9pbnQoKSwgcmVj
dC5zaXplKCkpOwogICAgIFtjZWxsIGRyYXdXaXRoRnJhbWU6aW5uZXJGcmFtZSBpblZpZXc6ZG9j
dW1lbnRWaWV3Rm9yKHJlbmRlcmVyKV07CkBAIC0yNDYyLDggKzI0NjIsOCBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgUGFpbnRJbgogCiAgICAgQXR0YWNobWVudExheW91dCBsYXlvdXQoYXR0YWNobWVudCk7
CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZvLmNvbnRleHQ7Ci0g
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmY29udGV4dCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CiAKICAgICBjb250ZXh0LnRy
YW5zbGF0ZSh0b0Zsb2F0U2l6ZShwYWludFJlY3QubG9jYXRpb24oKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggNTVjMDhkNTY1MjNl
OTVmZGU3MjU2M2VjZTI0ODgxYWYxMDA5MDNjYS4uNDc3MTkzYzEzZWU1ZmE5NjNhOTZkMTVhOGZi
MjA0ODg3OGRkNTEwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVTYWZhcmkuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6
cGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGEK
ICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5
bGUoKSk7CiAKICAgICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IGluZmxhdGVSZWN0KHIsIGNoZWNr
Ym94U2l6ZXMoKVtjb250cm9sU2l6ZV0sIGNoZWNrYm94TWFyZ2lucyhjb250cm9sU2l6ZSkpOyAg
Ci0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OkNoZWNrYm94UGFydCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OkNoZWNr
Ym94UGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgaW5mbGF0ZWRS
ZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwogfQpAQCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50UmFk
aW8oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50CiAgICAgTlND
b250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xTaXplRm9yRm9udChvLnN0eWxlKCkpOwog
IAogICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QociwgcmFkaW9TaXplcygp
W2NvbnRyb2xTaXplXSwgcmFkaW9NYXJnaW5zKGNvbnRyb2xTaXplKSk7ICAgIAotICAgIHBhaW50
VGhlbWVQYXJ0KFJhZGlvQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7Cisg
ICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC01NzcsNyArNTc3LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWludEluZm8mIHBhaW4KICAgICB9IGVsc2UKICAgICAgICAgcGFydCA9IFNhZmFyaVRoZW1l
OjpTcXVhcmVCdXR0b25QYXJ0OwogCi0gICAgcGFpbnRUaGVtZVBhcnQocGFydCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQocGFydCwgcGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0
ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNTg1LDcgKzU4NSw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwCiB7CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGli
cmFyeSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpUZXh0RmllbGRQYXJ0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXpl
KTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0ZSk7CisgICAgcGFpbnRUaGVtZVBh
cnQoU2FmYXJpVGhlbWU6OlRleHRGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZv
Y3VzZWRTdGF0ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01OTgsMTAgKzU5OCwxMCBA
QCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludENhcHNMb2NrSW5kaWNhdG9yKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29uc3QgUGFpbgogI2lmIGRlZmluZWQoU0FGQVJJX1RIRU1FX1ZFUlNJ
T04pICYmIFNBRkFSSV9USEVNRV9WRVJTSU9OID49IDEKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVM
aWJyYXJ5KCkpOwogCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KENhcHNMb2NrUGFydCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCAo
VGhlbWVDb250cm9sU3RhdGUpMCk7CisgICAgcGFpbnRUaGVtZVBhcnQoQ2Fwc0xvY2tQYXJ0LCBw
YWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkw
LCAoVGhlbWVDb250cm9sU3RhdGUpMCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQpAQCAt
NjEzLDcgKzYxMyw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEoY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhCiB7CiAgICAgQVNTRVJUKFNh
ZmFyaVRoZW1lTGlicmFyeSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpU
ZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5T
Q29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAgICBw
YWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4dEFyZWFQYXJ0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRlcm1pbmVTdGF0
ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNjYyLDcg
KzY2Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QoY29uc3QgUmVu
ZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGluCiAgICAgaWYgKHIud2lkdGgoKSA+PSBt
aW5pbXVtTWVudUxpc3RTaXplKG8uc3R5bGUoKSkpCiAgICAgICAgIGluZmxhdGVkUmVjdCA9IGlu
ZmxhdGVSZWN0KGluZmxhdGVkUmVjdCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJnaW5zKGNvbnRyb2xT
aXplKSk7CiAKLSAgICBwYWludFRoZW1lUGFydChEcm9wRG93bkJ1dHRvblBhcnQsIGluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVy
bWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChEcm9wRG93bkJ1dHRvblBhcnQsIGlu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXpl
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC03MjMsOSAr
NzIzLDkgQEAgdm9pZCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkdyYWRp
ZW50cyhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnMKICAgICBpZiAoci5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKIAotICAgIHBhaW50SW5mby5jb250
ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAKICAgICBGbG9h
dFJvdW5kZWRSZWN0IGJvdW5kID0gRmxvYXRSb3VuZGVkUmVjdChvLnN0eWxlKCkuZ2V0Um91bmRl
ZEJvcmRlckZvcihyKSk7CiAgICAgaW50IHJhZGl1cyA9IGJvdW5kLnJhZGlpKCkudG9wTGVmdCgp
LndpZHRoKCk7CkBAIC03NDksMzQgKzc0OSwzNCBAQCB2b2lkIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29ucwog
ICAgIFJldGFpblB0cjxDR1NoYWRpbmdSZWY+IGxlZnRTaGFkaW5nID0gYWRvcHRDRihDR1NoYWRp
bmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIueCgpLCAgci55KCkpLCBDR1BvaW50
TWFrZShyLngoKSArIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rpb24uZ2V0KCksIGZhbHNlLCBm
YWxzZSkpOwogCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0gYWRv
cHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgpLCAg
ci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVuY3Rp
b24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7
CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJv
dW5kKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3VuZCk7CiAg
ICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRpbmcuZ2V0KCkpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5y
ZXN0b3JlKCk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgdG9w
R3JhZGllbnQpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KHRvcEdyYWRpZW50KSwgYm91bmQucmFkaWkoKS50
b3BMZWZ0KCksIGJvdW5kLnJhZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkp
KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQo
KSwgYm91bmQucmFkaWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOwogICAg
IENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBpZiAoIWJvdHRvbUdyYWRpZW50LmlzRW1wdHkoKSkgewotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNh
dmUoKTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3R0b21HcmFkaWVu
dCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3Vu
ZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgpLCBJbnRT
aXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3VuZC5yYWRpaSgpLmJvdHRvbVJp
Z2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6ZSgp
LCBJbnRTaXplKCksIGJvdW5kLnJhZGlpKCkuYm90dG9tTGVmdCgpLCBib3VuZC5yYWRpaSgpLmJv
dHRvbVJpZ2h0KCkpKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90
dG9tU2hhZGluZy5nZXQoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogICAgIH0KIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7
CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCByKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNs
aXBSb3VuZGVkUmVjdChib3VuZCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwg
bGVmdFNoYWRpbmcuZ2V0KCkpOwogICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHJp
Z2h0U2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0
LT5yZXN0b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiB9CiAKIGJv
b2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtNzk4LDEwICs3OTgsMTAgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGUKICAgICBpZiAoYm91bmRzLndpZHRoKCkgPCBhcnJvd1dpZHRoICsgYXJyb3dQYWRk
aW5nTGVmdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNhdmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKIAotICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoTm9TdHJva2Us
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgRmxvYXRQb2ludCBhcnJvd1szXTsKICAgICBh
cnJvd1swXSA9IEZsb2F0UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgLSBhcnJvd0hlaWdodCAvIDIu
MGYpOwpAQCAtODA5LDcgKzgwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlCiAgICAgYXJy
b3dbMl0gPSBGbG9hdFBvaW50KGxlZnRFZGdlICsgYXJyb3dXaWR0aCAvIDIuMGYsIGNlbnRlclkg
KyBhcnJvd0hlaWdodCAvIDIuMGYpOwogCiAgICAgLy8gRHJhdyB0aGUgYXJyb3cKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOworICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOwogCiAg
ICAgQ29sb3IgbGVmdFNlcGFyYXRvckNvbG9yKDAsIDAsIDAsIDQwKTsKICAgICBDb2xvciByaWdo
dFNlcGFyYXRvckNvbG9yKDI1NSwgMjU1LCAyNTUsIDQwKTsKQEAgLTgxOSwxNyArODE5LDE3IEBA
IGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlCiAgICAgaW50IGxlZnRFZGdlT2ZTZXBhcmF0b3IgPSBz
dGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJyb3dQYWRkaW5nTGVmdCk7IC8vIEZJWE1FOiBS
b3VuZD8KIAogICAgIC8vIERyYXcgdGhlIHNlcGFyYXRvciB0byB0aGUgbGVmdCBvZiB0aGUgYXJy
b3dzCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxKTsKLSAgICBw
YWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihsZWZ0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKKyAgICBwYWludEluZm8uY29udGV4dCgp
LnNldFN0cm9rZVRoaWNrbmVzcygxKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9r
ZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNv
bG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3Vu
ZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQobGVmdEVk
Z2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9yQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2Vw
YXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250
ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRn
ZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy55KCkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJh
dG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0
b3JlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCkBAIC05MzUsMTAgKzkzNSwxMCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJgog
ICAgIGVsc2UgaWYgKG8uc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0
KQogICAgICAgICBib3VuZHMuc2V0UmVjdChJbnRSZWN0KHIueCgpICsgci53aWR0aCgpIC8gMiAt
IHRyYWNrV2lkdGggLyAyLCByLnkoKSwgdHJhY2tXaWR0aCwgci5oZWlnaHQoKSkpOwogCi0gICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwogICAgIENHQ29sb3JTcGFjZVJlZiBjc3BhY2UgPSBkZXZpY2VSR0JDb2xv
clNwYWNlUmVmKCk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwg
Ym91bmRzLnJlY3QoKSk7CiAKICAgICBzdHJ1Y3QgQ0dGdW5jdGlvbkNhbGxiYWNrcyBtYWluQ2Fs
bGJhY2tzID0geyAwLCBUcmFja0dyYWRpZW50SW50ZXJwb2xhdGUsIE5VTEwgfTsKQEAgLTk0OSw5
ICs5NDksOSBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJgogICAgIGVsc2UKICAgICAgICAgbWFp
blNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1h
a2UoYm91bmRzLnJlY3QoKS54KCksICBib3VuZHMucmVjdCgpLnkoKSksIENHUG9pbnRNYWtlKGJv
dW5kcy5yZWN0KCkueCgpLCBib3VuZHMucmVjdCgpLm1heFkoKSksIG1haW5GdW5jdGlvbi5nZXQo
KSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRS
ZWN0KGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoYm91
bmRzKTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQo
KSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnJlc3RvcmUoKTsKICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC05NjcsNyAr
OTY3LDcgQEAgY29uc3QgZmxvYXQgdmVydGljYWxTbGlkZXJIZWlnaHRQYWRkaW5nID0gMC4xZjsK
IGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKIHsK
ICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwotICAgIHBhaW50VGhlbWVQYXJ0KFNs
aWRlclRodW1iUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBO
U1NtYWxsQ29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFy
dChTbGlkZXJUaHVtYlBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCks
IHIsIE5TU21hbGxDb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIApAQCAtOTkwLDcgKzk5MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBh
aW50U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiB7
CiAgICAgQVNTRVJUKFNhZmFyaVRoZW1lTGlicmFyeSgpKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0
KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKSwgciwgY29udHJvbFNpemVGcm9tUmVjdChyLCBzZWFyY2hGaWVsZFNpemVzKCkp
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNl
YXJjaEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
Y29udHJvbFNpemVGcm9tUmVjdChyLCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0
ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBib29s
IFJlbmRlclRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJl
bmRlck9iamVjdCYgbywgY29ucwogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXIt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWlu
dFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRDYW5jZWxCdXR0b25QYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJlY3QsIGNvbnRyb2xTaXpl
RnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwgZGV0ZXJtaW5lU3RhdGUo
bykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1
dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHNlYXJjaFJl
Y3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygpKSwg
ZGV0ZXJtaW5lU3RhdGUobykpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTEwNiw3ICsx
MTA2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QKIAogICAgIEludFJlY3Qgc2VhcmNoUmVj
dCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
OwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJj
aFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygp
KSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0
LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbgog
CiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hS
ZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVt
ZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3Qs
IHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1l
UGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uUGFydCwgcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lV2luLmNwcAppbmRleCAxNjM1YTc0ZTU4OGI1OGNkOWQ0OTE0MTRmMWNmYzg3YjNlZWJi
Y2E1Li45N2RlZjY5YmI5NzcxNjI4ODU3ZTNkMWRkZGIwODU1MzE4NTFjYjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTYyMiw3ICs2MjIsNyBA
QCBUaGVtZURhdGEgUmVuZGVyVGhlbWVXaW46OmdldFRoZW1lRGF0YShjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIENvbnRyb2xTdWJQYXJ0IHN1YgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRp
YyB2b2lkIGRyYXdDb250cm9sKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBIQU5ETEUgdGhlbWUsIGNvbnN0IFRoZW1lRGF0YSYgdGhlbWVEYXRhLCBjb25z
dCBJbnRSZWN0JiByKQorc3RhdGljIHZvaWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0aGVtZSwgY29uc3QgVGhlbWVE
YXRhJiB0aGVtZURhdGEsIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgYm9vbCBhbHBoYUJsZW5k
ID0gZmFsc2U7CiAgICAgaWYgKHRoZW1lKQpAQCAtNjc3LDEzICs2NzcsMTMgQEAgc3RhdGljIHZv
aWQgZHJhd0NvbnRyb2woR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIEhBTkRMRQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFhbHBoYUJsZW5kICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKSkKKyAgICBpZiAoIWFscGhhQmxlbmQg
JiYgIWNvbnRleHQuaXNJblRyYW5zcGFyZW5jeUxheWVyKCkpCiAgICAgICAgIERJQlBpeGVsRGF0
YTo6c2V0UkdCQUJpdG1hcEFscGhhKHdpbmRvd3NDb250ZXh0LmhkYygpLCByLCAyNTUpOwogfQog
CiBib29sIFJlbmRlclRoZW1lV2luOjpwYWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKIHsgIAotICAgIGRyYXdDb250
cm9sKGkuY29udGV4dCwgIG8sIGJ1dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgcik7Cisg
ICAgZHJhd0NvbnRyb2woaS5jb250ZXh0KCksICBvLCBidXR0b25UaGVtZSgpLCBnZXRUaGVtZURh
dGEobyksIHIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNzA3LDggKzcwNyw4IEBAIGJv
b2wgUmVuZGVyVGhlbWVXaW46OnBhaW50SW5uZXJTcGluQnV0dG9uKGNvbnN0IFJlbmRlck9iamVj
dCYgbywgY29uc3QgUGFpbnRJbmZvCiAgICAgSW50UmVjdCBkb3duUmVjdChyKTsKICAgICBkb3du
UmVjdC5zZXRZKHVwUmVjdC5tYXhZKCkpOwogICAgIGRvd25SZWN0LnNldEhlaWdodChyLmhlaWdo
dCgpIC0gdXBSZWN0LmhlaWdodCgpKTsKLSAgICBkcmF3Q29udHJvbChpLmNvbnRleHQsIG8sIHNw
aW5CdXR0b25UaGVtZSgpLCBnZXRUaGVtZURhdGEobywgU3BpbkJ1dHRvblVwKSwgdXBSZWN0KTsK
LSAgICBkcmF3Q29udHJvbChpLmNvbnRleHQsIG8sIHNwaW5CdXR0b25UaGVtZSgpLCBnZXRUaGVt
ZURhdGEobywgU3BpbkJ1dHRvbkRvd24pLCBkb3duUmVjdCk7CisgICAgZHJhd0NvbnRyb2woaS5j
b250ZXh0KCksIG8sIHNwaW5CdXR0b25UaGVtZSgpLCBnZXRUaGVtZURhdGEobywgU3BpbkJ1dHRv
blVwKSwgdXBSZWN0KTsKKyAgICBkcmF3Q29udHJvbChpLmNvbnRleHQoKSwgbywgc3BpbkJ1dHRv
blRoZW1lKCksIGdldFRoZW1lRGF0YShvLCBTcGluQnV0dG9uRG93biksIGRvd25SZWN0KTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTczMCw3ICs3MzAsNyBAQCB2b2lkIFJlbmRlclRoZW1l
V2luOjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogCiBib29sIFJl
bmRlclRoZW1lV2luOjpwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYgaSwgY29uc3QgRmxvYXRSZWN0JiByKQogewotICAgIGRyYXdDb250cm9sKGku
Y29udGV4dCwgIG8sIHRleHRGaWVsZFRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgSW50UmVjdChy
KSk7CisgICAgZHJhd0NvbnRyb2woaS5jb250ZXh0KCksICBvLCB0ZXh0RmllbGRUaGVtZSgpLCBn
ZXRUaGVtZURhdGEobyksIEludFJlY3QocikpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
NzQ2LDcgKzc0Niw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWVudUxpc3QoY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvCiAgICAgICAgIHBhcnQgPSBU
RlBfVEVYVEZJRUxEOwogICAgIH0KIAotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0
LCByZW5kZXJlciwgdGhlbWUsIFRoZW1lRGF0YShwYXJ0LCBkZXRlcm1pbmVTdGF0ZShyZW5kZXJl
cikpLCBJbnRSZWN0KHJlY3QpKTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgp
LCByZW5kZXJlciwgdGhlbWUsIFRoZW1lRGF0YShwYXJ0LCBkZXRlcm1pbmVTdGF0ZShyZW5kZXJl
cikpLCBJbnRSZWN0KHJlY3QpKTsKICAgICAKICAgICByZXR1cm4gcGFpbnRNZW51TGlzdEJ1dHRv
bkRlY29yYXRpb25zKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpLCBwYWludEluZm8sIEZs
b2F0UmVjdChyZWN0KSk7CiB9CkBAIC04MDgsNyArODA4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdp
bjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVy
ZXIsIGMKICAgICAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChidXR0b25SZWN0LndpZHRoKCkgKyB2
aXN0YU1lbnVMaXN0QnV0dG9uT3V0c2V0KTsKICAgICB9CiAKLSAgICBkcmF3Q29udHJvbChwYWlu
dEluZm8uY29udGV4dCwgcmVuZGVyZXIsIG1lbnVMaXN0VGhlbWUoKSwgZ2V0VGhlbWVEYXRhKHJl
bmRlcmVyKSwgYnV0dG9uUmVjdCk7CisgICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQo
KSwgcmVuZGVyZXIsIG1lbnVMaXN0VGhlbWUoKSwgZ2V0VGhlbWVEYXRhKHJlbmRlcmVyKSwgYnV0
dG9uUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC04MjcsMTMgKzgyNywxMyBAQCBi
b29sIFJlbmRlclRoZW1lV2luOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QgUGFpbnRJbmZvJiBpLAogICAgICAgICBib3VuZHMuc2V0WChyLngoKSArIHIud2lk
dGgoKSAvIDIgLSB0cmFja1dpZHRoIC8gMik7CiAgICAgfQogICAgIAotICAgIGRyYXdDb250cm9s
KGkuY29udGV4dCwgIG8sIHNsaWRlclRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgYm91bmRzKTsK
KyAgICBkcmF3Q29udHJvbChpLmNvbnRleHQoKSwgIG8sIHNsaWRlclRoZW1lKCksIGdldFRoZW1l
RGF0YShvKSwgYm91bmRzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgUmVuZGVyVGhl
bWVXaW46OnBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiB7ICAgCi0gICAgZHJhd0NvbnRyb2woaS5jb250
ZXh0LCAgbywgc2xpZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKKyAgICBkcmF3Q29u
dHJvbChpLmNvbnRleHQoKSwgIG8sIHNsaWRlclRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgcik7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC04OTIsNyArODkyLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIGNvbnN0IFAKIAogICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsSW1hZ2UgPSBJbWFnZTo6bG9h
ZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaENhbmNlbCIpLmxlYWtSZWYoKTsKICAgICBzdGF0aWMg
SW1hZ2UqIGNhbmNlbFByZXNzZWRJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
c2VhcmNoQ2FuY2VsUHJlc3NlZCIpLmxlYWtSZWYoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+
ZHJhd0ltYWdlKGlzUHJlc3NlZChvKSA/IGNhbmNlbFByZXNzZWRJbWFnZSA6IGNhbmNlbEltYWdl
LCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZHJhd0ltYWdlKGlzUHJlc3NlZChvKSA/IGNhbmNlbFByZXNzZWRJbWFnZSA6IGNhbmNlbElt
YWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApAQCAtOTQwLDcgKzk0MCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50U2VhcmNo
RmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvCiAgICAgYm91
bmRzLnNldFkocGFyZW50Qm94LnkoKSArIChwYXJlbnRCb3guaGVpZ2h0KCkgLSBib3VuZHMuaGVp
Z2h0KCkgKyAxKSAvIDIpOwogICAgIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2Ug
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllciIpLmxlYWtSZWYo
KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ltYWdlKG1hZ25pZmllckltYWdlLCBvLnN0
eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJh
d0ltYWdlKG1hZ25pZmllckltYWdlLCBvLnN0eWxlKCkuY29sb3JTcGFjZSgpLCBib3VuZHMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtOTc1LDcgKzk3NSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVXaW46OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QKICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gueSgpICsgKHBhcmVudEJveC5oZWln
aHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAKICAgICBzdGF0aWMgSW1hZ2UqIG1h
Z25pZmllckltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hNYWduaWZp
ZXJSZXN1bHRzIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2Uo
bWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xv
clNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTM5LDE0ICsx
MTM5LDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mCiAgICAgaW50IHJlbWFpbmluZyA9IHN0
YXRpY19jYXN0PGludD4oKDEuMCAtIGVsZW1lbnQtPnZhbHVlUmF0aW8oKSkgKiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHJlY3Quc2l6ZSgpLndpZHRoKCkpKTsKIAogICAgIC8vIERyYXcgdGhlIGJhY2tn
cm91bmQKLSAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCwgcmVuZGVyT2JqZWN0LCBw
cm9ncmVzc0JhclRoZW1lKCksIHRoZW1lLCByZWN0KTsKKyAgICBkcmF3Q29udHJvbChwYWludElu
Zm8uY29udGV4dCgpLCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwgdGhlbWUsIHJl
Y3QpOwogCiAgICAgLy8gRHJhdyB0aGUgcHJvZ3Jlc3MgcG9ydGlvbgogICAgIEludFJlY3QgY29t
cGxldGVkUmVjdChyZWN0KTsKICAgICBjb21wbGV0ZWRSZWN0LmNvbnRyYWN0KHJlbWFpbmluZywg
MCk7CiAKICAgICB0aGVtZS5tX3BhcnQgPSBQUF9GSUxMOwotICAgIGRyYXdDb250cm9sKHBhaW50
SW5mby5jb250ZXh0LCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwgdGhlbWUsIGNv
bXBsZXRlZFJlY3QpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRl
ck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgY29tcGxldGVkUmVjdCk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWRlby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3Bw
CmluZGV4IDVmN2NlMWNlNzY5ZGMxNzZlNzRiYTcwNjY0MjM5YTZmOGFiOTRhODcuLmU5MzU1YWE5
YzE1Zjk5ZTBmYzMxODFlNmQxZmI0NTRiOTZjODczODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcApAQCAtMTgwLDExICsxODAsMTEgQEAgdm9pZCBSZW5kZXJWaWRl
bzo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2YKIAogICAgIExheW91dFJlY3QgY29udGVudFJlY3QgPSBjb250ZW50Qm94UmVjdCgp
OwogICAgIGNvbnRlbnRSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7Ci0gICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBib29sIGNsaXAgPSAhY29udGVudFJl
Y3QuY29udGFpbnMocmVjdCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0LCBjbGlwKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIGNvbnRleHQtPmNs
aXAoY29udGVudFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudFJlY3QpOwogCiAg
ICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAgICAgIHBhaW50SW50b1JlY3QoY29udGV4dCwg
cmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggOGYwYjZl
NjE5NGUwNzUyZDY2NzNjOTIxZTlkYzJmYjYwNzNkYjNmMy4uMDRhMDhkNWRlZDAzYmQzZTVkMzdk
OTdhYWMxZTYzNjJkOTAzZTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIAogICAgIC8vIFRo
aXMgYXZvaWRzIHBhaW50aW5nIGdhcmJhZ2UgYmV0d2VlbiBjb2x1bW5zIGlmIHRoZXJlIGlzIGEg
Y29sdW1uIGdhcC4KICAgICBpZiAoZnJhbWVWaWV3KCkucGFnaW5hdGlvbigpLm1vZGUgIT0gUGFn
aW5hdGlvbjo6VW5wYWdpbmF0ZWQgJiYgcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgq
dGhpcykpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChwYWludEluZm8ucmVj
dCwgZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwg
ZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
IAogICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQpAQCAtNjEzLDEy
ICs2MTMsMTIgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIENvbG9yIGRvY3VtZW50
QmFja2dyb3VuZENvbG9yID0gZnJhbWVWaWV3KCkuZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsK
ICAgICAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yID0gKGJhY2tncm91bmRTaG91bGRFeHRlbmRC
ZXlvbmRQYWdlICYmIGRvY3VtZW50QmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkgPyBkb2N1bWVu
dEJhY2tncm91bmRDb2xvciA6IGZyYW1lVmlldygpLmJhc2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAg
ICAgICAgaWYgKGJhY2tncm91bmRDb2xvci5hbHBoYSgpKSB7Ci0gICAgICAgICAgICBDb21wb3Np
dGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0gcGFpbnRJbmZvLmNvbnRleHQtPmNvbXBvc2l0
ZU9wZXJhdGlvbigpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0
ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5maWxsUmVjdChwYWludEluZm8ucmVjdCwgYmFja2dyb3VuZENvbG9yLCBzdHlsZSgpLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOworICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
cHJldmlvdXNPcGVyYXRvciA9IHBhaW50SW5mby5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9u
KCk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJl
Y3QocGFpbnRJbmZvLnJlY3QsIGJhY2tncm91bmRDb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24o
cHJldmlvdXNPcGVyYXRvcik7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsZWFyUmVjdChwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmNsZWFyUmVjdChwYWludEluZm8ucmVjdCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IGFjN2M4ODgyY2ZjNTgy
MzYxMzUwYWNjYzk4NzEzZjExOGJjMWIyNTMuLjk5NGNiMGMyY2Y2ZmZlNzgyODY3ZjUyZDFmMmNh
OTM0NzA0MmVjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CkBAIC0yMjgsMTQgKzIyOCwxNCBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyhQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50TwogICAgIC8vIFdo
ZW4gcGFpbnRpbmcgd2lkZ2V0cyBpbnRvIGNvbXBvc2l0aW5nIGxheWVycywgdHggYW5kIHR5IGFy
ZSByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVyLAogICAgIC8vIG5v
dCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBh
aW50UmVjdCB0byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCiAgICAg
aWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkgewotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+dHJhbnNsYXRlKHdpZGdldFBhaW50T2Zmc2V0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgICAgICBwYWludFJlY3Qu
bW92ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHJl
cGFpbnRyZWN0IGVuY29sc2luZy9pbnRlZ3JhbCBzbmFwcGluZyB3aGVuIFJlbmRlcldpZGdldCBi
ZWNvbWVzIGRldmljZSBwaXhlbCBzbmFwcGVkLgotICAgIG1fd2lkZ2V0LT5wYWludChwYWludElu
Zm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CisgICAgbV93aWRnZXQtPnBh
aW50KHBhaW50SW5mby5jb250ZXh0KCksIHNuYXBwZWRJbnRSZWN0KHBhaW50UmVjdCkpOwogCiAg
ICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkKLSAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKGlzPEZy
YW1lVmlldz4oKm1fd2lkZ2V0KSkgewogICAgICAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IGRv
d25jYXN0PEZyYW1lVmlldz4oKm1fd2lkZ2V0KTsKQEAgLTI3NSwyNiArMjc1LDI2IEBAIHZvaWQg
UmVuZGVyV2lkZ2V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFB1c2gg
YSBjbGlwIGlmIHdlIGhhdmUgYSBib3JkZXIgcmFkaXVzLCBzaW5jZSB3ZSB3YW50IHRvIHJvdW5k
IHRoZSBmb3JlZ3JvdW5kIGNvbnRlbnQgdGhhdCBnZXRzIHBhaW50ZWQuCi0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgp
OwogICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHJvdW5kZWRJbm5lclJlY3QgPSBGbG9hdFJvdW5k
ZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCiAgICAg
ICAgICAgICBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSwgcGFkZGluZ0JvdHRvbSgpICsgYm9y
ZGVyQm90dG9tKCksIHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCksIHBhZGRpbmdSaWdodCgp
ICsgYm9yZGVyUmlnaHQoKSwgdHJ1ZSwgdHJ1ZSkpOwotICAgICAgICBjbGlwUm91bmRlZElubmVy
UmVjdChwYWludEluZm8uY29udGV4dCwgYm9yZGVyUmVjdCwgcm91bmRlZElubmVyUmVjdCk7Cisg
ICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5jb250ZXh0KCksIGJvcmRlclJl
Y3QsIHJvdW5kZWRJbm5lclJlY3QpOwogICAgIH0KIAogICAgIGlmIChtX3dpZGdldCkKICAgICAg
ICAgcGFpbnRDb250ZW50cyhwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChzdHls
ZSgpLmhhc0JvcmRlclJhZGl1cygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9y
ZSgpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAogICAgIC8vIFBh
aW50IGEgcGFydGlhbGx5IHRyYW5zcGFyZW50IHdhc2ggb3ZlciBzZWxlY3RlZCB3aWRnZXRzLgog
ICAgIGlmIChpc1NlbGVjdGVkKCkgJiYgIWRvY3VtZW50KCkucHJpbnRpbmcoKSkgewogICAgICAg
ICAvLyBGSVhNRTogc2VsZWN0aW9uUmVjdCgpIGlzIGluIGFic29sdXRlLCBub3QgcGFpbnRpbmcg
Y29vcmRpbmF0ZXMuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdChzbmFwcGVk
SW50UmVjdChzZWxlY3Rpb25SZWN0KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5
bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmZpbGxSZWN0
KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJlY3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xv
cigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgfQogCiAgICAgaWYgKGhhc0xheWVyKCkg
JiYgbGF5ZXIoKS0+Y2FuUmVzaXplKCkpCi0gICAgICAgIGxheWVyKCktPnBhaW50UmVzaXplcihw
YWludEluZm8uY29udGV4dCwgcm91bmRlZEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQpLCBw
YWludEluZm8ucmVjdCk7CisgICAgICAgIGxheWVyKCktPnBhaW50UmVzaXplcihwYWludEluZm8u
Y29udGV4dCgpLCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBhaW50SW5m
by5yZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJXaWRnZXQ6OnNldE92ZXJsYXBUZXN0UmVzdWx0KGJv
b2wgaXNPdmVybGFwcGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCmluZGV4IDM5Zjk3OWQ2MzM1ZjM5OGM5ZDc4YjQxMzRmODNhZmViZWViMDdjYTEuLmM5ZjBh
MDgyNTg1MmE0NWE0NDkzYWZlNzMyY2E2YWQzN2MyMWY2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBHYXBSZWN0cyBS
b290SW5saW5lQm94OjpsaW5lU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNv
bnN0IExheW91dFBvaQogICAgICAgICAgICAgICAgIExheW91dFJlY3QgZ2FwUmVjdCA9IHJvb3RC
bG9jay5sb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24s
IGxvZ2ljYWxSZWN0KTsKICAgICAgICAgICAgICAgICBpZiAoaXNQcmV2aW91c0JveFNlbGVjdGVk
ICYmIGdhcFJlY3Qud2lkdGgoKSA+IDAgJiYgZ2FwUmVjdC5oZWlnaHQoKSA+IDApIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHBhaW50SW5mbyAmJiBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigp
LnN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZJU0lCTEUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBwYWludEluZm8tPmNvbnRleHQtPmZpbGxSZWN0KGdhcFJlY3QsIGJveC0+cGFyZW50KCktPnJl
bmRlcmVyKCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIGJveC0+cGFyZW50KCktPnJlbmRl
cmVyKCkuc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFp
bnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVy
ZXIoKS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIo
KS5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFZpc2libGVT
ZWxlY3Rpb24gbWF5IGJlIG5vbi1jb250aWd1b3VzLCBzZWUgY29tbWVudCBhYm92ZS4KICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LnVuaXRlQ2VudGVyKGdhcFJlY3QpOwogICAgICAgICAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0RnVuY3Rpb25zLmNwcAppbmRleCA1OWQxYTdkZTU2NzQ3MTI3YjMwMzQ1NzU4YWMyNmE2ZjFj
YzE2MWEyLi5mMWM2YjEwZTdiZGRjMjMwMTZhYzA2NTI1YWZhMjRmOTM5MTNhM2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlv
bnMuY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBi
b29sIGRlYnVnQm9yZGVyc0VuYWJsZWQgPSBmbG93LmZyYW1lKCkuc2V0dGluZ3MoKS5zaW1wbGVM
aW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgY29uc3QgRm9udENhc2NhZGUmIGZvbnQgPSBz
dHlsZS5mb250Q2FzY2FkZSgpOwogICAgIFRleHRQYWludFN0eWxlIHRleHRQYWludFN0eWxlID0g
Y29tcHV0ZVRleHRQYWludFN0eWxlKGZsb3cuZnJhbWUoKSwgc3R5bGUsIHBhaW50SW5mbyk7CiAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQsIHRleHRQYWlu
dFN0eWxlLnN0cm9rZVdpZHRoID4gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCmluZGV4IDdhYTU0ZmI4YzIxM2QwMzhl
MTk4MzFiZDkyNTExMGExODdjZTRlNGYuLmI2ZGU3OWU4YjI0NjU5OWZkMmE0NTkyNGM3Njk0YTIx
N2E4OGIxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC05NSwzMyArOTUsMzMgQEAgdm9pZCBSZW5kZXJNYXRo
TUxCbG9jazo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQpCiB7CiAgICAgUmVuZGVyRmxleGlibGVCb3g6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0
KTsKICAgICAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5m
by5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKKyAgICBpZiAoaW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBy
b3VuZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKIAotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIAotICAg
IGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEuMGYpOwotICAgIGluZm8uY29udGV4
dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29u
dGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29s
b3IoQ29sb3IoMCwgMCwgMjU1KSwgQ29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8uY29u
dGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWlu
dE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQ
YWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFw
cGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRIZWlnaHQoKSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRq
dXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxTbmFw
cGVkT2Zmc2V0SGVpZ2h0KCkpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKGFkanVz
dGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7CisgICAgaW5m
by5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50UG9pbnQoYWRqdXN0
ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFk
anVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0
ZWRQYWludE9mZnNldC55KCkpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBw
aXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkg
KyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdM
aW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7
CiAgICAgCiAgICAgaW50IHRvcFN0YXJ0ID0gcGFkZGluZ1RvcCgpOwogICAgIAotICAgIGluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0Ip
OworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDAsIDI1NSwgMCksIENv
bG9yU3BhY2VTUkdCKTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50
KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0
YXJ0KSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZz
ZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSk7CisgICAgaW5m
by5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFk
anVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50
T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgdG9wU3RhcnQpKTsKICAgICAKICAgICBpbnQgYmFzZWxpbmUgPSByb3VuZFRvSW50
KGJhc2VsaW5lUG9zaXRpb24oQWxwaGFiZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGlu
ZSkpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAw
LCAwKSwgQ29sb3JTcGFjZVNSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9y
KENvbG9yKDI1NSwgMCwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAgICAKLSAgICBpbmZvLmNvbnRl
eHQtPmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSArIGJhc2VsaW5lKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54
KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSAr
IGJhc2VsaW5lKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0
ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpLCBJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRo
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoREVCVUdfTUFUSF9MQVlPVVQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggNTFmMTY4ZWFl
YmY2YTJkOGIzZGRmYjdhMDQxNWE3NzQyNDgyZDMwNS4uNTE5YmIzODg4OTYzMjY1Mzg1Njk2ODI4
ZWEwYzZiN2YwNjVkMmQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpsYXlvdXQoKQogdm9pZCBSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZz
ZXQpCiB7CiAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsK
LSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAh
PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgUmVuZGVyQm94KiBkZW5vbWluYXRvcldy
YXBwZXIgPSBsYXN0Q2hpbGRCb3goKTsKQEAgLTE1MCwxMiArMTUwLDEyIEBAIHZvaWQgUmVuZGVy
TWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0CiAKICAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91bmRl
ZEludFBvaW50KHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIGRlbm9taW5hdG9yV3JhcHBlci0+
bG9jYXRpb24oKSArIExheW91dFBvaW50KDAsIG1fbGluZVRoaWNrbmVzcyAvIDIpKTsKICAgICAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgp
KTsKICAgICAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhtX2xpbmVUaGlj
a25lc3MpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdCKTsKLSAgICBpbmZvLmNvbnRl
eHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGRlbm9taW5hdG9yV3JhcHBlci0+b2Zmc2V0
V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSk7CisgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7CisgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9r
ZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBD
b2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWlu
dE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgZGVub21pbmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zm
c2V0LnkoKSkpKTsKIH0KIAogT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAppbmRleCAxNzQ2OGMxMTk5MzA0
YTcwZDY3Yjc1MDBiZTJkYjc0MDc1ZDQyZTc1Li5iODZlMzYyOWE2Yjc4ZTQwNGE1ZmJhZGU0NDc4
ZDJlNDc0NTQ3NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE1lbmNsb3NlLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFJl
bmRlck1hdGhNTE1lbmNsb3NlOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnNldAogewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBw
YWludE9mZnNldCk7CiAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkg
fHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVk
KCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgTWF0aE1MTWVu
Y2xvc2VFbGVtZW50KiBtZW5jbG9zZSA9IGRvd25jYXN0PE1hdGhNTE1lbmNsb3NlRWxlbWVudD4o
ZWxlbWVudCgpKTsKQEAgLTExNCwyMyArMTE0LDIzIEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xv
c2U6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
CiAgICAgICAgIGludCBoYWxmYm94V2lkdGggPSByZWN0LndpZHRoKCkgLyAyOwogICAgICAgICBp
bnQgaGFsZmJveEhlaWdodCA9IHJlY3QuaGVpZ2h0KCkgLyAyOwogCi0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKLSAgICAgICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3Ip
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKKyAgICAgICAgaW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlVGhpY2tuZXNzKDEpOworICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHls
ZShTb2xpZFN0cm9rZSk7CisgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKICAgICAgICAgLy8gVE9ETyBhZGQgc3VwcG9ydCBmb3Igbm90YXRpb24gdmFs
dWUgdXBkaWFnb25hbGFycm93IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjc0NjYKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub3RhdGlvbmFsVmFsdWVT
aXplOyBpKyspIHsKICAgICAgICAgICAgIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAidXBkaWFn
b25hbHN0cmlrZSIpCi0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQ
b2ludChsZWZ0LCB0b3AgKyBib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGgsIHRv
cCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCArIGJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wKSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAiZG93bmRpYWdvbmFsc3Ry
aWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wICsgYm94SGVpZ2h0KSk7Cisg
ICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9w
KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJ2ZXJ0aWNhbHN0cmlrZSIpCi0gICAg
ICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChsZWZ0ICsgaGFsZmJv
eFdpZHRoLCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3AgKyBib3hIZWln
aHQpKTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChs
ZWZ0ICsgaGFsZmJveFdpZHRoLCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgaGFsZmJveFdpZHRoLCB0
b3AgKyBib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0aW9uVmFsdWVzW2ld
ID09ICJob3Jpem9udGFsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRy
YXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0
ICsgYm94V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3AgKyBoYWxmYm94SGVpZ2h0KSwg
SW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3AgKyBoYWxmYm94SGVpZ2h0KSk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tpXSA9PSAiY2lyY2xlIikgewotICAgICAgICAg
ICAgICAgIGluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29s
b3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5kcmF3RWxs
aXBzZShyZWN0KTsKKyAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgICAg
ICBpbmZvLmNvbnRleHQoKS5kcmF3RWxsaXBzZShyZWN0KTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImxvbmdkaXYiKQogICAgICAgICAgICAgICAgIGlzRGVm
YXVsdExvbmdEaXYgPSB0cnVlOwogICAgICAgICB9CkBAIC0xNDQsOSArMTQ0LDkgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtaWR4
UG9pbnQgPSBzdHlsZSgpLnBhZGRpbmdMZWZ0KCkudmFsdWUoKTsKICAgICAgICAgICAgIHJvb3Qu
YWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBvaW50KGxlZnQsIHRvcCksIEZsb2F0UG9pbnQobGVmdCAr
IG1pZHhQb2ludCwgdG9wICsgaGFsZmJveEhlaWdodCksIEZsb2F0UG9pbnQobGVmdCwgdG9wICsg
Ym94SGVpZ2h0KSk7Ci0gICAgICAgICAgICBpbmZvLmNvbnRleHQtPnN0cm9rZVBhdGgocm9vdCk7
CisgICAgICAgICAgICBpbmZvLmNvbnRleHQoKS5zdHJva2VQYXRoKHJvb3QpOwogICAgICAgICAg
ICAgaWYgKGlzRGVmYXVsdExvbmdEaXYpCi0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0LT5k
cmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsgYm94V2lkdGggKyBt
aWR4UG9pbnQsIHRvcCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5l
KEludFBvaW50KGxlZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCArIG1pZHhQb2lu
dCwgdG9wKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IDkzOGY2
YmM4ZTBkMGY1OWM0NzMyYzk5MzFjODU4MjMyMWNlY2U3ZGEuLjNjZmViMjFjYThkMjU3ZjNlZmU1
MGFhMWU5Y2RjMTdlNDkyMmMxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0xNzk3LDEyICsxNzk3
LDEyIEBAIExheW91dFJlY3QgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50R2x5cGgoUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBHbHlwaERhdGEmIGRhCiAgICAgfQogCiAgICAgLy8gQ2xpcHBpbmcg
dGhlIGVuY2xvc2luZyBJbnRSZWN0IGF2b2lkcyBhbnkgcG90ZW50aWFsIGlzc3VlcyBhdCBqb2lu
ZWQgZWRnZXMuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZv
LmNvbnRleHQpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgIGlu
Zm8uY29udGV4dCgpLmNsaXAoY2xpcEJvdW5kcyk7CiAKICAgICBHbHlwaEJ1ZmZlciBidWZmZXI7
CiAgICAgYnVmZmVyLmFkZChkYXRhLmdseXBoLCBkYXRhLmZvbnQsIGFkdmFuY2VGb3JHbHlwaChk
YXRhKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3R2x5cGhzKHN0eWxlKCkuZm9udENhc2NhZGUo
KSwgKmRhdGEuZm9udCwgYnVmZmVyLCAwLCAxLCBvcmlnaW4pOworICAgIGluZm8uY29udGV4dCgp
LmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZmZXIsIDAs
IDEsIG9yaWdpbik7CiAKICAgICByZXR1cm4gZ2x5cGhQYWludFJlY3Q7CiB9CkBAIC0xODE4LDcg
KzE4MTgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaWxsV2l0aFZlcnRpY2FsRXh0
ZW5zaW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdAogICAgIGlmIChmcm9tLnkoKSA9PSB0
by55KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCiAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRz
ID0gYm91bmRzRm9yR2x5cGgobV9zdHJldGNoeURhdGEuZXh0ZW5zaW9uKCkpOwogCkBAIC0xODI3
LDcgKzE4MjcsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaWxsV2l0aFZlcnRpY2Fs
RXh0ZW5zaW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb25zdAogICAgIExheW91dFJlY3QgY2xp
cEJvdW5kcyA9IGluZm8ucmVjdDsKICAgICBjbGlwQm91bmRzLnNoaWZ0WUVkZ2VUbyhmcm9tLnko
KSk7CiAgICAgY2xpcEJvdW5kcy5zaGlmdE1heFlFZGdlVG8odG8ueSgpKTsKLSAgICBpbmZvLmNv
bnRleHQtPmNsaXAoY2xpcEJvdW5kcyk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91
bmRzKTsKIAogICAgIC8vIFRyaW1taW5nIG1heSByZW1vdmUgdXAgdG8gdHdvIHBpeGVscyBmcm9t
IHRoZSB0b3Agb2YgdGhlIGV4dGVuZGVyIGdseXBoLCBzbyB3ZSBtb3ZlIGl0IHVwIGJ5IHR3byBw
aXhlbHMuCiAgICAgZmxvYXQgb2Zmc2V0VG9HbHlwaFRvcCA9IGdseXBoQm91bmRzLnkoKSArIDI7
CkBAIC0xODU2LDE0ICsxODU2LDE0IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxX
aXRoSG9yaXpvbnRhbEV4dGVuc2lvbkdseXBoKFBhaW50SW5mbyYgaW5mbywgY29uCiAgICAgaWYg
KGZyb20ueCgpID09IHRvLngoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBDbGlw
cGluZyB0aGUgZXh0ZW5kZXIgcmVnaW9uIGhlcmUgYWxsb3dzIHVzIHRvIGRyYXcgdGhlIGJvdHRv
bSBleHRlbmRlciBnbHlwaCBpbnRvIHRoZQogICAgIC8vIHJlZ2lvbnMgb2YgdGhlIGJvdHRvbSBn
bHlwaCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IG92ZXJkcmF3IChoYWlyeSBwaXhlbHMpIGFuZCBz
aW1wbGlmaWVzIGxhdGVyIGNsaXBwaW5nLgogICAgIExheW91dFJlY3QgY2xpcEJvdW5kcyA9IGlu
Zm8ucmVjdDsKICAgICBjbGlwQm91bmRzLnNoaWZ0WEVkZ2VUbyhmcm9tLngoKSk7CiAgICAgY2xp
cEJvdW5kcy5zaGlmdE1heFhFZGdlVG8odG8ueCgpKTsKLSAgICBpbmZvLmNvbnRleHQtPmNsaXAo
Y2xpcEJvdW5kcyk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChjbGlwQm91bmRzKTsKIAogICAg
IC8vIFRyaW1taW5nIG1heSByZW1vdmUgdXAgdG8gdHdvIHBpeGVscyBmcm9tIHRoZSBsZWZ0IG9m
IHRoZSBleHRlbmRlciBnbHlwaCwgc28gd2UgbW92ZSBpdCBsZWZ0IGJ5IHR3byBwaXhlbHMuCiAg
ICAgZmxvYXQgb2Zmc2V0VG9HbHlwaExlZnQgPSAtMjsKQEAgLTE4ODUsMTEgKzE4ODUsMTEgQEAg
dm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKIHsKICAgICBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQo
aW5mbywgcGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKGluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNh
YmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52
aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd05v
cm1hbCkKKyAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8u
cGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0g
VklTSUJMRSB8fCBtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd05vcm1hbCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZv
LmNvbnRleHQpOwotICAgIGluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxlKCkudmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgp
KTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAg
IGlmIChtX3N0cmV0Y2h5RGF0YS5tb2RlKCkgPT0gRHJhd1NpemVWYXJpYW50KSB7CiAgICAgICAg
IEFTU0VSVChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZ2x5cGgpOwpAQCAtMTg5OCw3ICsxODk4
LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgTGF5b3V0UG9pbnQgb3BlcmF0
b3JUb3BMZWZ0ID0gY2VpbGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpKTsKICAg
ICAgICAgRmxvYXRSZWN0IGdseXBoQm91bmRzID0gYm91bmRzRm9yR2x5cGgobV9zdHJldGNoeURh
dGEudmFyaWFudCgpKTsKICAgICAgICAgTGF5b3V0UG9pbnQgb3BlcmF0b3JPcmlnaW4ob3BlcmF0
b3JUb3BMZWZ0LngoKSwgb3BlcmF0b3JUb3BMZWZ0LnkoKSAtIGdseXBoQm91bmRzLnkoKSk7Ci0g
ICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICpt
X3N0cmV0Y2h5RGF0YS52YXJpYW50KCkuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdp
bik7CisgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2Fk
ZSgpLCAqbV9zdHJldGNoeURhdGEudmFyaWFudCgpLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3BlcmF0
b3JPcmlnaW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvci5jcHAKaW5kZXggZGYxNGE4OThkNjVjYzg5ZGNjYzJkNjFmYTVhMGJkOTA3ZmVkMjEyYS4u
YjY5MmY3NDY5ZWY2NjM5MzlhYTM2Mjg5NGM4NjU2M2VhMDBiNDlkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFk
aWNhbE9wZXJhdG9yLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFk
aWNhbE9wZXJhdG9yOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsCiAKIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQYWludEluZm8m
IGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKLSAgICBpZiAoaW5mby5j
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9y
ZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlmIChpbmZv
LmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoc3R5bGUoKS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkubWF0
aERhdGEoKSkgewpAQCAtMTI5LDEzICsxMjksMTMgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2Fs
T3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4K
ICAgICBGbG9hdFBvaW50IGRpcExlZnRQb2ludChzdGFydFggLSBnUmFkaWNhbERpcExlZnRQb2lu
dFhGcm9udCAqIGZyb250V2lkdGgsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgcmFkaWNhbERp
cExlZnRQb2ludFlQb3MpOwogICAgIEZsb2F0UG9pbnQgbGVmdEVuZChzdGFydFggLSBmcm9udFdp
ZHRoLCBkaXBMZWZ0UG9pbnQueSgpICsgZ1JhZGljYWxMZWZ0RW5kWVNoaWZ0RW1zICogc3R5bGUo
KS5mb250U2l6ZSgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoaW5mby5jb250ZXh0KCkpOwogCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25l
c3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKLSAgICBp
bmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRl
eHQtPnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldExp
bmVKb2luKE1pdGVySm9pbik7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRNaXRlckxpbWl0KHN0eWxl
KCkuZm9udFNpemUoKSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNzKGdS
YWRpY2FsTGluZVRoaWNrbmVzc0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7CisgICAgaW5mby5j
b250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOworICAgIGluZm8uY29udGV4dCgp
LnNldFN0cm9rZUNvbG9yKHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5
Q29sb3IpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRMaW5l
Sm9pbihNaXRlckpvaW4pOworICAgIGluZm8uY29udGV4dCgpLnNldE1pdGVyTGltaXQoc3R5bGUo
KS5mb250U2l6ZSgpKTsKIAogICAgIFBhdGggcm9vdDsKIApAQCAtMTQ3LDkgKzE0Nyw5IEBAIHZv
aWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNv
bnN0IExheW91dFBvaW50JiBwYWluCiAgICAgLy8gZHJhdyB0byBlbmQKICAgICByb290LmFkZExp
bmVUbyhsZWZ0RW5kKTsKIAotICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChyb290KTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zdHJva2VQYXRoKHJvb3QpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBtYXNrU3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIG1hc2tTdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKIAogICAgIC8v
IEJ1aWxkIGEgbWFzayB0byBkcmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSByb290LgogICAgIFBh
dGggbWFzazsKQEAgLTE1OSwxNyArMTU5LDE3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUmFkaWNhbE9w
ZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWluCiAg
ICAgbWFzay5hZGRMaW5lVG8oZGlwTGVmdFBvaW50KTsKICAgICBtYXNrLmFkZExpbmVUbyhGbG9h
dFBvaW50KDIgKiBkaXBMZWZ0UG9pbnQueCgpIC0gbGVmdEVuZC54KCksIDIgKiBkaXBMZWZ0UG9p
bnQueSgpIC0gbGVmdEVuZC55KCkpKTsKIAotICAgIGluZm8uY29udGV4dC0+Y2xpcChtYXNrKTsK
KyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKG1hc2spOwogCiAgICAgLy8gRHJhdyB0aGUgdGhpY2sg
cGFydCBvZiB0aGUgcm9vdC4KLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhn
UmFkaWNhbFRoaWNrTGluZVRoaWNrbmVzc0VtcyAqIHN0eWxlKCkuZm9udFNpemUoKSk7Ci0gICAg
aW5mby5jb250ZXh0LT5zZXRMaW5lQ2FwKFNxdWFyZUNhcCk7CisgICAgaW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUo
KS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRMaW5lQ2FwKFNxdWFyZUNhcCk7
CiAKICAgICBQYXRoIGxpbmU7CiAgICAgbGluZS5tb3ZlVG8oYm90dG9tUG9pbnQpOwogICAgIGxp
bmUuYWRkTGluZVRvKGRpcExlZnRQb2ludCk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnN0cm9rZVBh
dGgobGluZSk7CisgICAgaW5mby5jb250ZXh0KCkuc3Ryb2tlUGF0aChsaW5lKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9v
dC5jcHAKaW5kZXggZWJlMmQzNzM1N2NkMWU4NjliMWM5ZWMzYmVjMTAxZGMxMWI5YjJhZS4uYWM0
YTE1ZGQ4NGE0OTM0NDJmMzQ1OWM1YTQ1MDIxMzE0YTAxNzVlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC0zMTks
NyArMzE5LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQYWludEluZm8mIGluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJNYXRoTUxCbG9j
azo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmIChpc0VtcHR5KCkgfHwg
aW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkg
IT0gVklTSUJMRSkKKyAgICBpZiAoaXNFbXB0eSgpIHx8IGluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhdXRvIGJhc2UgPSBiYXNlV3JhcHBlcigpOwpAQCAtMzI4LDE2ICszMjgs
MTYgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2Ug
ZHJhdyB0aGUgcmFkaWNhbCBsaW5lLgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VU
aGlja25lc3MobV9ydWxlVGhpY2tuZXNzKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0
eWxlKFNvbGlkU3Ryb2tlKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHN0eWxl
KCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MobV9ydWxlVGhp
Y2tuZXNzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7
CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAg
Ly8gVGhlIHByZWZlcnJlZCB3aWR0aCBvZiB0aGUgcmFkaWNhbCBpcyBzb21ldGltZXMgaW5jb3Jy
ZWN0LCBzbyB3ZSBkcmF3IGEgc2xpZ2h0bHkgbG9uZ2VyIGxpbmUgdG8gZW5zdXJlIGl0IHRvdWNo
ZXMgdGhlIHJhZGljYWwgc3ltYm9sIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTMwMzI2KS4KICAgICBMYXlvdXRVbml0IHNpemVFcnJvciA9IHJhZGljYWwtPnRyYWls
aW5nU3BhY2VFcnJvcigpOwogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3Vu
ZGVkSW50UG9pbnQocGFpbnRPZmZzZXQgKyBsb2NhdGlvbigpICsgYmFzZS0+bG9jYXRpb24oKSAr
IExheW91dFBvaW50KC1zaXplRXJyb3IsIC0obV92ZXJ0aWNhbEdhcCArIG1fcnVsZVRoaWNrbmVz
cyAvIDIpKSk7Ci0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0
LCByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBi
YXNlLT5vZmZzZXRXaWR0aCgpICsgc2l6ZUVycm9yLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkp
KTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3Vu
ZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBiYXNlLT5v
ZmZzZXRXaWR0aCgpICsgc2l6ZUVycm9yLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKTsKIH0K
IAogUmVuZGVyUHRyPFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyPiBSZW5kZXJNYXRoTUxSb290V3Jh
cHBlcjo6Y3JlYXRlQW5vbnltb3VzV3JhcHBlcihSZW5kZXJNYXRoTUxSb290KiByZW5kZXJPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDU4ZWI5
ZTI0MDY3NmExMTRkYzFiOTc2ODc3NTYzNDJiMzkyZmI5NjkuLjY5MjIyODE5MThjNDgzMWU3Mjk5
NTNiNjIwMjkxMjg4MjhkNTE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCkBAIC0xODIsOCArMTgyLDggQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlUmFzdGVyU2hhcGUoSW1hZ2UqIGltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGMKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpKTsKIAogICAgIGlmIChpbWFnZUJ1ZmZlcikgewotICAg
ICAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250
ZXh0KCk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAog
ICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1ZmZl
ci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0
LnNpemUoKSkpOwogICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5TGVuZ3RoID0gcGl4ZWxBcnJh
eS0+bGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQ
aWVjZUltYWdlLmNwcAppbmRleCBhMWYxMDMwMDRhYjc4YmMzMjcxNTc3YzBmMTBlZDQ2M2I4ODUz
ZGE1Li5iMTM3NGUwOGIxMDg0MzRkYWRlNTMyZDRkZjEyMGRmNzczNDFkNmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKQEAgLTIw
OCw3ICsyMDgsNyBAQCBWZWN0b3I8RmxvYXRTaXplPiBOaW5lUGllY2VJbWFnZTo6Y29tcHV0ZU5v
bkludHJpbnNpY1RpbGVTY2FsZXMoKQogICAgIHJldHVybiBWZWN0b3I8RmxvYXRTaXplPihNYXhQ
aWVjZSwgRmxvYXRTaXplKDEsIDEpKTsKIH0KIAotdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91dFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBMYXlvdXRTaXplJiBzb3VyY2UsICBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKSBjb25zdAordm9pZCBOaW5l
UGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExheW91
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzb3VyY2UsICBib29sIGludHJp
bnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
KSBjb25zdAogewogICAgIFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBpbWFnZSgpOwogICAgIEFT
U0VSVChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzTG9hZGVkKCkpOwpAQCAtMjM4LDEzICsy
MzgsMTMgQEAgdm9pZCBOaW5lUGllY2VJbWFnZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIFJlbmRlckVsZW1lbnQqIHJlbmQKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmIChpc0Nvcm5lclBpZWNlKHBpZWNlKSkgewotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9u
UmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsKKyAgICAgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9u
UmVjdHNbcGllY2VdLCBzb3VyY2VSZWN0c1twaWVjZV0sIG9wKTsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gaXNIb3Jp
em9udGFsUGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPihob3Jpem9u
dGFsUnVsZSgpKSA6IEltYWdlOjpTdHJldGNoVGlsZTsKICAgICAgICAgSW1hZ2U6OlRpbGVSdWxl
IHZSdWxlID0gaXNWZXJ0aWNhbFBpZWNlKHBpZWNlKSA/IHN0YXRpY19jYXN0PEltYWdlOjpUaWxl
UnVsZT4odmVydGljYWxSdWxlKCkpIDogSW1hZ2U6OlN0cmV0Y2hUaWxlOwotICAgICAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBkZXN0
aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0aWxlU2NhbGVzW3BpZWNl
XSwgaFJ1bGUsIHZSdWxlLCBvcCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3VGlsZWRJ
bWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNv
dXJjZVJlY3RzW3BpZWNlXSwgdGlsZVNjYWxlc1twaWVjZV0sIGhSdWxlLCB2UnVsZSwgb3ApOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05p
bmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNl
SW1hZ2UuaAppbmRleCA0YmVmMWFmODdjZTRkNTMzMjkzZDAwZTMxODU0NTM0OWRhZDFkMDdmLi45
YzMyZTVjYWE0MjFlYzdmYjJhNDk5YzM2YTc5ODUyNDZkY2ViNWVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtMjA2LDcgKzIwNiw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4gY29tcHV0ZUludHJpbnNp
Y1RpbGVTY2FsZXMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mIGRlc3RpbmF0aW9uUmVjdHMsIGNv
bnN0IFZlY3RvcjxGbG9hdFJlY3Q+JiBzb3VyY2VSZWN0cywgRU5pbmVQaWVjZUltYWdlUnVsZSBo
UnVsZSwgRU5pbmVQaWVjZUltYWdlUnVsZSB2UnVsZSk7CiAgICAgc3RhdGljIFZlY3RvcjxGbG9h
dFNpemU+IGNvbXB1dGVOb25JbnRyaW5zaWNUaWxlU2NhbGVzKCk7CiAKLSAgICB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IExheW91dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBMYXlvdXRTaXplJiBzb3VyY2UsIGJv
b2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3Bl
cmF0b3IpIGNvbnN0OworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyRWxl
bWVudCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRyaW5zaWNTb3VyY2UsIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yLCBDb21wb3NpdGVPcGVyYXRvcikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgRGF0YVJlZjxOaW5lUGllY2VJbWFnZURhdGE+IG1fZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA4MjA3ZGY0
MTliZjJhYzFiMTgwZmQ5OGZjYjFiODBjNTJlOWY3NTE0Li4zOGVmYjJjOTk0YzZjZTM5ZDJiYjBl
Mjk5MDg2NjdkNTRmOWUwYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBSZW5k
ZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQoKQogCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5l
cjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAg
ICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFp
bnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIFNwZWM6IGdyb3VwcyB3L28gY2hpbGRyZW4gc3RpbGwgbWF5IHJlbmRlciBmaWx0ZXIg
Y29udGVudC4KQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIAogICAgIFBhaW50
SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwogICAgIHsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZv
LmNvbnRleHQoKSk7CiAKICAgICAgICAgLy8gTGV0IHRoZSBSZW5kZXJTVkdWaWV3cG9ydENvbnRh
aW5lciBzdWJjbGFzcyBjbGlwIGlmIG5lY2Vzc2FyeQogICAgICAgICBhcHBseVZpZXdwb3J0Q2xp
cChjaGlsZFBhaW50SW5mbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdFbGxpcHNlLmNwcAppbmRleCBjYjZkOWMzN2M4NjNiNzNlZGYzZjk1MGZlMDhiZWI4
MTNjMDYxYzM1Li5mYWUzNzFhZWNmZGU4MWVhYjc3YmU0OTRmMTM5OTg2NTRlYmE3MDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAK
QEAgLTkzLDE2ICs5MywxNiBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0ZVJhZGlp
QW5kQ2VudGVyKCkKICAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgp
LnN2Z1N0eWxlKCkucnkoKSwgTGVuZ3RoTW9kZUhlaWdodCkpOwogfQogCi12b2lkIFJlbmRlclNW
R0VsbGlwc2U6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2b2lk
IFJlbmRlclNWR0VsbGlwc2U6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgaWYgKG1fdXNlUGF0aEZhbGxiYWNrKSB7CiAgICAgICAgIFJlbmRlclNWR1No
YXBlOjpmaWxsU2hhcGUoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29u
dGV4dC0+ZmlsbEVsbGlwc2UobV9maWxsQm91bmRpbmdCb3gpOworICAgIGNvbnRleHQuZmlsbEVs
bGlwc2UobV9maWxsQm91bmRpbmdCb3gpOwogfQogCi12b2lkIFJlbmRlclNWR0VsbGlwc2U6OnN0
cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZH
RWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewog
ICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1Zpc2libGVTdHJva2UoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tl
U2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICBSZW5kZXJTVkdT
aGFwZTo6c3Ryb2tlU2hhcGUoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Y29udGV4dC0+c3Ryb2tlRWxsaXBzZShtX2ZpbGxCb3VuZGluZ0JveCk7CisgICAgY29udGV4dC5z
dHJva2VFbGxpcHNlKG1fZmlsbEJvdW5kaW5nQm94KTsKIH0KIAogYm9vbCBSZW5kZXJTVkdFbGxp
cHNlOjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaApp
bmRleCBiNTg3ZDFhYjMzMTQ3MDMyMzJmNWQwZTA5YzE3OGNiNTVhOWNiNTI2Li45YTZmYzEyY2Rl
ZGFiYTE1NTI1YzQ0ZGJhODkzZThjZjU5ZTZiNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaApAQCAtNDIsOCArNDIsOCBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBh
dGhGYWxsYmFjayA/IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0Jv
eC5pc0VtcHR5KCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNo
YXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBz
aGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNhbGN1bGF0
ZVJhZGlpQW5kQ2VudGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAppbmRleCA0Njk4OTA3ZGY5OGU2OTIzMTU2
NDI2ZDE2MjUyNGQwMGE3YjQwZmY1Li5iODc5MWFlNDAyMzQwNGUyY2JjMTMyZjVkZGExNDI2OWUw
ZDJhNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKQEAgLTUzLDE4ICs1MywxOCBAQCBTVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudCYgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6Zm9yZWlnbk9iamVjdEVsZW1lbnQo
KSBjb25zdAogCiB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBo
YXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlU2VsZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWlu
dEluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJ
bmZvLmFwcGx5VHJhbnNmb3JtKGxvY2FsVHJhbnNmb3JtKCkpOwogCiAgICAgaWYgKFNWR1JlbmRl
clN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4oKnRoaXMpKQotICAgICAgICBjaGlsZFBhaW50SW5m
by5jb250ZXh0LT5jbGlwKG1fdmlld3BvcnQpOworICAgICAgICBjaGlsZFBhaW50SW5mby5jb250
ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIAogICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVy
aW5nQ29udGV4dDsKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCmluZGV4IDUwMjE2Nzk4MTEzM2RjZmNhNmUxZTZlMjU0ODdhMzk1ZTNhYWQ1Y2YuLmI4YTE5
NmU5NTEzNzAxZDU2YWJlYTZiOTJjZmFkNGVkMzAzYWMzODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBSZW5kZXJTVkdJbWFnZTo6bGF5b3V0KCkKIAogdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFp
bnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAo
cGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2Ug
IT0gUGFpbnRQaGFzZUZvcmVncm91bmQKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWlu
dGluZ0Rpc2FibGVkKCkgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5k
CiAgICAgICAgIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCAhaW1hZ2VSZXNv
dXJjZSgpLmhhc0ltYWdlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTQwLDE0ICsxNDAsMTQg
QEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFp
bnRJbmZvKHBhaW50SW5mbyk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY2hpbGRQYWludEluZm8uY29udGV4dCgpKTsKICAgICBjaGlsZFBhaW50
SW5mby5hcHBseVRyYW5zZm9ybShtX2xvY2FsVHJhbnNmb3JtKTsKIAogICAgIGlmIChjaGlsZFBh
aW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkgewogICAgICAgICBTVkdSZW5k
ZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQoKnRoaXMsIGNoaWxkUGFpbnRJbmZvKTsKIAog
ICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKLSAg
ICAgICAgICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJpbmcoKSA9PSBC
Ul9TVEFUSUMgICYmIHJlbmRlcmluZ0NvbnRleHQuYnVmZmVyRm9yZWdyb3VuZChtX2J1ZmZlcmVk
Rm9yZWdyb3VuZCkpCisgICAgICAgICAgICBpZiAoc3R5bGUoKS5zdmdTdHlsZSgpLmJ1ZmZlcmVk
UmVuZGVyaW5nKCkgPT0gQlJfU1RBVElDICYmIHJlbmRlcmluZ0NvbnRleHQuYnVmZmVyRm9yZWdy
b3VuZChtX2J1ZmZlcmVkRm9yZWdyb3VuZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgICAgICBwYWludEZvcmVncm91bmQoY2hpbGRQYWludEluZm8pOwpAQCAtMTY2LDcgKzE2
Niw3IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50Rm9yZWdyb3VuZChQYWludEluZm8mIHBh
aW50SW5mbykKIAogICAgIGltYWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS50cmFu
c2Zvcm1SZWN0KGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5k
cmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBzcmNS
ZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lkIFJlbmRlclNW
R0ltYWdlOjppbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCmluZGV4IDhlNDBkOGJlOTUyNzhmMjll
NjZlNzZiNjE2N2U2NGMwZGM0OTI1ZDYuLjFkMDEzYWQ3YzFlMGU4YzQwMTQwMDg2OGEyNzI1OTNh
YmFjYTJkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQ
YXRoLmNwcApAQCAtNjQsMTcgKzY0LDE3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdQYXRoOjpjYWxj
dWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdAogICAgIHJldHVybiBzdHJva2VC
b3VuZGluZ0JveDsKIH0KIAotc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIHZvaWQgdXNlU3Ryb2tlU3R5bGVUb0ZpbGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChHcmFkaWVudCogZ3JhZGllbnQgPSBj
b250ZXh0LT5zdHJva2VHcmFkaWVudCgpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGll
bnQoKmdyYWRpZW50KTsKLSAgICBlbHNlIGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC0+
c3Ryb2tlUGF0dGVybigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybigqcGF0dGVy
bik7CisgICAgaWYgKEdyYWRpZW50KiBncmFkaWVudCA9IGNvbnRleHQuc3Ryb2tlR3JhZGllbnQo
KSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQoKmdyYWRpZW50KTsKKyAgICBlbHNl
IGlmIChQYXR0ZXJuKiBwYXR0ZXJuID0gY29udGV4dC5zdHJva2VQYXR0ZXJuKCkpCisgICAgICAg
IGNvbnRleHQuc2V0RmlsbFBhdHRlcm4oKnBhdHRlcm4pOwogICAgIGVsc2UKLSAgICAgICAgY29u
dGV4dC0+c2V0RmlsbENvbG9yKGNvbnRleHQtPnN0cm9rZUNvbG9yKCksIGNvbnRleHQtPnN0cm9r
ZUNvbG9yU3BhY2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbnRleHQuc3Ry
b2tlQ29sb3IoKSwgY29udGV4dC5zdHJva2VDb2xvclNwYWNlKCkpOwogfQogCi12b2lkIFJlbmRl
clNWR1BhdGg6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3Zv
aWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhhc1Zpc2libGVTdHJva2UoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtOTAsMTMgKzkwLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUGF0aDo6
c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgIGlmIChoYXNO
b25TY2FsaW5nU3Ryb2tlKCkpCiAgICAgICAgIG5vblNjYWxpbmdUcmFuc2Zvcm0gPSBub25TY2Fs
aW5nU3Ryb2tlVHJhbnNmb3JtKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNvbnRleHQsIHRydWUpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0LCB0cnVlKTsKICAgICB1c2VTdHJva2VTdHlsZVRvRmlsbChjb250
ZXh0KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1femVyb0xlbmd0aExpbmVjYXBMb2Nh
dGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgdXNlUGF0aCA9IHplcm9MZW5ndGhMaW5lY2Fw
UGF0aChtX3plcm9MZW5ndGhMaW5lY2FwTG9jYXRpb25zW2ldKTsKICAgICAgICAgaWYgKGhhc05v
blNjYWxpbmdTdHJva2UoKSkKICAgICAgICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tl
UGF0aCh1c2VQYXRoLCBub25TY2FsaW5nVHJhbnNmb3JtKTsKLSAgICAgICAgY29udGV4dC0+Zmls
bFBhdGgoKnVzZVBhdGgpOworICAgICAgICBjb250ZXh0LmZpbGxQYXRoKCp1c2VQYXRoKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgK
aW5kZXggMDhkODkxMTllYmJhYzE5YjE1ZTA2YWZlY2M3YzVlZTM0MmMwNDkyOS4uYmJkMjJkYzVi
MGNiOWI4NWMxMmU4MTBiZWIwNDQ0MWMyOWQ4NzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogICAgIEZs
b2F0UmVjdCBjYWxjdWxhdGVVcGRhdGVkU3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMo
Y29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRTdHJva2VaZXJv
TGVuZ3RoU3VicGF0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5jcHAKaW5kZXggMDNmYmJiOWQ1MDg5M2MyNTY3ODU1Y2JlMWEyM2IyNmE2
MjFhMjg4Ny4uY2JjODhmN2Y2NjkwYTk1Y2VlOWIzNjMxNzFkMjk1NmU3OGYwNjYwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVjdDo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpCiAj
ZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmIChtX3VzZVBhdGhGYWxsYmFjaykgewog
ICAgICAgICBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKGNvbnRleHQpOwpAQCAtMTA5LDE4ICsx
MDksMTggQEAgdm9pZCBSZW5kZXJTVkdSZWN0OjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KSBjb25zdAogICAgIC8vIHNoYWRvdyBkcmF3aW5nIG1ldGhvZCwgd2hpY2ggZHJhd3Mg
YW4gZXh0cmEgc2hhZG93LgogICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBzd2l0Y2hp
bmcgb2ZmIHRoZSBleHRyYSBzaGFkb3cuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4ODk5Ci0gICAgaWYgKGNvbnRleHQtPmhhc1NoYWRvdygpKSB7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgICAgIGNvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KG1fZmlsbEJvdW5kaW5nQm94KTsKKyAgICBpZiAoY29udGV4dC5oYXNTaGFkb3coKSkgeworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAg
ICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdChtX2Zp
bGxCb3VuZGluZ0JveCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGNv
bnRleHQtPmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0
KG1fZmlsbEJvdW5kaW5nQm94KTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZWN0OjpzdHJva2VTaGFw
ZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2b2lkIFJlbmRlclNWR1JlY3Q6OnN0
cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAoIXN0
eWxlKCkuc3ZnU3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tlKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNv
bnRleHQtPnN0cm9rZVJlY3QobV9maWxsQm91bmRpbmdCb3gsIHN0cm9rZVdpZHRoKCkpOworICAg
IGNvbnRleHQuc3Ryb2tlUmVjdChtX2ZpbGxCb3VuZGluZ0JveCwgc3Ryb2tlV2lkdGgoKSk7CiB9
CiAKIGJvb2wgUmVuZGVyU1ZHUmVjdDo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZWN0LmgKaW5kZXggOTcwMzAxYWE3OWY1YzNkZTJlYjMyODZkMzBkMTNmNWRlYjQxNDg5
Zi4uMDI2ZWU2MzA5YjU5MWVjMWYwYzM1Y2Q2MzIxNTc5NTI3OTJlNGVhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmgKQEAgLTQ4LDggKzQ4LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91
bmRpbmdCb3guaXNFbXB0eSgpOyB9CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyaW5nRGlzYWJs
ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNz
Q29udGV4dCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShH
cmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNo
YXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
dHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAppbmRleCA4YjlhNjI4OWUyODIwNWM5MGIxZTA0ZTNjN2Q0OGJkNWExODVmYTU4Li41
ZTQ3NzViZTBiNmEwMDRjNmY1YzYyNmFjMzQxYTMyYjkxZTU3ZTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCkBAIC02OSwxMCArNjksMTAgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmQKICAgICBBU1NF
UlQoY29udGV4dCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZU1vZGUsIHJlc291cmNlTW9k
ZSA9PSBBcHBseVRvRGVmYXVsdE1vZGUpOwogCi0gICAgcmV0dXJuIGFwcGx5Q2xpcHBpbmdUb0Nv
bnRleHQocmVuZGVyZXIsIHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCksIHJlbmRlcmVyLnJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCksIGNvbnRleHQpOworICAgIHJldHVybiBhcHBs
eUNsaXBwaW5nVG9Db250ZXh0KHJlbmRlcmVyLCByZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgp
LCByZW5kZXJlci5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpLCAqY29udGV4dCk7CiB9
CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBwaW5nKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhbmltYXRlZExvY2Fs
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KQorYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gpCiB7CiAgICAgLy8gSWYgdGhlIGN1cnJl
bnQgY2xpcC1wYXRoIGdldHMgY2xpcHBlZCBpdHNlbGYsIHdlIGhhdmUgdG8gZmFsbGJhY2sgdG8g
bWFza2luZy4KICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5jbGlwcGVyUmVzb3VyY2UoKS5p
c0VtcHR5KCkpCkBAIC0xMjMsMTIgKzEyMywxMSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xp
cHBlcjo6cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAg
ICAgLy8gVGhlIFNWRyBzcGVjaWZpY2F0aW9uIHdhbnRzIHVzIHRvIGNsaXAgZXZlcnl0aGluZywg
aWYgY2xpcC1wYXRoIGRvZXNuJ3QgaGF2ZSBhIGNoaWxkLgogICAgIGlmIChjbGlwUGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIGNsaXBQYXRoLmFkZFJlY3QoRmxvYXRSZWN0KCkpOwotICAgIGNvbnRl
eHQtPmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwUnVsZSk7CisgICAgY29udGV4dC5jbGlwUGF0aChj
bGlwUGF0aCwgY2xpcFJ1bGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UmVj
dCYgcmVwYWludFJlY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK2Jvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJl
Y3QmIHJlcGFpbnRSZWN0LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgQ2xpcHBl
ck1hc2tJbWFnZSYgY2xpcHBlck1hc2tJbWFnZSA9IGFkZFJlbmRlcmVyVG9DbGlwcGVyKHJlbmRl
cmVyKTsKICAgICBib29sIHNob3VsZENyZWF0ZUNsaXBwZXJNYXNrSW1hZ2UgPSAhY2xpcHBlck1h
c2tJbWFnZTsKQEAgLTE0NSwxNyArMTQ0LDE1IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjCiAg
ICAgICAgIGlmICghY2xpcHBlck1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlck1hc2tJbWFn
ZS0+Y29udGV4dCgpOwotICAgICAgICBBU1NFUlQobWFza0NvbnRleHQpOwotCi0gICAgICAgIG1h
c2tDb250ZXh0LT5jb25jYXRDVE0oYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dCYgbWFza0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7
CisgICAgICAgIG1hc2tDb250ZXh0LmNvbmNhdENUTShhbmltYXRlZExvY2FsVHJhbnNmb3JtKTsK
IAogICAgICAgICAvLyBjbGlwUGF0aCBjYW4gYWxzbyBiZSBjbGlwcGVkIGJ5IGFub3RoZXIgY2xp
cFBhdGguCiAgICAgICAgIGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNo
ZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcyk7CiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlciogY2xpcHBlcjsKICAgICAgICAgYm9vbCBzdWNjZWVkZWQ7CiAgICAgICAgIGlmIChy
ZXNvdXJjZXMgJiYgKGNsaXBwZXIgPSByZXNvdXJjZXMtPmNsaXBwZXIoKSkpIHsKLSAgICAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqbWFza0NvbnRleHQpOwor
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKG1hc2tDb250
ZXh0KTsKIAogICAgICAgICAgICAgaWYgKCFjbGlwcGVyLT5hcHBseUNsaXBwaW5nVG9Db250ZXh0
KCp0aGlzLCBvYmplY3RCb3VuZGluZ0JveCwgcmVwYWludFJlY3QsIG1hc2tDb250ZXh0KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODAsMTQgKzE3NywxMyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKGNvbnN0IENs
aXBwZXJNYXNrSW1hZ2UmCiB7CiAgICAgQVNTRVJUKGNsaXBwZXJNYXNrSW1hZ2UpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQo
KTsKLSAgICBBU1NFUlQobWFza0NvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0Nv
bnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0gbWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAoY2xpcFBhdGhFbGVtZW50KCku
Y2xpcFBhdGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VO
RElOR0JPWCkgewogICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnRyYW5zbGF0ZShv
YmplY3RCb3VuZGluZ0JveC54KCksIG9iamVjdEJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgIG1h
c2tDb250ZW50VHJhbnNmb3JtYXRpb24uc2NhbGVOb25Vbmlmb3JtKG9iamVjdEJvdW5kaW5nQm94
LndpZHRoKCksIG9iamVjdEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICAgICAgbWFza0NvbnRl
eHQtPmNvbmNhdENUTShtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uKTsKKyAgICAgICAgbWFza0Nv
bnRleHQuY29uY2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogICAg
IC8vIFN3aXRjaCB0byBhIHBhaW50IGJlaGF2aW9yIHdoZXJlIGFsbCBjaGlsZHJlbiBvZiB0aGlz
IDxjbGlwUGF0aD4gd2lsbCBiZSByZW5kZXJlZCB1c2luZyBzcGVjaWFsIGNvbnN0cmFpbnRzOgpA
QCAtMjI2LDcgKzIyMiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpkcmF3Q29u
dGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKICAgICAgICAgaWYgKCFy
ZW5kZXJlci0+aXNTVkdTaGFwZSgpICYmICFyZW5kZXJlci0+aXNTVkdUZXh0KCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBtYXNrQ29udGV4dC0+c2V0RmlsbFJ1bGUobmV3Q2xp
cFJ1bGUpOworICAgICAgICBtYXNrQ29udGV4dC5zZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7CiAK
ICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSA8dXNlPiBlbGVtZW50LCB3ZSBvYnRhaW5lZCBp
dHMgcmVuZGVyZXJlIGFib3ZlLCB0byByZXRyaWV2ZSBpdHMgY2xpcFJ1bGUuCiAgICAgICAgIC8v
IFdlIGhhdmUgdG8gcGFzcyB0aGUgPHVzZT4gcmVuZGVyZXIgaXRzZWxmIHRvIHJlbmRlclN1YnRy
ZWVUb0ltYWdlQnVmZmVyKCkgdG8gYXBwbHkgaXQncyB4L3kvdHJhbnNmb3JtL2V0Yy4gdmFsdWVz
IHdoZW4gcmVuZGVyaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5kZXggNDQxNWI5NGIxM2E2MmRiNmZiYTYz
Y2QwNjJmZGQ0Yzg2Njk2YjQ1Yy4uYjc3MDQ5NjUzZGFjZjQ1ZmMwMWU1MzZkOTYwZDU0YTE5NmY0
ZWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBj
bGlwUGF0aCBjYW4gYmUgY2xpcHBlZCB0b28sIGJ1dCBkb24ndCBoYXZlIGEgYm91bmRpbmdCb3gg
b3IgcmVwYWludFJlY3QuIFNvIHdlIGNhbid0IGNhbGwKICAgICAvLyBhcHBseVJlc291cmNlIGRp
cmVjdGx5IGFuZCB1c2UgdGhlIHJlY3RzIGZyb20gdGhlIG9iamVjdCwgc2luY2UgdGhleSBhcmUg
ZW1wdHkgZm9yIFJlbmRlclNWR1Jlc291cmNlcwogICAgIC8vIEZJWE1FOiBXZSBtYWRlIGFwcGx5
Q2xpcHBpbmdUb0NvbnRleHQgcHVibGljIGJlY2F1c2Ugd2UgY2Fubm90IGNhbGwgYXBwbHlSZXNv
dXJjZSBvbiBIVE1MIGVsZW1lbnRzIChpdCBhc3NlcnRzIG9uIFJlbmRlck9iamVjdDo6b2JqZWN0
Qm91bmRpbmdCb3gpCi0gICAgYm9vbCBhcHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1l
bnQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0NvbnRleHQq
KTsKKyAgICBib29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDbGlwcGVyUmVzb3VyY2VUeXBlOyB9CkBAIC02
NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyIjsg
fQogCi0gICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIGJvb2wgcGF0aE9ubHlDbGlw
cGluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFJlY3QmKTsKICAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShjb25zdCBDbGlwcGVy
TWFza0ltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluZ0JveCk7CiAgICAgdm9p
ZCBjYWxjdWxhdGVDbGlwQ29udGVudFJlcGFpbnRSZWN0KCk7CiAgICAgQ2xpcHBlck1hc2tJbWFn
ZSYgYWRkUmVuZGVyZXJUb0NsaXBwZXIoY29uc3QgUmVuZGVyT2JqZWN0Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCmluZGV4IGUzMTg2NWQ4MDNjMTNkMTUwYjU3MWI2MWRlMDc4NjFiMDIxNzExZmMuLjA0ZWFk
MWE4YmVhNjRhNGFmMzYzMDZhZmU3NTkxNmI5ZDA3Yzg4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBA
IC0xOTgsMTMgKzE5OCwxMiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJl
c291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIC8vIFNldCB0
aGUgcmVuZGVyaW5nIG1vZGUgZnJvbSB0aGUgcGFnZSdzIHNldHRpbmdzLgogICAgIGZpbHRlckRh
dGEtPmZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAotICAgIEdyYXBo
aWNzQ29udGV4dCogc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0
KCk7Ci0gICAgQVNTRVJUKHNvdXJjZUdyYXBoaWNDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4dCgpOwogICAK
ICAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyID0gV1RGOjptb3ZlKHNvdXJjZUdy
YXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAKLSAgICBj
b250ZXh0ID0gc291cmNlR3JhcGhpY0NvbnRleHQ7CisgICAgY29udGV4dCA9ICZzb3VyY2VHcmFw
aGljQ29udGV4dDsKIAogICAgIEFTU0VSVCghbV9maWx0ZXIuY29udGFpbnMoJnJlbmRlcmVyKSk7
CiAgICAgbV9maWx0ZXIuc2V0KCZyZW5kZXJlciwgV1RGOjptb3ZlKGZpbHRlckRhdGEpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCmluZGV4IGNiY2ExMDNlZjMwNTY5NzllZjQ2NWMyYjU3YjUzMzdhOThi
NWQ3NGUuLmFjZWEyMzBjOWQ5MjVjMzQ2ZTgwZDQyOGQ5OTgyYzU4Nzk1Y2Q4ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcApAQCAtNjUsMTYgKzY1LDE1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVh
dGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29u
CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdyYXBo
aWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAg
IEFTU0VSVChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFn
ZUNvbnRleHQgPSBtYXNrSW1hZ2UtPmNvbnRleHQoKTsKICAgICBBU1NFUlQobWFza0ltYWdlKTsK
ICAgICBzYXZlZENvbnRleHQgPSBjb250ZXh0OwotICAgIGNvbnRleHQgPSBtYXNrSW1hZ2VDb250
ZXh0OworICAgIGNvbnRleHQgPSAmbWFza0ltYWdlQ29udGV4dDsKICAgICBpbWFnZUJ1ZmZlciA9
IFdURjo6bW92ZShtYXNrSW1hZ2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5s
aW5lIEFmZmluZVRyYW5zZm9ybSBjbGlwVG9UZXh0TWFzayhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIFJlbmRlck9iamVjdCogb2JqZWN0LCBib29sIGJvdW5kaW5nQm94TW9kZSwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBncmFkaWVudFRyYW5zZm9ybSkKK3N0YXRpYyBpbmxpbmUg
QWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgUmVuZGVyT2JqZWN0KiBvYmplY3QsIGJvb2wgYm91bmRpbmdCb3hNb2RlLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGdyYWRpZW50VHJhbnNmb3JtKQogewogICAgIGF1dG8qIHRleHRS
b290QmxvY2sgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoKm9i
amVjdCk7CiAgICAgQVNTRVJUKHRleHRSb290QmxvY2spOwpAQCAtMjA3LDcgKzIwNiw3IEBAIHZv
aWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIEdyYXBoCiAgICAgICAgICAgICBjYWxjdWxhdGVHcmFkaWVudFRyYW5z
Zm9ybShncmFkaWVudFRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCB0YXJnZXRS
ZWN0OwotICAgICAgICAgICAgZ3JhZGllbnREYXRhLT5ncmFkaWVudC0+c2V0R3JhZGllbnRTcGFj
ZVRyYW5zZm9ybShjbGlwVG9UZXh0TWFzayhjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCB0YXJnZXRS
ZWN0LCAmcmVuZGVyZXIsIGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gsIGdyYWRpZW50VHJhbnNmb3JtKSk7CisgICAgICAgICAg
ICBncmFkaWVudERhdGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBU
b1RleHRNYXNrKCpjb250ZXh0LCBtX2ltYWdlQnVmZmVyLCB0YXJnZXRSZWN0LCAmcmVuZGVyZXIs
IGdyYWRpZW50VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9V
TkRJTkdCT1gsIGdyYWRpZW50VHJhbnNmb3JtKSk7CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRG
aWxsR3JhZGllbnQoKmdyYWRpZW50RGF0YS0+Z3JhZGllbnQpOwogCiAgICAgICAgICAgICBjb250
ZXh0LT5maWxsUmVjdCh0YXJnZXRSZWN0KTsKQEAgLTIyMSwxMyArMjIwLDEzIEBAIHZvaWQgUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIsIEdyYXBoCiAgICAgICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAg
ICAgICAgICAgICAgICBzaGFwZS0+ZmlsbFNoYXBlKGNvbnRleHQpOworICAgICAgICAgICAgICAg
IHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNv
dXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9kZSkgewogICAgICAgICAgICAgaWYgKHBhdGgpCiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqcGF0aCk7CiAgICAgICAgICAgICBl
bHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4
dCk7CisgICAgICAgICAgICAgICAgc2hhcGUtPnN0cm9rZVNoYXBlKCpjb250ZXh0KTsKICAgICAg
ICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcAppbmRleCA4YzNiZGIzNDc1MTA0MDY5NjdiZTY4
MzU2MTczMGMwMmY5ZTBmYWE2Li42OWU1ZGIxNmZmMTFkNjFjMDA0YzVjYjViMDEwZTUwMjkxNmI2
MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFya2VyLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFJlbmRlclNWR1Jl
c291cmNlTWFya2VyOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYgY2xpZW50
LCBib29sCiB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjphcHBseVZpZXdwb3J0Q2xpcChQ
YWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVy
Zmxvd0hpZGRlbigqdGhpcykpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1fdmll
d3BvcnQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAobV92aWV3cG9ydCk7CiB9
CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6bWFya2VyQm91bmRhcmllcyhj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hcmtlclRyYW5zZm9ybWF0aW9uKSBjb25zdApAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OmRyYXcoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUGFpbnRJbmZvIGluZm8ocGFpbnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKICAgICBpbmZvLmFwcGx5VHJhbnNmb3Jt
KHRyYW5zZm9ybSk7CiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChpbmZvLCBJbnRQb2lu
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggNTMwZGEzZDZmYWVkNGM3NWM3YWVmYWFmYjBj
NDBlZDE1ODdjOGM1NS4uYWQzN2Q0N2M5ODQ2YWMwMDUzZGE1MmM1NGRkOWFmNGMzMWQ1Y2YwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAKQEAgLTgwLDE0ICs4MCwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBS
ZW5kZQogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb250ZXh0
LCBhYnNvbHV0ZVRyYW5zZm9ybSwgcmVwYWludFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwg
bWlzc2luZ01hc2tlckRhdGEpOworICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdl
QnVmZmVyKCpjb250ZXh0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgcmVwYWludFJlY3QsIG1hc2tlckRh
dGEtPm1hc2tJbWFnZSwgbWlzc2luZ01hc2tlckRhdGEpOwogICAgIHJldHVybiB0cnVlOwogfQog
CiBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Uo
TWFza2VyRGF0YSogbWFza2VyRGF0YSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBt
YXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQobWFza0ltYWdlQ29u
dGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0
YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CiAKICAgICAvLyBFdmVudHVhbGx5IGFkanVzdCB0aGUg
bWFzayBpbWFnZSBjb250ZXh0IGFjY29yZGluZyB0byB0aGUgdGFyZ2V0IG9iamVjdEJvdW5kaW5n
Qm94LgogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uOwpAQCAt
OTUsNyArOTQsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudElu
dG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgQwogICAgICAgICBGbG9hdFJlY3Qg
b2JqZWN0Qm91bmRpbmdCb3ggPSBvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCk7CiAgICAgICAg
IG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94Lngo
KSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1h
dGlvbi5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91
bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0o
bWFza0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuY29u
Y2F0Q1RNKG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24pOwogICAgIH0KIAogICAgIC8vIERyYXcg
dGhlIGNvbnRlbnQgaW50byB0aGUgSW1hZ2VCdWZmZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXgg
NGJjMGQ5NTEyYjI5MGM3MjdkN2E3N2M4YjI0NTg0OTk5YzFmNjliZS4uOWY5NWRkMjZiMzFiMGRl
OTQ4ODVlMzk1NDM2N2FiZmE0MjRkODBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTg5LDEz
ICsxODksMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291
cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQKICAgICAgICAgaWYgKHBhdGgpCiAg
ICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgIGVsc2UgaWYgKHNo
YXBlKQotICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAg
IHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgIH0KICAgICBpZiAocmVzb3VyY2VNb2Rl
ICYgQXBwbHlUb1N0cm9rZU1vZGUpIHsKICAgICAgICAgaWYgKHBhdGgpCiAgICAgICAgICAgICBj
b250ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAg
ICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICBzaGFwZS0+
c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgIH0KIAogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsK
QEAgLTIzNywxNiArMjM3LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0CiAgICAgaWYgKCF0
aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKHRp
bGVJbWFnZUNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9
IHRpbGVJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgLy8gVGhlIGltYWdlIGJ1ZmZlciByZXByZXNl
bnRzIHRoZSBmaW5hbCByZW5kZXJlZCBzaXplLCBzbyB0aGUgY29udGVudCBoYXMgdG8gYmUgc2Nh
bGVkICh0byBhdm9pZCBwaXhlbGF0aW9uKS4KLSAgICB0aWxlSW1hZ2VDb250ZXh0LT5zY2FsZShG
bG9hdFNpemUoY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3Vu
ZGFyaWVzLndpZHRoKCksCisgICAgdGlsZUltYWdlQ29udGV4dC5zY2FsZShGbG9hdFNpemUoY2xh
bXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVzLndpZHRo
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wZWRBYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzLmhlaWdodCgpIC8gdGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkpKTsKIAog
ICAgIC8vIEFwcGx5IHRpbGUgaW1hZ2UgdHJhbnNmb3JtYXRpb25zLgogICAgIGlmICghdGlsZUlt
YWdlVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgdGlsZUltYWdlQ29udGV4dC0+Y29u
Y2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9ybSk7CisgICAgICAgIHRpbGVJbWFnZUNvbnRleHQuY29u
Y2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVu
dFRyYW5zZm9ybWF0aW9uOwogICAgIGlmIChhdHRyaWJ1dGVzLnBhdHRlcm5Db250ZW50VW5pdHMo
KSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29s
aWRDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlU29saWRDb2xvci5jcHAKaW5kZXggZjUwMWFiZjQ0YjIxNDE2NzlhNmI3YTY5OGVmYjE3MTg1
YmU1NzAyOS4uZmI4OGZjOGI0YjI4Yjc4NTlkZDhmMjE1YjkwMjUxZDdlMGQyODNlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlk
Q29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VTb2xpZENvbG9yLmNwcApAQCAtODEsMTMgKzgxLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VTb2xpZENvbG9yOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3JhcGhp
Y3NDb250CiAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgY29udGV4dC0+ZmlsbFBhdGgo
KnBhdGgpOwogICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgIHNoYXBlLT5maWxs
U2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICBzaGFwZS0+ZmlsbFNoYXBlKCpjb250ZXh0KTsK
ICAgICB9CiAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9TdHJva2VNb2RlKSB7CiAgICAg
ICAgIGlmIChwYXRoKQogICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqcGF0aCk7CiAg
ICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgc2hhcGUtPnN0cm9rZVNoYXBlKGNv
bnRleHQpOworICAgICAgICAgICAgc2hhcGUtPnN0cm9rZVNoYXBlKCpjb250ZXh0KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CmluZGV4IDM0YzdmNjg4NmY1MWIyMTMyNTllOGRkY2NiZmViZDBhZDIwZDNkZTAuLmMyZmFhYTI1
ZTE0MzJmNjBmNzg5MThiMGY4NTc1ZTQ1MjdhOGE0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERvbid0IHBhaW50
LCBpZiB0aGUgY29udGV4dCBleHBsaWNpdGx5IGRpc2FibGVkIGl0LgotICAgIGlmIChwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU1ZHIG91
dGxpbmVzIGFyZSBwYWludGVkIGR1cmluZyBQYWludFBoYXNlRm9yZWdyb3VuZC4KQEAgLTI1Nywx
OCArMjU3LDE4IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAKICAgICAvLyBNYWtlIGEgY29w
eSBvZiB0aGUgUGFpbnRJbmZvIGJlY2F1c2UgYXBwbHlUcmFuc2Zvcm0gd2lsbCBtb2RpZnkgdGhl
IGRhbWFnZSByZWN0LgogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwot
ICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBjaGlsZFBhaW50SW5mby5j
b250ZXh0KCkuc2F2ZSgpOwogCiAgICAgLy8gQXBwbHkgaW5pdGlhbCB2aWV3cG9ydCBjbGlwCiAg
ICAgaWYgKHNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZv
LmNvbnRleHQtPmNsaXAoc25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNl
dCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKSk7CisgICAgICAgIGNoaWxkUGFp
bnRJbmZvLmNvbnRleHQoKS5jbGlwKHNuYXBwZWRJbnRSZWN0KG92ZXJmbG93Q2xpcFJlY3QocGFp
bnRPZmZzZXQsIGN1cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSkpOwogCiAgICAgLy8g
Q29udmVydCBmcm9tIGNvbnRhaW5lciBvZmZzZXRzIChodG1sIHJlbmRlcmVycykgdG8gYSByZWxh
dGl2ZSB0cmFuc2Zvcm0gKHN2ZyByZW5kZXJlcnMpLgogICAgIC8vIFRyYW5zZm9ybSBmcm9tIG91
ciBwYWludCBjb250YWluZXIncyBjb29yZGluYXRlIHN5c3RlbSB0byBvdXIgbG9jYWwgY29vcmRz
LgogICAgIEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFp
bnRPZmZzZXQpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5z
Zm9ybTo6dHJhbnNsYXRpb24oYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRP
ZmZzZXQueSgpKSAqIGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKSk7CiAKLSAgICAvLyBTVkdS
ZW5kZXJpbmdDb250ZXh0IG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB3ZSByZXN0b3JlIHRoZSBj
aGlsZFBhaW50SW5mby5jb250ZXh0LCBiZWNhdXNlIGEgZmlsdGVyIG1heSBoYXZlCisgICAgLy8g
U1ZHUmVuZGVyaW5nQ29udGV4dCBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgd2UgcmVzdG9yZSB0
aGUgY2hpbGRQYWludEluZm8uY29udGV4dCgpLCBiZWNhdXNlIGEgZmlsdGVyIG1heSBoYXZlCiAg
ICAgLy8gY2hhbmdlZCB0aGUgY29udGV4dCBhbmQgaXQgaXMgb25seSByZXZlcnRlZCB3aGVuIHRo
ZSBTVkdSZW5kZXJpbmdDb250ZXh0IGRlc3RydWN0b3IgZmluaXNoZXMgYXBwbHlpbmcgdGhlIGZp
bHRlci4KICAgICB7CiAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVyaW5nQ29udGV4
dDsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludAogICAgICAgICB9
CiAgICAgfQogCi0gICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIGNo
aWxkUGFpbnRJbmZvLmNvbnRleHQoKS5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHUm9v
dDo6d2lsbEJlRGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggYTE5Y2RiYjZjNWIxN2MzYjdlZWM4NjZjZDQ1NTVhZjY2
NjU2MGViMC4uOTc3NTk4ZThjNmU2OWVjM2NjMzFjNDQzYmU4NmM3MzIzNDE4MmQ3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTky
LDEyICs5MiwxMiBAQCBib29sIFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgY29uc3QKICAgICBy
ZXR1cm4gcGF0aCgpLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNo
YXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6
OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4
dC0+ZmlsbFBhdGgocGF0aCgpKTsKKyAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgoKSk7CiB9CiAK
LXZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9wYXRoKTsKICAgICBQYXRoKiB1c2VQ
YXRoID0gbV9wYXRoLmdldCgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hh
cGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICAgICBpZiAo
aGFzTm9uU2NhbGluZ1N0cm9rZSgpKQogICAgICAgICB1c2VQYXRoID0gbm9uU2NhbGluZ1N0cm9r
ZVBhdGgodXNlUGF0aCwgbm9uU2NhbGluZ1N0cm9rZVRyYW5zZm9ybSgpKTsKIAotICAgIGNvbnRl
eHQtPnN0cm9rZVBhdGgoKnVzZVBhdGgpOworICAgIGNvbnRleHQuc3Ryb2tlUGF0aCgqdXNlUGF0
aCk7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHU2hhcGU6OnNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFp
bnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0yMjUsOCArMjI1LDkgQEAgYm9vbCBSZW5k
ZXJTVkdTaGFwZTo6c2hvdWxkR2VuZXJhdGVNYXJrZXJQb3NpdGlvbnMoKSBjb25zdAogICAgIHJl
dHVybiByZXNvdXJjZXMtPm1hcmtlclN0YXJ0KCkgfHwgcmVzb3VyY2VzLT5tYXJrZXJNaWQoKSB8
fCByZXNvdXJjZXMtPm1hcmtlckVuZCgpOwogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxs
U2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
LCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCkKIHsKKyAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSAmb3JpZ2luYWxDb250ZXh0OwogICAgIENvbG9yIGZhbGxiYWNrQ29sb3I7
CiAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlKiBmaWxsUGFpbnRpbmdSZXNvdXJjZSA9IFJlbmRl
clNWR1Jlc291cmNlOjpmaWxsUGFpbnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGZhbGxiYWNr
Q29sb3IpKSB7CiAgICAgICAgIGlmIChmaWxsUGFpbnRpbmdSZXNvdXJjZS0+YXBwbHlSZXNvdXJj
ZSgqdGhpcywgc3R5bGUsIGNvbnRleHQsIEFwcGx5VG9GaWxsTW9kZSkpCkBAIC0yNDAsOCArMjQx
LDkgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXgKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU1ZH
U2hhcGU6OnN0cm9rZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQordm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCkKIHsKKyAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSAmb3JpZ2luYWxDb250ZXh0OwogICAgIENvbG9y
IGZhbGxiYWNrQ29sb3I7CiAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlKiBzdHJva2VQYWludGlu
Z1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OnN0cm9rZVBhaW50aW5nUmVzb3VyY2UoKnRo
aXMsIHN0eWxlLCBmYWxsYmFja0NvbG9yKSkgewogICAgICAgICBpZiAoc3Ryb2tlUGFpbnRpbmdS
ZXNvdXJjZS0+YXBwbHlSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGNvbnRleHQsIEFwcGx5VG9TdHJv
a2VNb2RlKSkKQEAgLTI1NSwxMiArMjU3LDEyIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0cm9r
ZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiBjb250CiAg
ICAgfQogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCit2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJs
ZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgZmFsc2UpOwogICAgIGlmIChoYXNOb25TY2FsaW5n
U3Ryb2tlKCkpIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG5vblNjYWxpbmdUcmFuc2Zvcm0g
PSBub25TY2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCk7CiAgICAgICAgIGlmICghc2V0dXBOb25TY2Fs
aW5nU3Ryb2tlQ29udGV4dChub25TY2FsaW5nVHJhbnNmb3JtLCBzdGF0ZVNhdmVyKSkKQEAgLTI3
NSwxMCArMjc3LDEwIEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VNYXJrZXJzKFBh
aW50SW5mbyYgY2hpbGRQYWludEluZm8pCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBh
aW50T3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgc3dpdGNoIChwYWludE9yZGVyLmF0KGkp
KSB7CiAgICAgICAgIGNhc2UgUGFpbnRUeXBlRmlsbDoKLSAgICAgICAgICAgIGZpbGxTaGFwZShz
dHlsZSgpLCBjaGlsZFBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgICAgIGZpbGxTaGFwZShz
dHlsZSgpLCBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGFpbnRUeXBlU3Ryb2tlOgotICAgICAgICAgICAgc3Ryb2tlU2hhcGUoY2hp
bGRQYWludEluZm8uY29udGV4dCk7CisgICAgICAgICAgICBzdHJva2VTaGFwZShjaGlsZFBhaW50
SW5mby5jb250ZXh0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGFpbnRU
eXBlTWFya2VyczoKICAgICAgICAgICAgIGlmICghbV9tYXJrZXJQb3NpdGlvbnMuaXNFbXB0eSgp
KQpAQCAtMjkwLDcgKzI5Miw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTdHJva2VNYXJr
ZXJzKFBhaW50SW5mbyYgY2hpbGRQYWludEluZm8pCiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgaWYg
KHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFp
bnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3Vu
ZAogICAgICAgICB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBISURERU4gfHwgaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKQEAgLTI5OCw3ICszMDAsNyBAQCB2b2lkIFJlbmRlclNW
R1NoYXBlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQog
ICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZv
KTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
aGlsZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNm
b3JtKG1fbG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CkBAIC0zMDcsNyArMzA5LDcgQEAgdm9pZCBSZW5kZXJT
VkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JikK
ICAgICAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5kZXJpbmdQcmVwYXJlZCgpKSB7CiAg
ICAgICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0
eWxlKCk7CiAgICAgICAgICAgICBpZiAoc3ZnU3R5bGUuc2hhcGVSZW5kZXJpbmcoKSA9PSBTUl9D
UklTUEVER0VTKQotICAgICAgICAgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPnNldFNo
b3VsZEFudGlhbGlhcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgY2hpbGRQYWludEluZm8uY29u
dGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAKICAgICAgICAgICAgIGZpbGxTdHJv
a2VNYXJrZXJzKGNoaWxkUGFpbnRJbmZvKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCmluZGV4IDYxMWJmZDE0YjlkZDY0OGMyZjFk
NzM0MmI4YWJmMjlhMmJlYWVlYTIuLjE0YzMxY2NmYzYwNDM2OWU4NjBlZGExN2YxNTY0OWI4N2I2
ZTZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmgKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Jv
dW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSBmaW5hbCB7IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRl
ID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiBtX25lZWRzQm91bmRhcmllc1VwZGF0ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgbV9uZWVk
c1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdy
YXBoaWNzQ29udGV4dCopIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFw
aGljc0NvbnRleHQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNv
bnN0ID0gMDsKIAogICAgIGJvb2wgaGFzUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aC5nZXQo
KTsgfQpAQCAtMTE0LDkgKzExNCw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1hcmtlclJl
Y3QoZmxvYXQgc3Ryb2tlV2lkdGgpIGNvbnN0OwogICAgIHZvaWQgcHJvY2Vzc01hcmtlclBvc2l0
aW9ucygpOwogCi0gICAgdm9pZCBmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGlj
c0NvbnRleHQqKTsKLSAgICB2b2lkIHN0cm9rZVNoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiwgR3Jh
cGhpY3NDb250ZXh0Kik7Ci0gICAgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQqKTsK
KyAgICB2b2lkIGZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCYp
OworICAgIHZvaWQgc3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRl
eHQmKTsKKyAgICB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIHZvaWQg
ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJik7CiAgICAgdm9pZCBkcmF3TWFya2VycyhQYWlu
dEluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4
dC5jcHAKaW5kZXggNGUwOGYzZjlhYTI0ZmQxOGJkMjJjOGM1OThiYjlhZDllZWZkNDk2OS4uOTJi
NzFlOWM2NDg1MTA4Y2UyYzdiZjM0NzU0MGM4N2E2MmQ2NWYwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00ODAsNyArNDgwLDcgQEAg
dm9pZCBSZW5kZXJTVkdUZXh0OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCogd2FzRml4ZWQpIGNvbnMKIAogdm9pZCBSZW5kZXJTVkdUZXh0OjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludElu
Zm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4
dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZApAQCAtNDg4LDcgKzQ4OCw3IEBAIHZv
aWQgUmVuZGVyU1ZHVGV4dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JikKICAgICAgICAgIHJldHVybjsKIAogICAgIFBhaW50SW5mbyBibG9ja0luZm8ocGFp
bnRJbmZvKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmJsb2Nr
SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
YmxvY2tJbmZvLmNvbnRleHQoKSk7CiAgICAgYmxvY2tJbmZvLmFwcGx5VHJhbnNmb3JtKGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKSk7CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50KGJsb2NrSW5mbywg
TGF5b3V0UG9pbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKaW5kZXggMDI3MDNkM2RmOTYw
NmM4Y2JiYWZiOWE1ZWQ1MDA1ODZjMjJmZDhkNS4uNzgzN2ViNTI0ZWUyNWMyNGJhOGZhZjAzZGIw
ZGY3ZWNjZmFiNWE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
dm9pZCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6ZGV0ZXJtaW5lSWZMYXlvdXRTaXplQ2hh
bmdlZCgpCiB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBseVZpZXdwb3J0Q2xp
cChQYWludEluZm8mIHBhaW50SW5mbykKIHsKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNP
dmVyZmxvd0hpZGRlbigqdGhpcykpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKG1f
dmlld3BvcnQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAobV92aWV3cG9ydCk7
CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OmNhbGNWaWV3cG9ydCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94LmNwcApp
bmRleCBkMWY0YzVjM2VhZjlmM2I5MTI4ZjNjM2I5OTczMjM3MjBmM2U2ZmIzLi5kODliY2ZlNmUz
ZjZjMDVkM2IwZGM5ZjRmZGI0NzJmYjhlNDE1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogdm9pZCBTVkdJbmxpbmVGbG93Qm94OjpwYWludFNlbGVjdGlvbkJh
Y2tncm91bmQoUGFpbnRJbmZvJiBwYWludEluZm8pCiB7CiAgICAgQVNTRVJUKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZVNlbGVjdGlvbik7Ci0gICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKTsKKyAgICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNh
YmxlZCgpKTsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwogICAg
IGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRPbkxpbmUoKSkgewpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIFNWR0lubGluZUZsb3dC
b3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8mIHBhaW50SW5mbykKIHZvaWQg
U1ZHSW5saW5lRmxvd0JveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkKIHsKICAgICBBU1NF
UlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5jb250
ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQo
KS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJp
bmdDb250ZXh0KHJlbmRlcmVyKCksIHBhaW50SW5mbywgU1ZHUmVuZGVyaW5nQ29udGV4dDo6U2F2
ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgaWYgKHJlbmRlcmluZ0NvbnRleHQuaXNSZW5kZXJpbmdQ
cmVwYXJlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcAppbmRleCA4M2IxNzVkZmM1NDg0ZWE1ZWIxNWRjMjk2MWI4MmMwNmNhY2M0
ZWM4Li5lZjhmMThlZWNlY2FiYTkxNjI1NGJiNzNmMjE2NDAzNzMyZmE1ZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTIy
MCwxMyArMjIwLDEzIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb25CYWNr
Z3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogICAgICAgICBpZiAoIW1hcFN0YXJ0RW5kUG9z
aXRpb25zSW50b0ZyYWdtZW50Q29vcmRpbmF0ZXMoZnJhZ21lbnQsIGZyYWdtZW50U3RhcnRQb3Np
dGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250
ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50
SW5mby5jb250ZXh0KCkpOwogICAgICAgICBmcmFnbWVudC5idWlsZEZyYWdtZW50VHJhbnNmb3Jt
KGZyYWdtZW50VHJhbnNmb3JtKTsKICAgICAgICAgaWYgKCFmcmFnbWVudFRyYW5zZm9ybS5pc0lk
ZW50aXR5KCkpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKGZyYWdt
ZW50VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RN
KGZyYWdtZW50VHJhbnNmb3JtKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Rmls
bENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNlbGVjdGlvblJlY3RGb3JUZXh0RnJhZ21lbnQoZnJh
Z21lbnQsIGZyYWdtZW50U3RhcnRQb3NpdGlvbiwgZnJhZ21lbnRFbmRQb3NpdGlvbiwgJnN0eWxl
KSwgYmFja2dyb3VuZENvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc2VsZWN0aW9uUmVj
dEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVu
dEVuZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmNvbG9yU3BhY2Uo
KSk7CiAKICAgICAgICAgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9EZWZhdWx0TW9k
ZTsKICAgICB9CkBAIC0yODgsMTcgKzI4OCwxNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQog
ICAgICAgICBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50ID0gbV90ZXh0RnJhZ21lbnRzLmF0KGkp
OwogICAgICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4
dCgpKTsKICAgICAgICAgZnJhZ21lbnQuYnVpbGRGcmFnbWVudFRyYW5zZm9ybShmcmFnbWVudFRy
YW5zZm9ybSk7CiAgICAgICAgIGlmICghZnJhZ21lbnRUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQot
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShmcmFnbWVudFRyYW5zZm9y
bSk7CisgICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNvbmNhdENUTShmcmFnbWVudFRy
YW5zZm9ybSk7CiAKICAgICAgICAgLy8gU3BlYzogQWxsIHRleHQgZGVjb3JhdGlvbnMgZXhjZXB0
IGxpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYmVmb3JlIHRoZSB0ZXh0IGlzIGZpbGxlZCBh
bmQgc3Ryb2tlZDsgdGh1cywgdGhlIHRleHQgaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZXNlIGRl
Y29yYXRpb25zLgogICAgICAgICBpbnQgZGVjb3JhdGlvbnMgPSBzdHlsZS50ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCgpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvblVu
ZGVybGluZSkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCwg
VGV4dERlY29yYXRpb25VbmRlcmxpbmUsIGZyYWdtZW50KTsKKyAgICAgICAgICAgIHBhaW50RGVj
b3JhdGlvbihwYWludEluZm8uY29udGV4dCgpLCBUZXh0RGVjb3JhdGlvblVuZGVybGluZSwgZnJh
Z21lbnQpOwogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbk92ZXJsaW5l
KQotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVj
b3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24o
cGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25PdmVybGluZSwgZnJhZ21lbnQpOwog
CiAgICAgICAgIGF1dG8gcGFpbnRPcmRlciA9IHN0eWxlLnN2Z1N0eWxlKCkucGFpbnRUeXBlc0Zv
clBhaW50T3JkZXIoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaW50T3Jk
ZXIuc2l6ZSgpOyArK2kpIHsKQEAgLTMwNywxMyArMzA3LDEzIEBAIHZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNlCiAgICAgICAgICAgICAgICAgaWYgKCFoYXNGaWxsKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBw
bHlUb0ZpbGxNb2RlIHwgQXBwbHlUb1RleHRNb2RlOwotICAgICAgICAgICAgICAgIHBhaW50VGV4
dChwYWludEluZm8uY29udGV4dCwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhh
c1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAgICAgICAgICAgICAgICBwYWlu
dFRleHQocGFpbnRJbmZvLmNvbnRleHQoKSwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21l
bnQsIGhhc1NlbGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlU3Ryb2tlOgogICAgICAgICAgICAg
ICAgIGlmICghaGFzVmlzaWJsZVN0cm9rZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgbV9wYWludGluZ1Jlc291cmNlTW9kZSA9IEFwcGx5VG9TdHJva2VN
b2RlIHwgQXBwbHlUb1RleHRNb2RlOwotICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludElu
Zm8uY29udGV4dCwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1NlbGVjdGlv
biwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKKyAgICAgICAgICAgICAgICBwYWludFRleHQocGFp
bnRJbmZvLmNvbnRleHQoKSwgJnN0eWxlLCBzZWxlY3Rpb25TdHlsZSwgZnJhZ21lbnQsIGhhc1Nl
bGVjdGlvbiwgcGFpbnRTZWxlY3RlZFRleHRPbmx5KTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgUGFpbnRUeXBlTWFya2VyczoKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZQogCiAgICAg
ICAgIC8vIFNwZWM6IExpbmUtdGhyb3VnaCBzaG91bGQgYmUgZHJhd24gYWZ0ZXIgdGhlIHRleHQg
aXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0aGUgbGluZS10aHJvdWdoIGlzIHJlbmRlcmVk
IG9uIHRvcCBvZiB0aGUgdGV4dC4KICAgICAgICAgaWYgKGRlY29yYXRpb25zICYgVGV4dERlY29y
YXRpb25MaW5lVGhyb3VnaCkKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8u
Y29udGV4dCwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQpOworICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0KCksIFRleHREZWNvcmF0aW9uTGlu
ZVRocm91Z2gsIGZyYWdtZW50KTsKIAogICAgICAgICBtX3BhaW50aW5nUmVzb3VyY2VNb2RlID0g
QXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTM3OSwxNCArMzc5LDEyIEBAIHZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cmVsZWFzZVBhaW50aW5nUmVzb3VyY2UoR3JhcGhpY3NDb250ZXh0KiYg
Y29udGV4dCwgY29uc3QKIAogYm9vbCBTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3ND
b250ZXh0Rm9yVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGZsb2F0IHNj
YWxpbmdGYWN0b3IsIFRleHRSdW4mIHRleHRSdW4sIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAg
ICBib29sIGFjcXVpcmVkUmVzb3VyY2UgPSBhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0
LCBzY2FsaW5nRmFjdG9yLCBwYXJlbnQoKS0+cmVuZGVyZXIoKSwgc3R5bGUpOwotICAgIGlmICgh
YWNxdWlyZWRSZXNvdXJjZSkKKyAgICBpZiAoIWFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRl
eHQsIHNjYWxpbmdGYWN0b3IsIHBhcmVudCgpLT5yZW5kZXJlcigpLCBzdHlsZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShTVkdfRk9OVFMpCiAgICAgLy8gU1ZHIEZvbnRz
IG5lZWQgYWNjZXNzIHRvIHRoZSBwYWludGluZyByZXNvdXJjZSB1c2VkIHRvIGRyYXcgdGhlIGN1
cnJlbnQgdGV4dCBjaHVuay4KLSAgICBUZXh0UnVuOjpSZW5kZXJpbmdDb250ZXh0KiByZW5kZXJp
bmdDb250ZXh0ID0gdGV4dFJ1bi5yZW5kZXJpbmdDb250ZXh0KCk7Ci0gICAgaWYgKHJlbmRlcmlu
Z0NvbnRleHQpCisgICAgaWYgKGF1dG8qIHJlbmRlcmluZ0NvbnRleHQgPSB0ZXh0UnVuLnJlbmRl
cmluZ0NvbnRleHQoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQqPihyZW5kZXJpbmdDb250ZXh0KS0+c2V0QWN0aXZlUGFpbnRpbmdSZXNvdXJjZShtX3Bh
aW50aW5nUmVzb3VyY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGV4dFJ1bik7CkBAIC00
OTksNyArNDk3LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZmluZFJl
bmRlcmVyRGVmaW5pbmluZ1RleHREZWNvcmF0aW9uKElubGluZUYKICAgICByZXR1cm4gKnJlbmRl
cmVyOwogfQogCi12b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24sIGNvbnN0IFNWR1Rl
eHRGcmFnbWVudCYgZnJhZ21lbnQpCit2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3Jh
dGlvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24s
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCku
c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpID09IFRleHREZWNvcmF0aW9uTm9uZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTI3LDcgKzUyNSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRp
b24KICAgICB9CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2l0
aFN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlv
biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgUmVuZGVyQm94TW9kZWxPYmplY3Qm
IGRlY29yYXRpb25SZW5kZXJlcikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0
aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVj
b3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgUmVuZGVyQm94TW9kZWxP
YmplY3QmIGRlY29yYXRpb25SZW5kZXJlcikKIHsKICAgICBBU1NFUlQoIW1fcGFpbnRpbmdSZXNv
dXJjZSk7CiAgICAgQVNTRVJUKG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgIT0gQXBwbHlUb0RlZmF1
bHRNb2RlKTsKQEAgLTU0OSwxMSArNTQ3LDExIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFp
bnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlCiAg
ICAgZmxvYXQgd2lkdGggPSBmcmFnbWVudC53aWR0aDsKICAgICBjb25zdCBGb250TWV0cmljcyYg
c2NhbGVkRm9udE1ldHJpY3MgPSBzY2FsZWRGb250LmZvbnRNZXRyaWNzKCk7CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBpZiAoc2NhbGluZ0Zh
Y3RvciAhPSAxKSB7CiAgICAgICAgIHdpZHRoICo9IHNjYWxpbmdGYWN0b3I7CiAgICAgICAgIGRl
Y29yYXRpb25PcmlnaW4uc2NhbGUoc2NhbGluZ0ZhY3Rvciwgc2NhbGluZ0ZhY3Rvcik7Ci0gICAg
ICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGluZ0ZhY3RvciwgMSAvIHNjYWxp
bmdGYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdG
YWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAgICAgfQogCiAgICAgZGVjb3JhdGlvbk9yaWdp
bi5tb3ZlKDAsIC1zY2FsZWRGb250TWV0cmljcy5mbG9hdEFzY2VudCgpICsgcG9zaXRpb25PZmZz
ZXRGb3JEZWNvcmF0aW9uKGRlY29yYXRpb24sIHNjYWxlZEZvbnRNZXRyaWNzLCB0aGlja25lc3Mp
KTsKQEAgLTU2MSwxMSArNTU5LDEyIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNv
cmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgVGV4dERlCiAgICAgUGF0
aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3QoZGVjb3JhdGlvbk9yaWdpbiwgRmxv
YXRTaXplKHdpZHRoLCB0aGlja25lc3MpKSk7CiAKLSAgICBpZiAoYWNxdWlyZVBhaW50aW5nUmVz
b3VyY2UoY29udGV4dCwgc2NhbGluZ0ZhY3RvciwgZGVjb3JhdGlvblJlbmRlcmVyLCAmZGVjb3Jh
dGlvblN0eWxlKSkKLSAgICAgICAgcmVsZWFzZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgJnBh
dGgpOworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9ICZjb250ZXh0OworICAgIGlm
IChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0UHRyLCBzY2FsaW5nRmFjdG9yLCBkZWNv
cmF0aW9uUmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5bGUpKQorICAgICAgICByZWxlYXNlUGFpbnRp
bmdSZXNvdXJjZShjb250ZXh0UHRyLCAmcGF0aCk7CiB9CiAKLXZvaWQgU1ZHSW5saW5lVGV4dEJv
eDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJT
dHlsZSogc3R5bGUsIFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJh
Z21lbnQsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pCit2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmIGZyYWdtZW50LCBpbnQgc3RhcnRQb3NpdGlvbiwgaW50IGVuZFBvc2l0aW9uKQogewogICAg
IGZsb2F0IHNjYWxpbmdGYWN0b3IgPSByZW5kZXJlcigpLnNjYWxpbmdGYWN0b3IoKTsKICAgICBB
U1NFUlQoc2NhbGluZ0ZhY3Rvcik7CkBAIC01ODMsMjQgKzU4MiwyNSBAQCB2b2lkIFNWR0lubGlu
ZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bAogCiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QoRmxvYXRQb2ludCh0ZXh0T3Jp
Z2luLngoKSwgdGV4dE9yaWdpbi55KCkgLSBzY2FsZWRGb250LmZvbnRNZXRyaWNzKCkuZmxvYXRB
c2NlbnQoKSksIHRleHRTaXplKTsKIAorICAgIEdyYXBoaWNzQ29udGV4dCogdXNlZENvbnRleHQg
PSAmY29udGV4dDsKICAgICBkbyB7Ci0gICAgICAgIGlmICghcHJlcGFyZUdyYXBoaWNzQ29udGV4
dEZvclRleHRQYWludGluZyhjb250ZXh0LCBzY2FsaW5nRmFjdG9yLCB0ZXh0UnVuLCBzdHlsZSkp
CisgICAgICAgIGlmICghcHJlcGFyZUdyYXBoaWNzQ29udGV4dEZvclRleHRQYWludGluZyh1c2Vk
Q29udGV4dCwgc2NhbGluZ0ZhY3RvciwgdGV4dFJ1biwgc3R5bGUpKQogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgewotICAgICAgICAgICAgU2hhZG93QXBwbGllciBzaGFkb3dBcHBsaWVy
KCpjb250ZXh0LCBzaGFkb3csIHNoYWRvd1JlY3QpOworICAgICAgICAgICAgU2hhZG93QXBwbGll
ciBzaGFkb3dBcHBsaWVyKCp1c2VkQ29udGV4dCwgc2hhZG93LCBzaGFkb3dSZWN0KTsKIAogICAg
ICAgICAgICAgaWYgKCFzaGFkb3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0KCkpCi0gICAgICAgICAg
ICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOworICAgICAgICAgICAg
ICAgIHVzZWRDb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOwogCi0gICAg
ICAgICAgICBzY2FsZWRGb250LmRyYXdUZXh0KGNvbnRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4g
KyBzaGFkb3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIHNjYWxlZEZvbnQuZHJhd1RleHQoKnVzZWRDb250ZXh0LCB0ZXh0UnVu
LCB0ZXh0T3JpZ2luICsgc2hhZG93QXBwbGllci5leHRyYU9mZnNldCgpLCBzdGFydFBvc2l0aW9u
LCBlbmRQb3NpdGlvbik7CiAKICAgICAgICAgICAgIGlmICghc2hhZG93QXBwbGllci5kaWRTYXZl
Q29udGV4dCgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAg
ICAgICAgICB1c2VkQ29udGV4dC0+cmVzdG9yZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgcmVz
dG9yZUdyYXBoaWNzQ29udGV4dEFmdGVyVGV4dFBhaW50aW5nKGNvbnRleHQsIHRleHRSdW4pOwor
ICAgICAgICByZXN0b3JlR3JhcGhpY3NDb250ZXh0QWZ0ZXJUZXh0UGFpbnRpbmcodXNlZENvbnRl
eHQsIHRleHRSdW4pOwogCiAgICAgICAgIGlmICghc2hhZG93KQogICAgICAgICAgICAgYnJlYWs7
CkBAIC02MDksNyArNjA5LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRo
U2hhZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWwKICAgICB9IHdoaWxl
IChzaGFkb3cpOwogfQogCi12b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHNlbGVj
dGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBib29sIGhhc1NlbGVj
dGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpCit2b2lkIFNWR0lubGluZVRleHRCb3g6
OnBhaW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwg
UmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmIGZyYWdt
ZW50LCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpCiB7CiAg
ICAgQVNTRVJUKHN0eWxlKTsKICAgICBBU1NFUlQoc2VsZWN0aW9uU3R5bGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAppbmRleCAyM2MwNzY5
ZmU5ZmE3NzYyOGJlZDAxZWEzY2IwYzc5ZTVhYWNmYjY4Li4xN2VjZWYzYWNhOTQ1ZjcxYjJlNWZj
ODQ2YTkzMTVkMmZmY2ExMTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR0lubGluZVRleHRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guaApAQCAtNzcsMTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCom
LCBmbG9hdCBzY2FsaW5nRmFjdG9yLCBUZXh0UnVuJiwgUmVuZGVyU3R5bGUqKTsKICAgICB2b2lk
IHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyhHcmFwaGljc0NvbnRleHQq
JiwgVGV4dFJ1biYpOwogCi0gICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0
KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYpOwotICAgIHZvaWQgcGFp
bnREZWNvcmF0aW9uV2l0aFN0eWxlKEdyYXBoaWNzQ29udGV4dCosIFRleHREZWNvcmF0aW9uLCBj
b25zdCBTVkdUZXh0RnJhZ21lbnQmLCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJl
bmRlcmVyKTsKLSAgICB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCos
IFJlbmRlclN0eWxlKiwgVGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGludCBzdGFy
dFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pOwotICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNz
Q29udGV4dCosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25z
dCBTVkdUZXh0RnJhZ21lbnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVk
VGV4dE9ubHkpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIFRl
eHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmKTsKKyAgICB2b2lkIHBhaW50RGVj
b3JhdGlvbldpdGhTdHlsZShHcmFwaGljc0NvbnRleHQmLCBUZXh0RGVjb3JhdGlvbiwgY29uc3Qg
U1ZHVGV4dEZyYWdtZW50JiwgUmVuZGVyQm94TW9kZWxPYmplY3QmIGRlY29yYXRpb25SZW5kZXJl
cik7CisgICAgdm9pZCBwYWludFRleHRXaXRoU2hhZG93cyhHcmFwaGljc0NvbnRleHQmLCBSZW5k
ZXJTdHlsZSosIFRleHRSdW4mLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQgc3RhcnRQb3Np
dGlvbiwgaW50IGVuZFBvc2l0aW9uKTsKKyAgICB2b2lkIHBhaW50VGV4dChHcmFwaGljc0NvbnRl
eHQmLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBzZWxlY3Rpb25TdHlsZSwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JiwgYm9vbCBoYXNTZWxlY3Rpb24sIGJvb2wgcGFpbnRTZWxlY3RlZFRleHRP
bmx5KTsKIAogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBs
aW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcAppbmRleCAyMTJhMTY2ZWMwY2YyMDc2ZmJjNzNiMTEzNGFlOGJiYmQ2NjM3M2YwLi5m
YjlhMDNjNTk1ZTYzNjA2OTZhZTFiM2ZkNWZiMjE0Y2YzNjRmMDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU2
LDE5ICs1NiwyMCBAQCBTVkdSZW5kZXJpbmdDb250ZXh0Ojp+U1ZHUmVuZGVyaW5nQ29udGV4dCgp
CiAKICAgICBpZiAobV9yZW5kZXJpbmdGbGFncyAmIEVuZEZpbHRlckxheWVyKSB7CiAgICAgICAg
IEFTU0VSVChtX2ZpbHRlcik7Ci0gICAgICAgIG1fZmlsdGVyLT5wb3N0QXBwbHlSZXNvdXJjZSgq
bV9yZW5kZXJlciwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9EZWZhdWx0TW9kZSwgMCwg
MCk7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0ID0gbV9zYXZlZENvbnRleHQ7CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dFB0ciA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgp
OworICAgICAgICBtX2ZpbHRlci0+cG9zdEFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIGNvbnRl
eHRQdHIsIEFwcGx5VG9EZWZhdWx0TW9kZSwgMCwgMCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5z
ZXRDb250ZXh0KCptX3NhdmVkQ29udGV4dCk7CiAgICAgICAgIG1fcGFpbnRJbmZvLT5yZWN0ID0g
bV9zYXZlZFBhaW50UmVjdDsKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJpbmdGbGFncyAmIEVu
ZE9wYWNpdHlMYXllcikKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kU2hhZG93TGF5ZXIp
Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAK
ICAgICBpZiAobV9yZW5kZXJpbmdGbGFncyAmIFJlc3RvcmVHcmFwaGljc0NvbnRleHQpCi0gICAg
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkucmVzdG9yZSgpOwogfQogCiB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnBy
ZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaW50SW5m
byYgcGFpbnRJbmZvLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgbmVlZHNHcmFwaGljc0NvbnRl
eHRTYXZlKQpAQCAtODUsNyArODYsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBh
cmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogCiAgICAg
Ly8gV2UgbmVlZCB0byBzYXZlIC8gcmVzdG9yZSB0aGUgY29udGV4dCBldmVuIGlmIHRoZSBpbml0
aWFsaXphdGlvbiBmYWlsZWQuCiAgICAgaWYgKG5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9PSBT
YXZlR3JhcGhpY3NDb250ZXh0KSB7Ci0gICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zYXZl
KCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBtX3Jl
bmRlcmluZ0ZsYWdzIHw9IFJlc3RvcmVHcmFwaGljc0NvbnRleHQ7CiAgICAgfQogCkBAIC0xMTEs
MjQgKzExMiwyNCBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNW
R0NvbnRlbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFBhaQogCiAgICAgaWYgKG9wYWNpdHkg
PCAxIHx8IHNoYWRvdyB8fCBoYXNCbGVuZE1vZGUgfHwgaXNvbGF0ZU1hc2tGb3JCbGVuZGluZyB8
fCBoYXNJc29sYXRpb24pIHsKICAgICAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gbV9yZW5k
ZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKLSAgICAgICAgbV9wYWludElu
Zm8tPmNvbnRleHQtPmNsaXAocmVwYWludFJlY3QpOworICAgICAgICBtX3BhaW50SW5mby0+Y29u
dGV4dCgpLmNsaXAocmVwYWludFJlY3QpOwogCiAgICAgICAgIGlmIChvcGFjaXR5IDwgMSB8fCBo
YXNCbGVuZE1vZGUgfHwgaXNvbGF0ZU1hc2tGb3JCbGVuZGluZyB8fCBoYXNJc29sYXRpb24pIHsK
IAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBtX3BhaW50
SW5mby0+Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0
LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgc3R5bGUuYmxlbmRNb2RlKCkpOworICAgICAgICAgICAg
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJ
bmZvLT5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCksIHN0eWxlLmJsZW5kTW9kZSgpKTsK
IAotICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIob3BhY2l0eSk7CisgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAKICAgICAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUp
Ci0gICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJh
dGlvbihtX3BhaW50SW5mby0+Y29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9k
ZU5vcm1hbCk7CisgICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5zZXRDb21w
b3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24o
KSwgQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBF
bmRPcGFjaXR5TGF5ZXI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2hhZG93KSB7Ci0gICAg
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+c2V0U2hhZG93KEludFNpemUocm91bmRUb0lu
dChzaGFkb3ctPngoKSksIHJvdW5kVG9JbnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMo
KSwgc2hhZG93LT5jb2xvcigpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICAgICAgbV9w
YWludEluZm8tPmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgICAg
ICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldFNoYWRvdyhJbnRTaXplKHJvdW5kVG9JbnQoc2hh
ZG93LT54KCkpLCByb3VuZFRvSW50KHNoYWRvdy0+eSgpKSksIHNoYWRvdy0+cmFkaXVzKCksIHNo
YWRvdy0+Y29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIG1fcGFpbnRJ
bmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKICAgICAgICAgICAgIG1f
cmVuZGVyaW5nRmxhZ3MgfD0gRW5kU2hhZG93TGF5ZXI7CiAgICAgICAgIH0KICAgICB9CkBAIC0x
NDcsNyArMTQ4LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkKICAgICAgICAgICAgIHJlZmVy
ZW5jZUJveC5zZXRIZWlnaHQodmlld3BvcnRTaXplLmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICByZWZlcmVuY2VCb3ggPSByZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgp
OwotICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcFBhdGgoY2xpcFBhdGgucGF0aEZv
clJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94KSwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CisgICAg
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcFBhdGgoY2xpcFBhdGgucGF0aEZvclJlZmVy
ZW5jZVJlY3QocmVmZXJlbmNlQm94KSwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CiAgICAgfQogCiAg
ICAgYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0Zv
clJlbmRlcmVyKCptX3JlbmRlcmVyKTsKQEAgLTE2MSwyNiArMTYyLDM1IEBAIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgUGFpCiAKICAgICBpZiAoIWlzUmVuZGVyaW5nTWFzaykgewogICAgICAgICBpZiAo
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IHJlc291cmNlcy0+bWFza2VyKCkpIHsK
LSAgICAgICAgICAgIGlmICghbWFza2VyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHls
ZSwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9EZWZhdWx0TW9kZSkpCisgICAgICAgICAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWludEluZm8tPmNvbnRleHQoKTsK
KyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbWFza2VyLT5hcHBseVJlc291cmNlKCptX3JlbmRl
cmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICAgICAgICAg
IG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCpjb250ZXh0UHRyKTsKKyAgICAgICAgICAgIGlmICgh
cmVzdWx0KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAogICAg
IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigp
OwogICAgIGlmICghY2xpcFBhdGhPcGVyYXRpb24gJiYgY2xpcHBlcikgewotICAgICAgICBpZiAo
IWNsaXBwZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBtX3BhaW50SW5mby0+
Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlKSkKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgIGJvb2wgcmVzdWx0
ID0gY2xpcHBlci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIGNvbnRleHRQdHIs
IEFwcGx5VG9EZWZhdWx0TW9kZSk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5zZXRDb250ZXh0KCpj
b250ZXh0UHRyKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKCFpc1JlbmRlcmluZ01hc2spIHsKICAgICAgICAgbV9maWx0ZXIgPSBy
ZXNvdXJjZXMtPmZpbHRlcigpOwogICAgICAgICBpZiAobV9maWx0ZXIpIHsKLSAgICAgICAgICAg
IG1fc2F2ZWRDb250ZXh0ID0gbV9wYWludEluZm8tPmNvbnRleHQ7CisgICAgICAgICAgICBtX3Nh
dmVkQ29udGV4dCA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOwogICAgICAgICAgICAgbV9zYXZl
ZFBhaW50UmVjdCA9IG1fcGFpbnRJbmZvLT5yZWN0OwogICAgICAgICAgICAgLy8gUmV0dXJuIHdp
dGggZmFsc2UgaGVyZSBtYXkgbWVhbiB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZHJhdyB0aGUgY29u
dGVudAogICAgICAgICAgICAgLy8gKGJlY2F1c2UgaXQgd2FzIGVpdGhlciBkcmF3biBiZWZvcmUg
b3IgZW1wdHkpIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIGFwcGx5IHRoZSBmaWx0ZXIuCiAgICAgICAg
ICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZEZpbHRlckxheWVyOwotICAgICAgICAgICAgaWYg
KCFtX2ZpbHRlci0+YXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIG1fcGFpbnRJbmZv
LT5jb250ZXh0LCBBcHBseVRvRGVmYXVsdE1vZGUpKQorICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgICAgICBi
b29sIHJlc3VsdCA9IG1fZmlsdGVyLT5hcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwg
Y29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2RlKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZv
LT5zZXRDb250ZXh0KCpjb250ZXh0UHRyKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgLy8gU2luY2Ugd2UncmUgY2FjaGlu
ZyB0aGUgcmVzdWx0aW5nIGJpdG1hcCBhbmQgZG8gbm90IGludmFsaWRhdGUgaXQgb24gcmVwYWlu
dCByZWN0CkBAIC0yNTQsOSArMjY0LDggQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKICAgICBB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSkudHJh
bnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSkubXVsdGlwbHkoYWJzb2x1dGVUcmFuc2Zvcm0p
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpOwotICAgIEFTU0VSVChpbWFnZUNvbnRleHQpOwotICAgIGltYWdlQ29udGV4dC0+Y29u
Y2F0Q1RNKHRyYW5zZm9ybSk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGltYWdlQ29udGV4dC5jb25jYXRDVE0odHJhbnNm
b3JtKTsKIAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KQEAgLTI3NCwxMSArMjgzLDEwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGltYWdlQ29udGV4dCA9IGlt
YWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKGltYWdlQ29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogCiAg
ICAgLy8gQ29tcGVuc2F0ZSByb3VuZGluZyBlZmZlY3RzLCBhcyB0aGUgYWJzb2x1dGUgdGFyZ2V0
IHJlY3QgaXMgdXNpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbmQgdGhlIGltYWdlIGJ1ZmZl
ciBzaXplIGlzIGludGVnZXIuCi0gICAgaW1hZ2VDb250ZXh0LT5zY2FsZShGbG9hdFNpemUodW5j
bGFtcGVkU2l6ZS53aWR0aCgpIC8gdGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNsYW1wZWRTaXplLmhl
aWdodCgpIC8gdGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworICAgIGltYWdlQ29udGV4dC5zY2FsZShG
bG9hdFNpemUodW5jbGFtcGVkU2l6ZS53aWR0aCgpIC8gdGFyZ2V0UmVjdC53aWR0aCgpLCB1bmNs
YW1wZWRTaXplLmhlaWdodCgpIC8gdGFyZ2V0UmVjdC5oZWlnaHQoKSkpOwogCiAgICAgcmV0dXJu
IGltYWdlQnVmZmVyOwogfQpAQCAtMjg2LDcgKzI5NCw2IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSCiB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyKiBpbWFnZSwgUmVuZGVyRWxlbWVudCYgaXRlbSwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBzdWJ0cmVlQ29udGVudFRyYW5zZm9ybWF0aW9uKQogewogICAgIEFTU0VSVChpbWFn
ZSk7Ci0gICAgQVNTRVJUKGltYWdlLT5jb250ZXh0KCkpOwogCiAgICAgUGFpbnRJbmZvIGluZm8o
aW1hZ2UtPmNvbnRleHQoKSwgTGF5b3V0UmVjdDo6aW5maW5pdGVSZWN0KCksIFBhaW50UGhhc2VG
b3JlZ3JvdW5kLCBQYWludEJlaGF2aW9yTm9ybWFsKTsKIApAQCAtMzAwLDE4ICszMDcsMTcgQEAg
dm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciogaW1hZ2UsIFJlbmRlckUKICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBzYXZl
ZENvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKIH0KIAotdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xl
YXIpCit2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9y
bSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKIHsKLSAgICBBU1NFUlQoY29udGV4
dCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKIAogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRh
cmdldFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVU
cmFuc2Zvcm0pOwogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0
aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUg
c2NhbGVkLgogICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBk
b25lIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4
dC0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSk7Ci0gICAgY29udGV4dC0+
Y2xpcFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7
Ci0gICAgY29udGV4dC0+Y29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKKyAgICBjb250ZXh0
LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOworICAgIGNvbnRleHQuY2xp
cFRvSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIGFic29sdXRlVGFyZ2V0UmVjdCk7Cisg
ICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgLy8gV2hlbiBu
ZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQg
dHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCiAgICAgLy8gcmVzdWx0aW5nIGlt
YWdlIGJ1ZmZlciBhcyB0aGUgcGFyZW50IHJlc291cmNlIGFscmVhZHkgY2FjaGVzIHRoZSByZXN1
bHQuCkBAIC0zMzUsNyArMzQxLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKIAogICAgIC8v
IEludmFsaWRhdGUgYW4gZXhpc3RpbmcgYnVmZmVyIGlmIHRoZSBzY2FsZSBpcyBub3QgY29ycmVj
dC4KICAgICBpZiAoaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybSA9IG1fcGFpbnRJbmZvLT5jb250ZXh0LT5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZp
bml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybSA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgICAgIEludFNpemUgZXhwYW5kZWRCb3Vu
ZGluZ0JveCA9IGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpOwogICAgICAgICBJ
bnRTaXplIGJ1ZmZlclNpemUoc3RhdGljX2Nhc3Q8aW50PihjZWlsKGV4cGFuZGVkQm91bmRpbmdC
b3gud2lkdGgoKSAqIHRyYW5zZm9ybS54U2NhbGUoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwo
ZXhwYW5kZWRCb3VuZGluZ0JveC5oZWlnaHQoKSAqIHRyYW5zZm9ybS55U2NhbGUoKSkpKTsKICAg
ICAgICAgaWYgKGJ1ZmZlclNpemUgIT0gaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpKQpAQCAt
MzQ0LDE3ICszNTAsMTcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3Jv
dW5kKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnUKIAogICAgIC8vIENyZWF0
ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpZiAoKGltYWdlQnVmZmVyID0gbV9wYWludEluZm8t
PmNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5n
Qm94LnNpemUoKSksIHRydWUpKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBidWZm
ZXJlZFJlbmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgICAgICAg
ICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LT50cmFuc2xhdGUoLWJvdW5kaW5nQm94LngoKSwg
LWJvdW5kaW5nQm94LnkoKSk7CisgICAgICAgIGlmICgoaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5m
by0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5k
aW5nQm94LnNpemUoKSksIHRydWUpKSkgeworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBi
dWZmZXJlZFJlbmRlcmluZ0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgICAg
ICAgICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gueCgp
LCAtYm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgICAgIFBhaW50SW5mbyBidWZmZXJlZEluZm8o
Km1fcGFpbnRJbmZvKTsKLSAgICAgICAgICAgIGJ1ZmZlcmVkSW5mby5jb250ZXh0ID0gYnVmZmVy
ZWRSZW5kZXJpbmdDb250ZXh0OworICAgICAgICAgICAgYnVmZmVyZWRJbmZvLnNldENvbnRleHQo
YnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0KTsKICAgICAgICAgICAgIGRvd25jYXN0PFJlbmRlclNW
R0ltYWdlPigqbV9yZW5kZXJlcikucGFpbnRGb3JlZ3JvdW5kKGJ1ZmZlcmVkSW5mbyk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG1fcGFp
bnRJbmZvLT5jb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGJvdW5kaW5nQm94KTsKKyAgICBtX3BhaW50SW5mby0+Y29udGV4dCgp
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Ym91bmRpbmdCb3gpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDlhMjNjMjUxMjNi
ODdlYzI5Y2ZkYTBjZWM3ZWMyNDU2NTk4NDNkOGEuLjQ2Mzg0YzQ4ZWEwZjhhZTRhODhiNjVjMTI3
ZTE4ZGNmMWZjM2NmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIENvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBz
YWZlVG9DbGVhcik7CisgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+JiwgYm9v
bCBzYWZlVG9DbGVhcik7CiAKICAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9udFNp
emVTY2FsaW5nRmFjdG9yKGNvbnN0IFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyBBZmZpbmVU
cmFuc2Zvcm0gY2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0
ZW0oY29uc3QgUmVuZGVyT2JqZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRleCBkMWE3ODM4OWExNTY0YzQ0YWUxMjZkNGQx
ZWFhMWUwNjQ5N2VjYmIzLi44YjgwMTRiNjAxM2ZmY2JjMGJkMDA0NjMxYTgzZDUwNmVmMDhjNWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJv
eC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgUmVuZGVyU1ZHVGV4dCYgU1ZHUm9vdElubGluZUJveDo6
cmVuZGVyU1ZHVGV4dCgpCiB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQsIExh
eW91dFVuaXQpCiB7CiAgICAgQVNTRVJUKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9y
ZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbik7Ci0gICAg
QVNTRVJUKCFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKTsKKyAgICBBU1NF
UlQoIXBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKTsKIAogICAgIGJvb2wg
aXNQcmludGluZyA9IHJlbmRlclNWR1RleHQoKS5kb2N1bWVudCgpLnByaW50aW5nKCk7CiAgICAg
Ym9vbCBoYXNTZWxlY3Rpb24gPSAhaXNQcmludGluZyAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IFJl
bmRlck9iamVjdDo6U2VsZWN0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZGQz
ZjI4NTU3ZTA2MjczODZkMDVjYmYzZWMwZjZmOTdmNTU2N2U1YS4uZmQ2OWZhNDg5Mjk1YjAyZGIw
MGNiZjVkYmUzNzAyNWM2MWM4MDRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI2Miwx
MyArMjYyLDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFRvUGF0aFRyYW5zbGF0b3I+IFNWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVHbHlwaFRvCiAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yPih0ZXh0UnVuLCBnbHlwaEJ1ZmZlciwg
cG9pbnQsICpzdmdGb250RGF0YSwgKmZvbnRFbGVtZW50LCBmcm9tLCBudW1HbHlwaHMsIHNjYWxl
LCBpc1ZlcnRpY2FsVGV4dCk7CiB9CiAKLXZvaWQgU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6
OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGb250KiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKK3ZvaWQgU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIGludCBmcm9tLCBpbnQg
bnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBhdXRvIGFj
dGl2ZVBhaW50aW5nUmVzb3VyY2UgPSB0aGlzLT5hY3RpdmVQYWludGluZ1Jlc291cmNlKCk7CiAg
ICAgaWYgKCFhY3RpdmVQYWludGluZ1Jlc291cmNlKSB7CiAgICAgICAgIC8vIFRPRE86IFdlJ3Jl
IG9ubHkgc3VwcG9ydGluZyBzaW1wbGUgZmlsbGVkIEhUTUwgdGV4dCBzbyBmYXIuCiAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvciogc29saWRQYWludGluZ1Jlc291cmNlID0gUmVu
ZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlkUGFpbnRpbmdSZXNvdXJjZSgpOwotICAgICAgICBz
b2xpZFBhaW50aW5nUmVzb3VyY2UtPnNldENvbG9yKGNvbnRleHQtPmZpbGxDb2xvcigpKTsKKyAg
ICAgICAgc29saWRQYWludGluZ1Jlc291cmNlLT5zZXRDb2xvcihjb250ZXh0LmZpbGxDb2xvcigp
KTsKICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IHNvbGlkUGFpbnRpbmdSZXNvdXJj
ZTsKICAgICB9CiAKQEAgLTI3NywxNSArMjc3LDE2IEBAIHZvaWQgU1ZHVGV4dFJ1blJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdTVkdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
CiAKICAgICBBU1NFUlQoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSk7CiAKLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZU1vZGUgcmVzb3VyY2VNb2RlID0gY29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgPT0g
VGV4dE1vZGVTdHJva2UgPyBBcHBseVRvU3Ryb2tlTW9kZSA6IEFwcGx5VG9GaWxsTW9kZTsKLSAg
ICBmb3IgKGF1dG8gdHJhbnNsYXRvciA9IGNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcigqZm9u
dCwgbnVsbHB0ciwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOyB0cmFuc2xh
dG9yLT5jb250YWluc01vcmVQYXRocygpOyB0cmFuc2xhdG9yLT5hZHZhbmNlKCkpIHsKKyAgICBH
cmFwaGljc0NvbnRleHQqIHVzZWRDb250ZXh0ID0gJmNvbnRleHQ7CisgICAgUmVuZGVyU1ZHUmVz
b3VyY2VNb2RlIHJlc291cmNlTW9kZSA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4
dE1vZGVTdHJva2UgPyBBcHBseVRvU3Ryb2tlTW9kZSA6IEFwcGx5VG9GaWxsTW9kZTsKKyAgICBm
b3IgKGF1dG8gdHJhbnNsYXRvciA9IGNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcihmb250LCBu
dWxscHRyLCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7IHRyYW5zbGF0b3It
PmNvbnRhaW5zTW9yZVBhdGhzKCk7IHRyYW5zbGF0b3ItPmFkdmFuY2UoKSkgewogICAgICAgICBQ
YXRoIGdseXBoUGF0aCA9IHRyYW5zbGF0b3ItPnBhdGgoKTsKLSAgICAgICAgaWYgKGFjdGl2ZVBh
aW50aW5nUmVzb3VyY2UtPmFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBzdHlsZSwgY29u
dGV4dCwgcmVzb3VyY2VNb2RlKSkgewotICAgICAgICAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNz
ID0gY29udGV4dC0+c3Ryb2tlVGhpY2tuZXNzKCk7CisgICAgICAgIGlmIChhY3RpdmVQYWludGlu
Z1Jlc291cmNlLT5hcHBseVJlc291cmNlKGVsZW1lbnRSZW5kZXJlciwgc3R5bGUsIHVzZWRDb250
ZXh0LCByZXNvdXJjZU1vZGUpKSB7CisgICAgICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3Mg
PSBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpOwogICAgICAgICAgICAgaWYgKGlzPFJlbmRlclNW
R0lubGluZVRleHQ+KHJlbmRlcmVyKCkpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBkb3duY2FzdDxSZW5kZXJTVkdJbmxpbmVU
ZXh0PihyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOwotICAgICAgICAgICAgYWN0aXZlUGFp
bnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVudFJlbmRlcmVyLCBjb250ZXh0
LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOwotICAgICAgICAgICAgY29udGV4
dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyk7CisgICAgICAgICAgICAgICAg
dXNlZENvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MgKiBkb3duY2Fz
dDxSZW5kZXJTVkdJbmxpbmVUZXh0PihyZW5kZXJlcigpKS5zY2FsaW5nRmFjdG9yKCkpOworICAg
ICAgICAgICAgYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+cG9zdEFwcGx5UmVzb3VyY2UoZWxlbWVu
dFJlbmRlcmVyLCB1c2VkQ29udGV4dCwgcmVzb3VyY2VNb2RlLCAmZ2x5cGhQYXRoLCBudWxscHRy
KTsKKyAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Moc3Ryb2tlVGhp
Y2tuZXNzKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA1MDFi
OWM4ZmYxMDUyNGE0OThhNmZlNzc3Y2I2OTk5Nzc0MWVkYzA0Li45ZDg1ZmJlN2JhYTllZDQ5NzUx
ODI2ODZiZTNiMWU5MTdhMDY0OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00Myw3ICs0Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFjdGl2ZVBhaW50aW5nUmVzb3VyY2UoUmVuZGVyU1ZH
UmVzb3VyY2UqIG9iamVjdCkgeyBtX2FjdGl2ZVBhaW50aW5nUmVzb3VyY2UgPSBvYmplY3Q7IH0K
IAogICAgIHZpcnR1YWwgR2x5cGhEYXRhIGdseXBoRGF0YUZvckNoYXJhY3Rlcihjb25zdCBGb250
Q2FzY2FkZSYsIFdpZHRoSXRlcmF0b3ImLCBVQ2hhcjMyIGNoYXJhY3RlciwgYm9vbCBtaXJyb3Is
IGludCBjdXJyZW50Q2hhcmFjdGVyLCB1bnNpZ25lZCYgYWR2YW5jZUxlbmd0aCwgU3RyaW5nJiBu
b3JtYWxpemVkU3BhY2VzU3RyaW5nQ2FjaGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
cmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1
ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IHRvLCBjb25zdCBGbG9h
dFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBmbG9hdCBmbG9hdFdpZHRoVXNp
bmdTVkdGb250KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGludCYgY2hhcnND
b25zdW1lZCwgU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBhcHBseVNWR0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1
ZmZlciosIGludCBmcm9tKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggOTYxZTE5ODllNTcyYmJiNzJhNmUzZWU5YmFh
MjQwOGExZTY1ODRiOC4uMDgxNTNjMWE5M2ZhMzZmMjVlMzA2OTY5NjE4NzUzMWZiYTBjNTkwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xMzcsNyArMTM3
LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IEludFNpemUoMzAwLCAxNTApOwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUs
IGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKK3ZvaWQgU1ZHSW1hZ2U6OmRy
YXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUg
Y29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAg
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAo
IW1fcGFnZSkKQEAgLTE4NCwxNCArMTg0LDE0IEBAIFBhc3NOYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKQogfQogI2VuZGlmCiAKLXZvaWQgU1ZHSW1h
Z2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpvb20sIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwKK3ZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IHpv
b20sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgRmxvYXRSZWN0IHpvb21lZENv
bnRhaW5lclJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluZXJTaXplKTsKICAg
ICB6b29tZWRDb250YWluZXJSZWN0LnNjYWxlKHpvb20pOwogCiAgICAgLy8gVGhlIEltYWdlQnVm
ZmVyIHNpemUgbmVlZHMgdG8gYmUgc2NhbGVkIHRvIG1hdGNoIHRoZSBmaW5hbCByZXNvbHV0aW9u
LgotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oKTsKICAgICBGbG9h
dFNpemUgaW1hZ2VCdWZmZXJTY2FsZSA9IEZsb2F0U2l6ZSh0cmFuc2Zvcm0ueFNjYWxlKCksIHRy
YW5zZm9ybS55U2NhbGUoKSk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSk7
CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwpAQCAtMjAzLDcgKzIwMyw3
IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0
byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVy
KGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCB6b29tLCBpbWFnZUJ1ZmZlclNpemUs
IHpvb21lZENvbnRhaW5lclJlY3QsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgaWYgKGNvbnRleHQtPmRyYXdMdW1pbmFuY2VN
YXNrKCkpCisgICAgaWYgKGNvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVm
ZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
ID0gYnVmZmVyLT5jb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUsIFVuc2NhbGVkKTsKQEAg
LTIxNywxMSArMjE3LDExIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICB1
bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0uc2NhbGUoMSAvIGltYWdlQnVmZmVyU2NhbGUud2lkdGgo
KSwgMSAvIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgY29udGV4dC0+c2V0RHJh
d0x1bWluYW5jZU1hc2soZmFsc2UpOworICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2so
ZmFsc2UpOwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBzY2FsZWRTcmNSZWN0LCB1
bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb2xvclNwYWNlLCBjb21wb3NpdGVPcCwg
ZHN0UmVjdCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBTVkdJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0yMjks
MTUgKzIyOSwxNSBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbAogICAgIEZyYW1lVmlldyogdmll
dyA9IGZyYW1lVmlldygpOwogICAgIEFTU0VSVCh2aWV3KTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwotICAgIGNvbnRleHQtPmNsaXAo
ZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGRzdFJlY3QpKTsKIAotICAgIGZsb2F0IGFscGhhID0gY29udGV4dC0+YWxwaGEoKTsKKyAg
ICBmbG9hdCBhbHBoYSA9IGNvbnRleHQuYWxwaGEoKTsKICAgICBib29sIGNvbXBvc2l0aW5nUmVx
dWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92
ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCB8fCBhbHBoYSA8IDE7CiAgICAgaWYg
KGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICBjb250ZXh0
LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKLSAgICAgICAgY29udGV4dC0+c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZU5vcm1hbCk7Cisg
ICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihhbHBoYSk7CisgICAgICAgIGNv
bnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZU5vcm1hbCk7CiAgICAgfQogCiAgICAgRmxvYXRTaXplIHNjYWxlKGRzdFJlY3Qud2lkdGgoKSAv
IHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpOwpA
QCAtMjQ3LDggKzI0Nyw4IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgRmxvYXRTaXpl
IHRvcExlZnRPZmZzZXQoc3JjUmVjdC5sb2NhdGlvbigpLngoKSAqIHNjYWxlLndpZHRoKCksIHNy
Y1JlY3QubG9jYXRpb24oKS55KCkgKiBzY2FsZS5oZWlnaHQoKSk7CiAgICAgRmxvYXRQb2ludCBk
ZXN0T2Zmc2V0ID0gZHN0UmVjdC5sb2NhdGlvbigpIC0gdG9wTGVmdE9mZnNldDsKIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShkZXN0T2Zmc2V0LngoKSwgZGVzdE9mZnNldC55KCkpOwotICAgIGNv
bnRleHQtPnNjYWxlKHNjYWxlKTsKKyAgICBjb250ZXh0LnRyYW5zbGF0ZShkZXN0T2Zmc2V0Lngo
KSwgZGVzdE9mZnNldC55KCkpOworICAgIGNvbnRleHQuc2NhbGUoc2NhbGUpOwogCiAgICAgdmll
dy0+cmVzaXplKGNvbnRhaW5lclNpemUoKSk7CiAKQEAgLTI1OCwxMCArMjU4LDEwIEBAIHZvaWQg
U1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgaWYgKHZpZXctPm5lZWRzTGF5b3V0KCkpCiAgICAgICAg
IHZpZXctPmxheW91dCgpOwogCi0gICAgdmlldy0+cGFpbnQoY29udGV4dCwgaW50ZXJzZWN0aW9u
KGNvbnRleHQtPmNsaXBCb3VuZHMoKSwgZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSkpOworICAg
IHZpZXctPnBhaW50KGNvbnRleHQsIGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwg
ZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KSkpOwogCiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWly
ZXNUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAgc3Rh
dGVTYXZlci5yZXN0b3JlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgK
aW5kZXggNmRmNWExYTRlOGUyYjU0NDQyMTViNzc1ZTE0NTAwZjVjYmZhNDcwNC4uZmFlOGQwYzgz
ZTkyNGE2NzRmMDExMjE2YjgyZTVlYjNiZjIwNDE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTkxLDkgKzkxLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KIAogICAgIFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBm
bG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIENvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0Zv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLAogICAg
ICAgICBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKIAog
ICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCAxMDUz
NTQ4MTg3MjlmNzg1ODRmZmEzN2VlYmE1YjEzMDExMGU2NTk4Li4xOWM0NzFiMmM4OTI0MGMzNWRj
ZjZlZDliZjYxNmUzOGY2MTU2N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBGbG9h
dFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBGbG9h
dFNpemUocm91bmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwogfQogCi12b2lkIFNW
R0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LAordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKICAgICBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikKIHsKICAgICBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1f
Y29udGFpbmVyU2l6ZSwgbV96b29tLCBkc3RSZWN0LCBzcmNSZWN0LCBjb2xvclNwYWNlLCBjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKIH0KIAotdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgU1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCiAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBtX2ltYWdlLT5zZXRTcGFjZVNpemUoc3Bh
Y2VTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaAppbmRleCBhNGVlYWE5Zjc2M2I2ZjNlNjBjMGYzYzFhOTcwNjNlM2JhYjAy
YjIwLi45NzY5NWZkYThmNmI5ZWMwZGM3Yjg5OWYyMDk1ZDlmYTAzNTE2MDc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAt
NTYsOSArNTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlv
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFj
ZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRp
dmUuCiAgICAgdmlydHVhbCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDE1Njc0NDMyMmI4NDg4YmYzOGVhNGMzZWRj
ZWIwNjI4YmJlNTM4MDMuLmYwNzI1MThmNDQxNzUxMWM3OTEzOTBlOTk2MjdmNWI1ZDE3ZTQ4YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogCiAgICAgaWYgKHJlbmRlcmVyKSB7CiAgICAgICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0gPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpOwot
ICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zv
cm0pOworICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShhYnNvbHV0ZVRy
YW5zZm9ybSk7CiAKICAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dE5vZGUgPSBkb3duY2FzdDxT
VkdFbGVtZW50PihyZW5kZXJlci0+ZWxlbWVudCgpKTsKICAgICAgICAgaWYgKGNvbnRleHROb2Rl
LT5oYXNSZWxhdGl2ZUxlbmd0aHMoKSkgewpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgRkVJbWFn
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgICAgIC8vIElmIHdlJ3JlIHJlZmVy
ZW5jaW5nIGFuIGVsZW1lbnQgd2l0aCBwZXJjZW50YWdlIHVuaXRzLCBlZy4gPHJlY3Qgd2l0aD0i
MzAlIj4gdGhvc2UgdmFsdWVzIHdlcmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgdmlld3BvcnQuCiAg
ICAgICAgICAgICAvLyBCdWlsZCB1cCBhIHRyYW5zZm9ybWF0aW9uIHRoYXQgbWFwcyBmcm9tIHRo
ZSB2aWV3cG9ydCBzcGFjZSB0byB0aGUgZmlsdGVyIHByaW1pdGl2ZSBzdWJyZWdpb24uCiAgICAg
ICAgICAgICBpZiAobGVuZ3RoQ29udGV4dC5kZXRlcm1pbmVWaWV3cG9ydCh2aWV3cG9ydFNpemUp
KQotICAgICAgICAgICAgICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCktPmNvbmNhdENUTShtYWtl
TWFwQmV0d2VlblJlY3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIGRl
c3RSZWN0KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5jb25jYXRD
VE0obWFrZU1hcEJldHdlZW5SZWN0cyhGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCB2aWV3cG9ydFNp
emUpLCBkZXN0UmVjdCkpOwogICAgICAgICB9CiAKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGNv
bnRlbnRUcmFuc2Zvcm1hdGlvbjsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEZFSW1hZ2U6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXN1
bHRJbWFnZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UobV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCku
ZHJhd0ltYWdlKG1faW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCBz
cmNSZWN0KTsKIH0KIAogdm9pZCBGRUltYWdlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IDUxMmFmNDE5NGNiMjUxMzgxOGQ5
MTEyMzQ5MWY2ZDIwZTQ4YWY4YjQuLjAwMjVhZTI5MzAyMTdhMmFlNjYyZmYwNGQ2YTBiNjRjOWI0
YmRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdF
eHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJh
cy5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIC0gKHZvaWQpX3dlYl9kcmF3QXRQb2ludDooTlNQb2lu
dClwb2ludCBmb250OihOU0ZvbnQgKilmb250IHRleHRDb2xvcjooTlNDb2xvciAqCiAgICAgICAg
IFtbdGV4dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3Bh
Y2VdIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07CiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBn
cmVlbiAqIDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKIAotICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250ZXh0LCBydW4s
IEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkp
KSk7CisgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4dCwgcnVuLCBG
bG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkp
OwogCiAgICAgICAgIGlmICghZmxpcHBlZCkKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RN
KGNnQ29udGV4dCwgMSwgLTEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQppbmRleCAxMjc4MDIwYjg1YzU4YjJl
YjNhODc4YzNiMDNiMzFkM2ZlOWZkM2RhLi5jZmNjZDNjZDY0OTI2NTIxOTc2YzZiZjE4NTZiNmU4
ZmI0NTNkZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQpAQCAtNDgyLDcgKzQ4Miw3IEBAIFJldGFpblB0
cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1Nl
cnZpY2VQaWNrZXJJdGVtCiAgICAgUGFpbnRCZWhhdmlvciBvbGRQYWludEJlaGF2aW9yID0gZnJh
bWVWaWV3LT5wYWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9y
KFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsKIAotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50
cmFuc2xhdGUoLXRvRmxvYXRTaXplKHJlY3QubG9jYXRpb24oKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnRyYW5zbGF0ZSgtdG9GbG9hdFNpemUocmVjdC5sb2NhdGlvbigpKSk7CiAgICAgZnJh
bWVWaWV3LT5wYWludENvbnRlbnRzKGJ1ZmZlci0+Y29udGV4dCgpLCByb3VuZGVkSW50UmVjdChy
ZWN0KSk7CiAKICAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KG9sZFNlbGVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCA0
MWQwMDgxNjMzNzAyNzRkMWY1NWM1OWE2NTcwODZjZjk1NGJmYmM0Li4wYjMyMTIwN2MzMjNlNGRh
MDA5MzBlOWM4MDRlMGQyMzhhOTRjZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KQEAgLTY0NCw5ICs2NDQsOSBAQCAtICh2b2lkKV9kcmF3UmVjdDooTlNSZWN0KXJlY3Qg
Y29udGVudHNPbmx5OihCT09MKWNvbnRlbnRzT25seQogICAgIH0KICAgICAKICAgICBpZiAoY29u
dGVudHNPbmx5KQotICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKCZjb250ZXh0LCBlbmNsb3Np
bmdJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgdmlldy0+cGFpbnRDb250ZW50cyhjb250ZXh0LCBl
bmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKICAgICBlbHNlCi0gICAgICAgIHZpZXctPnBhaW50KCZj
b250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKKyAgICAgICAgdmlldy0+cGFpbnQoY29u
dGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAKICAgICBpZiAoc2hvdWxkRmxhdHRlbikK
ICAgICAgICAgdmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRCZWhhdmlvcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAK
aW5kZXggYzRjMzYxOTllZDllOWZkYzc2NmVmZTA4NDU3Mzc5YzcyODVlYjMyZS4uMTZjM2E0Nzlh
NTIzZTFiYmM0ZmE3NzVlYTkwOWRiMDhkMTBjMmM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTk0LDcg
KzE5NCw3IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwYWludCgpCiAgICAgaWYgKG1f
cGx1Z2luLT5pc1RyYW5zcGFyZW50KCkpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJS
ZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBtX3BsdWdpbi0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCBkaXJ0eVJlY3QpOworICAgIG1fcGx1Z2luLT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBk
aXJ0eVJlY3QpOwogCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpblByb3h5OjpVcGRhdGUoZGlydHlSZWN0KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4
IGY3NDI1NTllM2VkMGI1ZjI2ZmIzMDE5NmEyNTFkZGU1ZWNmMjQ2NzAuLjM5MWVhYzFiNDI3YTBi
NWRjM2Y5NTQ0YzljMDljM2JiZWM4NjJlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkltYWdlPiBpbWFnZUZvclJlY3QoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGNvbnN0IElu
dFJlY3QmIHJlCiAKICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZp
ZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IocGFp
bnRCZWhhdmlvcik7Ci0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3Jh
cGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgRnJhbWVWaWV3
OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JT
bmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0LCBzaG91bGRQYWludFNlbGVjdGlv
biwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKICAgICBmcmFtZVZpZXctPnNldFBh
aW50QmVoYXZpb3Iob2xkUGFpbnRCZWhhdmlvcik7CiAKICAgICByZXR1cm4gc25hcHNob3QucmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cAppbmRleCA1MDE5NzcwYTllNDZkMGViZjY1Yzg2ZWI0Yjc2ZTRmNmMzMmRkZDJlLi42NWZiZTcz
YjVmZjdiZmJhN2UyMDI0NGY4YjIzYzJhODFiZTJjNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIFBhc3NS
ZWZQdHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2Uo
U25hcHNob3RPcHRpb25zIG9wCiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50
QmVoYXZpb3IpOwogICAgIG93bmVyRG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CiAKLSAgICBmcmFt
ZVZpZXctPnBhaW50KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcGFpbnRSZWN0KTsKKyAgICBmcmFt
ZVZpZXctPnBhaW50KCpncmFwaGljc0NvbnRleHQsIHBhaW50UmVjdCk7CiAgICAgZnJhbWVWaWV3
LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwogCiAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihvbGRTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5j
cHAKaW5kZXggOTlmOTEyNzI3ZDM1NzY4MzE2NzUyY2E1NDc3NmVkYjhmNDUzZTNhNS4uMzNiOTEz
YTlmYmQ5NjczOGZhNThjZjc1ZDUwYTE1MTI3NGQwYTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6ZGVzdHJveSgp
CiAgICAgbV90aW1lcnMuY2xlYXIoKTsKIH0KICAgICAKLXZvaWQgTmV0c2NhcGVQbHVnaW46OnBh
aW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQor
dm9pZCBOZXRzY2FwZVBsdWdpbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKICAgICAK
QEAgLTc2OCw3ICs3NjgsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBOZXRzY2FwZVBsdWdp
bjo6c25hcHNob3QoKQogICAgIC8vIHdoaWNoIHdlIGN1cnJlbnRseSBkb24ndCBoYXZlIGluaXRp
YXRlZCBpbiB0aGUgcGx1Zy1pbiBwcm9jZXNzLgogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZShjb250ZW50c1NjYWxlRmFjdG9yKCksIGNvbnRlbnRzU2NhbGVGYWN0b3IoKSkpOwogCi0gICAg
cGxhdGZvcm1QYWludChjb250ZXh0LmdldCgpLCBJbnRSZWN0KEludFBvaW50KCksIG1fcGx1Z2lu
U2l6ZSksIHRydWUpOworICAgIHBsYXRmb3JtUGFpbnQoKmNvbnRleHQsIEludFJlY3QoSW50UG9p
bnQoKSwgbV9wbHVnaW5TaXplKSwgdHJ1ZSk7CiAKICAgICByZXR1cm4gYml0bWFwOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaAppbmRleCBlNDY4MTRhNGE4NWUxY2E1NDQ0ZTkxYzEyNjY2MjQxODFh
NjU3MmI5Li4yOWUyMmM5Y2VkNjZlMDdlZmU5NTVhNWYxZmYzODYwYjk3N2I1OWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBw
bGF0Zm9ybUludmFsaWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgcGxh
dGZvcm1HZW9tZXRyeURpZENoYW5nZSgpOwogICAgIHZvaWQgcGxhdGZvcm1WaXNpYmlsaXR5RGlk
Q2hhbmdlKCk7Ci0gICAgdm9pZCBwbGF0Zm9ybVBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCwgYm9vbCBpc1NuYXBzaG90ID0g
ZmFsc2UpOworICAgIHZvaWQgcGxhdGZvcm1QYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCA9IGZh
bHNlKTsKIAogICAgIGJvb2wgcGxhdGZvcm1IYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmKTsKICAgICBib29sIHBsYXRmb3JtSGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVl
bEV2ZW50Jik7CkBAIC0xOTEsNyArMTkxLDcgQEAgcHJpdmF0ZToKICAgICAvLyBQbHVnaW4KICAg
ICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5M
YXllcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KaW5k
ZXggODQ4YjMzODJlMDIwZTJjMjJhNDBhYjVjYzkyNmE3MGIyYTMwOWJkYi4uNmY3NTMxOTFhZjk4
ZWRhZTJiZjFiNTI2MmZlYjgyNzRhODI0ZTE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBl
UGx1Z2luTWFjLm1tCkBAIC00NDQsOSArNDQ0LDkgQEAgc3RhdGljIEV2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVyc0ZvckV2ZW50KGNvbnN0IFdlYkV2ZW50JiBldmVudCkKIAogI2VuZGlmCiAKLXZvaWQg
TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCkKK3ZvaWQgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCkKIHsKLSAgICBDR0NvbnRleHRSZWYgcGxh
dGZvcm1Db250ZXh0ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0
UmVmIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBz
d2l0Y2ggKG1fZXZlbnRNb2RlbCkgewogICAgICAgICBjYXNlIE5QRXZlbnRNb2RlbENvY29hOiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAppbmRleCBhZGVmNmNiMzY5NjVmODA0MmQwY2MwMmFjMWZjZGE0N2ZjOTFmMDY4Li40YzUyNTZk
NWExY2FjZWYyMjk4NWU1NDZiODE5MWEwNDFmYTY5OGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTExNSw4ICsxMTUsOCBA
QCBwcml2YXRlOgogICAgIC8vIFBsdWdpbiBmdW5jdGlvbnMuCiAgICAgdmlydHVhbCBib29sIGlu
aXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29v
cmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGlu
dHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
c25hcHNob3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsdWdpbkxh
eWVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDYxY2Y0ZmVhODFhMWM4NjE1Y2ZiZmQ4MjNmMGZiMDAw
ODY0ODZhNWUuLjExMWEyMjVjNzE5NzJjZWMwNWU2YmJjYmZkZjUxMjhlMWMwNGMyOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CkBAIC0xMTExLDkgKzExMTEsOSBAQCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveSgpCiAgICAgW21f
Y29udGVudExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIH0KIAotdm9pZCBQREZQbHVnaW46
OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCkKK3Zv
aWQgUERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC0+dXBkYXRpbmdDb250cm9s
VGludHMoKSk7CisgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50
cygpKTsKIAogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCiAgICAgICAgIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgdm9pZCBQ
REZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBD
R0NvbnRleHRSZWYgY29udGUKICAgICBpZiAobGF5ZXIgPT0gbV9zY3JvbGxDb3JuZXJMYXllcikg
ewogICAgICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QgPSB0aGlzLT5zY3JvbGxDb3JuZXJS
ZWN0KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lclJl
Y3QueCgpLCAtc2Nyb2xsQ29ybmVyUmVjdC55KCkpOwotICAgICAgICBTY3JvbGxiYXJUaGVtZTo6
dGhlbWUoKS0+cGFpbnRTY3JvbGxDb3JuZXIoMCwgJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsQ29y
bmVyUmVjdCk7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENv
cm5lcihudWxscHRyLCBncmFwaGljc0NvbnRleHQsIHNjcm9sbENvcm5lclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgdm9pZCBQREZQbHVn
aW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxheWVyLCBDR0NvbnRl
eHRSZWYgY29udGUKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGdyYXBoaWNzQ29udGV4dC50
cmFuc2xhdGUoLXNjcm9sbGJhci0+eCgpLCAtc2Nyb2xsYmFyLT55KCkpOwotICAgIHNjcm9sbGJh
ci0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CisgICAg
c2Nyb2xsYmFyLT5wYWludChncmFwaGljc0NvbnRleHQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkp
OwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNuYXBzaG90KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKaW5kZXggZjZkMWMw
NTQ3NDQyZjkzY2JhNzdkMGMxMTUwODI0YWZlNWI2MTJlNC4uMTU0OTNmODZhMTczMGIwNzEzOGQ2
YWY0MjQ3YzY0YjRkMjA5YzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFBsdWdpbjo6ZGVzdHJveVBs
dWdpbigpCiAgICAgbV9wbHVnaW5Db250cm9sbGVyID0gMDsKIH0KIAotdm9pZCBQbHVnaW46OnVw
ZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQqKQordm9pZCBQbHVnaW46OnVwZGF0ZUNv
bnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMTFjZjE0OTEzOGY4MGFmNDgzZmMwMGMxNmUz
MjliZWJjMDNlMGFlOC4uZjI3OWViYmNmNDU3OWE5OWQ2OGYwYTM3N2UyMThjYTYzYjdiNjhlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMTI2LDEw
ICsxMjYsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdG8gcGFpbnQg
aXRzZWxmIGludG8gdGhlIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQuIFRoZSBwYXNzZWQtaW4gY29u
dGV4dCBhbmQKICAgICAvLyBkaXJ0eSByZWN0IGFyZSBpbiB3aW5kb3cgY29vcmRpbmF0ZXMuIFRo
ZSBjb250ZXh0IGlzIHNhdmVkL3Jlc3RvcmVkIGJ5IHRoZSBjYWxsZXIuCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGRpcnR5UmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpID0gMDsKIAog
ICAgIC8vIEludmFsaWRhdGUgbmF0aXZlIHRpbnRhYmxlIGNvbnRyb2xzLiBUaGUgcGFzc2VkLWlu
IGNvbnRleHQgaXMgaW4gd2luZG93IGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kik7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKIAogICAg
IC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Zy1pbiBzdXBwb3J0cyBzbmFwc2hvdHRpbmcgb3Ig
bm90LgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CmluZGV4IGU3YzUzZDc4YTY5YzYwZGI4MGE4NjY2NGU3N2Y3Njc0MzBkOTczMjkuLjZkN2I0NmQy
YzY4ZmJiY2M0YjU5YmE2NDJjYzcxZDAzYzgwZWNjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgUGx1Z2luUHJveHk6OmRlc3Ryb3koKQogICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlUGx1
Z2luUHJveHkodGhpcyk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIFBs
dWdpblByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIGlmICghbmVlZHNCYWNraW5nU3RvcmUoKSB8fCAh
bV9iYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lk
IFBsdWdpblByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGlydHlSZQogICAgICAgICBtX3BsdWdpbkJhY2tpbmdTdG9yZUNvbnRhaW5z
VmFsaWREYXRhID0gdHJ1ZTsKICAgICB9CiAKLSAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnQoKmdy
YXBoaWNzQ29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBkaXJ0eVJlY3QubG9jYXRpb24o
KSwgZGlydHlSZWN0KTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0
LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGRpcnR5UmVjdC5sb2NhdGlvbigpLCBkaXJ0eVJlY3Qp
OwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlKSB7CiAgICAg
ICAgIG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlID0gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IDljZGZj
MTk1MjVhYWI5YjZhMzFkNDUyNmZkNDM2NmNlMmY3NTc5YzIuLjc3YWQ0ZTY5MDdlZTRlMWY1OTI5
NzliMGY0NmQ3OGNjNzIxMzBjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpbml0aWFsaXplU3luY2hyb25vdXNseSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggYmFmNTY3MWVjYTY2ZDUxZWRjNjcxODIyNDRkMDA5YzUyYzdiNWQ1MC4uYzM5NmU4NDg2ZTli
NWUxZjVmMjA4Njk5MGNjYWM5M2MxZTMzMmE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzkyLDEzICs3OTIsMTMgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkK
ICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVnaW5WaWV3OjpwYWlu
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8p
Cit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgLypkaXJ0eVJlY3QqLykKIHsKICAgICBpZiAoIW1fcGx1Z2luIHx8ICFtX2lzSW5p
dGlhbGl6ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8IEhUTUxQbHVnSW5F
bGVtZW50OjpSZXN0YXJ0aW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRy
b2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgICAg
ICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICAgICAgbV9wbHVn
aW4tPnVwZGF0ZUNvbnRyb2xUaW50cyhjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTgxMCwxNCArODEwLDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90KSB7Ci0gICAgICAgIG1f
dHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+cGFpbnQoKmNvbnRleHQsIGNvbnRlbnRzU2NhbGVG
YWN0b3IoKSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKSwgbV90cmFuc2llbnRQYWludGluZ1NuYXBz
aG90LT5ib3VuZHMoKSk7CisgICAgICAgIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+cGFp
bnQoY29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBmcmFtZVJlY3QoKS5sb2NhdGlvbigp
LCBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QtPmJvdW5kcygpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gc28gdGhhdCB0
aGUgb3JpZ2luIGlzIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHBsdWctaW4uCi0gICAg
Y29udGV4dC0+dHJhbnNsYXRlKGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueCgpLCBmcmFtZVJlY3Qo
KS5sb2NhdGlvbigpLnkoKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoZnJhbWVSZWN0KCkubG9j
YXRpb24oKS54KCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueSgpKTsKIAogICAgIG1fcGx1Z2lu
LT5wYWludChjb250ZXh0LCBwYWludFJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNTUxMDYwMjNkZTZkOThjOTEwNmNhZTRj
MmJjYmE5MjRhYTMyMGUzNy4uNzhhOGRjYjg4M2YwZDFiYTIyN2ViOGY4ZWNjOWRlY2RhMzgxNGY2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
CkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OldpZGdldAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzNDM2
MjBiZTg4Y2U5YmRiYzBlODE3NzYyYzk4NDdlYzEwNDU4ZTg3Li5jNTZiYmJiZTNjZDg1NDdmYjY3
ZDc3NzdiOWIwN2MxNjY2YTA1OGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzM0LDcgKzEzMzQsNyBAQCB2b2lkIFdlYlBhZ2U6OmRy
YXdSZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0Nv
bnRleHQpOwogICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJlY3QpOwogCi0gICAgbV9tYWluRnJh
bWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnBhaW50KCZncmFwaGljc0NvbnRleHQsIHJlY3QpOwor
ICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5wYWludChncmFwaGljc0NvbnRl
eHQsIHJlY3QpOwogfQogCiBkb3VibGUgV2ViUGFnZTo6dGV4dFpvb21GYWN0b3IoKSBjb25zdApA
QCAtMTc2Myw3ICsxNzYzLDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNo
b3RBdFNpemUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYKICAgICBpZiAob3B0
aW9ucyAmIFNuYXBzaG90T3B0aW9uc0luVmlld0Nvb3JkaW5hdGVzKQogICAgICAgICBjb29yZGlu
YXRlU3BhY2UgPSBGcmFtZVZpZXc6OlZpZXdDb29yZGluYXRlczsKIAotICAgIGZyYW1lVmlldy0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgc25hcHNob3RS
ZWN0LCBzaG91bGRQYWludFNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKKyAgICBmcmFtZVZp
ZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJl
Y3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOwogCiAgICAgaWYgKG9w
dGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFNlbGVjdGlvblJlY3RhbmdsZSkgewogICAgICAg
ICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdGFuZ2xlID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgp
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKQEAgLTE4MTksNyArMTgxOSw3IEBAIFBh
c3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90Tm9kZShXZWJDb3JlOjpOb2RlJiBu
b2RlLCBTbmFwc2hvdE9wdGlvbnMKICAgICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcoJm5v
ZGUpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3ND
b250ZXh0LmdldCgpLCBzbmFwc2hvdFJlY3QsIEZyYW1lVmlldzo6RXhjbHVkZVNlbGVjdGlvbiwg
RnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKKyAgICBmcmFtZVZpZXctPnBhaW50Q29u
dGVudHNGb3JTbmFwc2hvdCgqZ3JhcGhpY3NDb250ZXh0LCBzbmFwc2hvdFJlY3QsIEZyYW1lVmll
dzo6RXhjbHVkZVNlbGVjdGlvbiwgRnJhbWVWaWV3OjpEb2N1bWVudENvb3JkaW5hdGVzKTsKIAog
ICAgIGZyYW1lVmlldy0+c2V0QmFzZUJhY2tncm91bmRDb2xvcihzYXZlZEJhY2tncm91bmRDb2xv
cik7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggZjVlODZkZjAxZmRhMTlkMmU2ZTQxZTFmNDA4YjhkYzMxNWI4YTI4Yy4uYmQy
MTU3M2E2NGFhMzNiZjk5MWEwNzE3NWVmNjY3Y2M3YWI3MGFmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9T
Lm1tCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJT1M6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBHcmFwaGljc0NvbnRlCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICAgICAgY29u
dGV4dC50cmFuc2xhdGUoLW92ZXJsYXlGcmFtZS54KCksIC1vdmVybGF5RnJhbWUueSgpKTsKICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVj
dGlvbk9ubHkgfCBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgfCBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29u
dGVudHMoJmNvbnRleHQsIG92ZXJsYXlGcmFtZSk7CisgICAgICAgIG1fZnJhbWUudmlldygpLT5w
YWludENvbnRlbnRzKGNvbnRleHQsIG92ZXJsYXlGcmFtZSk7CiAgICAgICAgIG1fZnJhbWUudmll
dygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JOb3JtYWwpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260217</attachid>
            <date>2015-08-28 22:39:11 -0700</date>
            <delta_ts>2015-08-28 22:56:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828223900.patch</filename>
            <type>text/plain</type>
            <size>736505</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5k
ZXggNGMwZjkyMTRhMTliNjE5YTE2MzVjMjdhYTI5MTY4MGZiODg1NDBiZi4uZTNiZDQ2ZmNlZTNk
YTcwNDc3MWU0NGYyODhkMzEyNWI5NjRmNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKQEAgLTM5LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdSZWN0SW50b0NvbnRleHQoSW50UmVjdCByZWN0LCBGcmFtZVZpZXcq
IHZpZXcsIEdyYXBoaWNzQ29udGV4dCogZ2MpCitzdGF0aWMgdm9pZCBkcmF3UmVjdEludG9Db250
ZXh0KEludFJlY3QgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQmIGdjKQog
ewogICAgIEludFNpemUgb2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgcmVjdC5t
b3ZlKC1vZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQoKSk7CiAgICAgcmVjdCA9IHZpZXct
PmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cocmVjdCk7CiAKLSAgICBnYy0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSkpOworICAgIGdj
LmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpKTsKIAogICAgIHZpZXctPnBhaW50KGdjLCByZWN0KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRS
ZWN0JiBpcikKIAogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKIAotICAgIGRyYXdS
ZWN0SW50b0NvbnRleHQoaXIsIGZyYW1lLT52aWV3KCksICZnYyk7CisgICAgZHJhd1JlY3RJbnRv
Q29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
b250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3
NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzEx
NDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0
aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNj
cm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmll
dzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBp
bnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOworICAgICAgICBwYWludFNj
cm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3Qo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAg
SW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFy
ZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMo
aWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsx
MjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGly
dHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVD
b250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwg
LXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAt
c2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC5j
bGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cg
cGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYm
IChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAg
ICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwogICAgICAgICBJbnRSZWN0IHZp
c2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0
SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50
KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRT
Y3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTks
MTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAg
ICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRo
aXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5n
QXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFu
ZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFh
OGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0
byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVw
IHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2
b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVj
dGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6
ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVk
U2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXgg
YzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJj
N2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQ
cm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
dm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGlu
dHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRl
eHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisg
ICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAg
ICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNl
MGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0
b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3Mg
PSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4x
NmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
IAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYy
YTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSAr
MjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxi
YXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJl
dHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIx
MzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1
MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3
N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4K
ICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJhY2siKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0
LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsK
KyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEp
OwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTks
IDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAg
IG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUu
Y2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBj
b250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFi
NGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1
aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VT
Y2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2Nh
bGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2Yg
dGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAg
V2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBj
b21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNh
biBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAg
dmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFj
dG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0
byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMg
aW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1
ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNk
YjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52
YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIy
OTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRv
Qm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0Jv
eChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJ
bWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNw
ZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9C
b3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwog
ICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7
CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0lt
YWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFu
c2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNj
YWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNs
YXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0K
IAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9p
ZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIC8v
IFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0g
IndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9h
dFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAg
ICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRo
KG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJh
MDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAg
ICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQy
NTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMx
YWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9X
aWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1
Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3
ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAg
aWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1
bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zv
cm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJlM2MwNmJhNC4uMDUwOGQ1NWNlOGM3
NDBmZWU4YTgwNjJlZmYzMjU2NDMyNGNjYTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4K
QEAgLTIwMSwxMiArMjAxLDEyIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkp
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0
NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5OTQ2MzY2OWY0YTEwNGM5NWM5
MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQxLDY4ICs0MSw2OCBAQCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21J
bWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRl
U3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJn
ZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogCiAg
ICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhh
dmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQg
YSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS0+
aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
b3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsK
KyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAgIGlmICh0YXJnZXRTaXpl
ICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHRhcmdldFNp
emUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRTaXplLmhlaWdodCgpIC8gaW1h
Z2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVp
Z2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVT
aXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9w
ZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShj
b250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1f
Y3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNyY1JlY3Qu
eCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RS
ZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxl
cmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdp
dGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgZHJhd0Nyb3NzZmFk
ZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1NmE5ODc1MTRjYjcxYTE3YjRj
NzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRiMzI5ZDYyOGRhZTM3YjZhNWY3
MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdD
cm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZSogbV9mcm9tSW1hZ2U7CiAg
ICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNkYzkyZDExM2ZjMjBhNGY5MTA1
YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9
IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIC8vIERv
bid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFy
ZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNl
JyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZh
bGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHJ1bik7CkBAIC0x
MzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgaWYgKG5l
eHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250
RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJh
d1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0
R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgcmVuZGVyaW5n
Q29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBs
YXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCBmb250RGF0
YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2lu
dCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogCiAg
ICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0g
bmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0ICYm
IGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NW
R0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRy
YXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5l
eHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0
RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICBkcmF3R2x5
cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50LnNldFgobmV4dFgpOwogICAg
IH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAg
cmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZlci5mb250QXQoaSksIGdseXBo
QnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlwaERhdGEgbWFya0dseXBoRGF0
YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrLCBtYXJrR2x5cGhEYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmlu
ZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3NGE4NjIuLjE2NmI5MGU4NzVh
Y2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkgKzEzMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKSBjb25zdDsKIAogICAgIGVu
dW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBV
c2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0g
LTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVu
dHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0
dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8s
IEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMp
IGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0g
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
ICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CkBAIC0yMzgsOCAr
MjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJhd0Nv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzllZWZiMmFjOWY3YWU1NTZlMzc1
YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4NzdlNmRlODllYzQzYTBlNWI4ZTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBlYTNiOGI0MmVlNmQ5ODQxZTUy
OTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5YzU5YTU4YTRmYjIxOGViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
CiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRleHQtPmNsaXAoZGVzdFJlY3Qp
OwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOworICAgIGRlc3RDb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRlc3RSZWN0
LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVzdENvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC0+dHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAg
ICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBkZXN0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCAqbV9ncmFk
aWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92aWRl
IHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKICAgICBtX2dy
YWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKGFkanVzdGVkU2l6ZSwgYWRq
dXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUgZGVzdGluYXRpb24gY29udGV4
dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29sdXRpb24KLSAgICBBZmZpbmVU
cmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91YmxlIHhTY2FsZSA9IGZhYnMoZGVz
dENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2NhbGUgPSBmYWJzKGRlc3RDb250
ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRqdXN0ZWRQYXR0ZXJuQ1RN
ID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBAQCB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVkSW1hZ2VC
dWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0Fs
cGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFn
ZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250
ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNB
bHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAg
ICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFk
anVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNr
KCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAg
IH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7
Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKKyAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNhMGRmNGM0ZWFiMzdhLi42ZWM1
NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBjb25zdCBGbG9hdFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLjMw
MzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UtPmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkBAIC00
MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxv
d1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAgLTY0MCwyMCArNjQwLDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBGbG9hdFNpemUgc2Nh
bGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhT
Y2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhpcywgaGFzQWxwaGEpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCks
IHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0dXJuIHNjYWxlc01hdGNoKGdl
dENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQo
KSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOworICAgIHJldHVybiBz
Y2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVy
YXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9
CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRy
YW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEds
eXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
KyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lk
IGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5z
aWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4
YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBiMzc4MWVjMGE4ZjQzNWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJvKiBjb250ZXh0KTsKICNlbGlm
IFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAKICAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMu
LmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMwMTQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4LDIzICs3OCwyMyBAQCBib29s
IEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxX
aXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0
eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVD
b2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29t
cG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9y
Lmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkg
OiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNl
KTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9y
U3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewogICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICBvbmVU
aWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAKICAgICAvLyBDaGVjayBhbmQg
c2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBjb3ZlciB0aGUgZW50aXJlIGFy
ZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9uZVRpbGVSZWN0LmNvbnRhaW5z
KGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkgeworICAgIGlmIChvbmVU
aWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJhd0x1bWluYW5jZU1hc2soKSkg
ewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0LngoKSkgLyBzY2FsZS53aWR0aCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2Ug
dGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoc2l6
ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS5o
ZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZp
c2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgwKTsKQEAgLTE2
NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0
IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJh
bnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQ
aXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXpl
LmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsK
ICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxz
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7
Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7
CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwog
ICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3
ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uZjY5YTA1OWZhODk1YWM2MjZhYzdiOGJhYjNlNmJhNjRjNWE4NzA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4
NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJl
IHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY0YzY2
Yzc4YzhlY2VhYjFhOGFjOGRiNTNlNzAxYjVlNjg4OTViNzAuLjI3ZjZiMzFmMDM4Y2U1MjQwODNm
ZWY3NjljMGViODJmMWE4MWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtODMyLDEwICs4MzIs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YXMKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFz
c2V0U3RhdHVzTG9hZGVkOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFw
cGVyKSkgewpAQCAtODQ3LDEwICs4NDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXgKICAg
ICBwYWludChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFp
bnQoJXApIiwgdGhpcyk7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsbwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fYXZmV3JhcHBlci0+Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJl
bnRNZWRpYVRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwg
LTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAg
IEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNmNjOWE1NTNmNjM2Nzk2OWE1NGU2
ODBhNWYyMWRlZDlmZWM0MWZhZi4uZTNkYjhkNTBiMzg1YTI5MWI2ODI4ODRmY2IxZTQ2M2EzM2Jk
YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWVk
aWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDlmNTgxZWRmYWQ2OGY4N2MyZDQ1MzUyMmRmMjJlOGU0NjM1M2I3OWUuLmY4
YmFkZGRmNDI4YzhjNjQwYTU4NDk2Nzc0M2VkYjNkZDNkODVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKICAgICB2b2lkIGRl
c3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZUZvclRpbWVJblJlY3QoZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAg
ICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoKTsKICAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpOwotICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDY1ZmI0ZDI5NjMyNDBmZWJjODVmMTc5OTFlNDc3ZDUyZmE0ZTNl
ZjkuLjUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTQ5NCw5ICsxNDk0LDkgQEAgbG9uZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphc3NldEVycm9yQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtl
cnJvciBjb2RlXTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnQKICAgICBtX3ZpZGVvRnJhbWVIYXNEcmF3biA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXF1ZXN0IGlmIHdlIGFyZSBhbHJlYWR5IHJlbmRlcmlu
ZyB0byBhIGxheWVyLgpAQCAtMTUzMSwxOCArMTUzMSwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRgogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdl
R2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgp
LCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBw
YWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAg
ICB9CiB9CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fbGFzdEltYWdlID0gY3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkK
IHsKICNpZiAoIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgIW1fbGFzdEltYWdlICYmICF2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkp
CkBAIC0yMzQxLDEzICsyMzQxLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiBjCiAKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dCglcCkiLCB0aGlzKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdl
dFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5n
ZXQoKSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJs
ZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8v
IElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3Qg
ZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRl
byBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhNTc1MzRmMjU4OTc5NjMzNjZhNTA0N2Y2NTgwZjI3
OTZhYzYwNTYyLi41MzcxZDY2MjdlY2UxNDNkNTk4ZTU0OGE1ZmU5MGIzM2I3M2NhMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggYzgwNWIzYjI0NWUzNzRmNzkxMDVkYWQ4NzU1NWNmYWRhZmM0ZjAzZS4uZDc3
NzgyODI5NWM2MzBhMTk4NGZmZGY5OWE0MjJjNDFjNTBhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtNTI0LDEyICs1MjQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCiAgICAgLy8gTm8tb3Au
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiAgICAgLy8gRklYTUUoMTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJ
WE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggNWFlNWI1NTA5ZWQxZmMwOTk1OGQ1MGYyNmY1N2IwNGE1MzlmZWUwNi4uNWEwMDEy
ZWM5ZGEyOTg5M2JmNTgyYjc4Yzk1MTE1OWEwMjZjNDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IGMyNmIzMzU5NzM0ZDIzNGFmZDc5MjI5MmFmZDkzNTcwNDZlMGU2ODkuLjAxZmYy
MmMwOTlmZGI5YTFkOWRkNzkyNTg1YWJjNWQ4ZjQ5N2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUltYWdlRnJvbVNhbXBsCiAg
ICAgcmV0dXJuIHF1YXJ0ekltYWdlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgLy8gRklYTUUo
MTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRl
eCBmMGQzYTdhNzJkYjkyZmRlMWQxYjVmOTkzOGIzYzBjMWU3YWQ2MWYxLi5mNWUzZGUwZTUzNGIw
MTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRz
dC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKQEAgLTgxLDEzICs4
MSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCiAgICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgaWYgKGZyYW1lT3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3Qu
eSgpKTsKICAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVs
dChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhYTEwYzY1YzU2ODQzZTUwMjgwNjhhMzlh
ODcwMjAyYzdiMTRjY2NlLi5mYzUwMzJiNTQ1YWI0NmI2YzdmMjM0ZmZjMTc4NDUzZWU0ODQyOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250
JiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X3Qgb3JpZ2luYWxUcmFuc2Zvcm07Ci0gICAgZmxvYXQgc3ludGhldGljQm9s
ZE9mZnNldCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBmbG9hdCBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKIAotICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjb250ZXh0LCBmb250
LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgIGNhaXJvX3NldF9zY2FsZWRfZm9u
dChjb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgY2Fpcm9f
c2hvd19nbHlwaHMoY29udGV4dCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpIHsKQEAgLTY2LDIxICs2NiwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyRwogICAgICAgICBjYWlyb19zZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9y
bSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBpbnQgbnVtR2x5cGhzKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVy
JiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KTsKIAotICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisgICAg
aWYgKCEoZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8
fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0Lm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8g
T3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0
IHRoZSBTaGFkb3dCbHVyLgotICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGdyYXBoaWNz
Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQpOworICAgICAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0KGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CiAgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFw
aGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
ICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUds
eXBocyk7CiAKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0KTsKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiAKICAgICBjYWlyb190ZXh0X2V4dGVu
dHNfdCBleHRlbnRzOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCksIGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRS
ZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54KCkgKyBleHRlbnRzLnhfYmVhcmluZywgcG9pbnQu
eSgpICsgZXh0ZW50cy55X2JlYXJpbmcsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
IAogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5T
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkpIHsKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0
X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0x
MTIsMTQgKzExMiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQg
Kz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQs
IHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dC0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRD
YWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1Rv
Q29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6
ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9r
ZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIg
dGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8
IDIgKiBvZmZzZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBj
b250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAq
IG9mZnNldCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhj
b250ZXh0LnN0YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4
dC5zdHJva2VUaGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUg
Q1RNLCBidXQgd2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgot
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBn
bHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCA2Nzg0MGM1ZTk0ZmZmZmUzZjIzNmYwYjgxMjJh
MjIwMWViYWU1M2VkLi40ZmVjMWFhZWIyZWQ5ZDRiNzZlOTM0MzkyZjRlMzJhODYxOWFlOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtNTIsNyArNTIsNyBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGludCwgaQogICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMg
KyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250
ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyog
bWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBp
bnQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1
biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjhjN2M5NjBmZDlmOWRmNTEzNWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uMmVjMGZiOTlk
YzQ5Y2ZjYzQ1MGI1ZTlkNmE3NWI4MjQzZTFhN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAgICAg
RmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhd2luZ1N0eWxlKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7Ci0gICAg
U2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKTsKKyAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBv
ZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250
ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2Fpcm9fcGF0aF90LCB2b2lkKCopKGNhaXJvX3BhdGhfdCopPiBwYXRoKGNhaXJvX2NvcHlf
cGF0aChjYWlyb0NvbnRleHQpLCBbXShjYWlyb19wYXRoX3QqIHBhdGgpIHsKICAgICAgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KHBhdGgpOwogICAgIH0pOwpAQCAtMTI5LDE0ICsxMjksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGF0aERyYXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgRmlsbCkgewogICAg
ICAgICBjYWlyb19zYXZlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0
ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3Rh
dGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CiAgICAgICAgIGNhaXJv
X2ZpbGwoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2UpIHsK
ICAgICAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9TaGFkb3dDb250ZXh0LCBwYXRoLmdldCgp
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JT
dHJva2luZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVz
ZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBy
ZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpE
b05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKQEAgLTE0OSwyOCArMTQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICBj
YWlyb19maWxsKGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0
LCBGaWxsKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aChjb250ZXh0KTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIFN0cm9rZSk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTdHJva2luZyhjb250ZXh0LT5zdGF0ZSgpKTsKLSAgICBjYWlyb19zdHJva2UoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCktPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCkpOworICAgIGNhaXJvX3N0cm9r
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCogY3IpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCh0aGlzKTsKKyAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0
aCgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLT5jb250ZXh0KCkpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC00NTAsNyArNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LCBjb2xvcik7CiB9CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwg
d2lkdGgpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAg
c2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiB9CiAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dC
bHVyKCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0KTsKQEAg
LTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBz
ZXRQYXRoT25DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7Cisg
ICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQxNWY5ZGM3OWZkYmY5NDAxNTMxYWRiY2Fk
Y2Q5YTI2ZTE3MjVkNTYuLmMyMGY5MmQxYmE2MDdlMTYzZGM0YTllNDA0M2FiN2E5Yjg0MzhjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuICpt
X2RhdGEubV9jb250ZXh0OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0xNjAsMjAgKzE2MCwyMCBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBtYXNrUmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zdAogewotICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIG1hc2tSZWN0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQogewotICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRl
eHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiwgQ29vcmRpbmF0ZVMKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFh
NDQ5MTg2N2JjMGQ5MWQ5YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2
YWM2ZjBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDU5OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEw
ZTdmZjg3M2JjYjM1YzMwNTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
blRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNv
bgogICAgICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWly
bzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1
cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGgg
c21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVm
IHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7
IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNh
aXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hh
ZG93KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIHBhdHRlcm4uZ2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5oCmluZGV4IDkzNTVlMTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEz
MDUyY2QyZDhkY2VlNzUxYWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEo
KSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIz
ZjIxZWY3NzAwZWU2ZDUwNmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVj
NTExY2NjMjIwYzQ3MjgwODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAg
IHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZy
YW1lKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9u
UmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRD
VE0oY3R4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1
ZGM1MzBhMjhiN2JhYjkuLjk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52
YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMg
fHwgaW1hZ2VXaWR0aCA8PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0g
MCB8fCBjYW52YXNIZWlnaHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxz
IHx8IGltYWdlV2lkdGggPD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9
IDAgfHwgY2FudmFzSGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0
ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKIAotICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNp
Z25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGlt
YWdlSGVpZ2h0LCByb3dCeXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSAr
NTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21w
bGV0ZWx5IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyBy
ZXN1bHRzLgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKLSAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0
Mzg2MzVhYTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4
ZmE0NjM2NWJlNDljMjY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygq
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCByZWN0KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJl
Y3QoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGJiOWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEw
OTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
NDMsOSArMTQzLDkgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgp
KTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAg
IGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgY29udGV4dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAog
ICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgp
OworICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CkBAIC0yMTAsMTMgKzIxMCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9k
YXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzEsMjkgKzIzMSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVy
biBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNj
YWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4
dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBv
dXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAK
LSAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
eworICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwog
ICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9
IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6
ZSwgaW50ZXJuYWxTaXplKCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4Mywz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUo
KSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewot
ICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAog
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSks
IHNvdXJjZUNvcHktPmludGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBz
b3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+
aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29u
dGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250
ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVT
eXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUx
MDMxYTIxNTcwZTVhYTMyMGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBk
OTdmYzYzNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBA
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjdHh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZv
cm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0
eHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5m
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1
ZSBpZiBzaXplIGlzIGF2YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1
bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25z
dAogewogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1l
bnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2Uo
ZGVjb21wb3NlZFRyYW5zZm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm07CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERl
Y29tcG9zZWRUcmFuc2Zvcm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3Jt
Q29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNj
YWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2Fs
ZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUs
MTIgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2Nh
bGUpOwotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNyY1JlY3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xp
ZW50cyB1c2UgbG93LXF1YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRo
cm93cyBvZmYgdGhpcyBvcHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlt
YWdlLCByZXVzZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlm
IGNhY2hlIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hl
biB3ZSBkbyB0aGUgc3Vic2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBjb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJl
cGFpbnRJZk5lY2Vzc2FyeSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25O
b25lICYmIGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYK
IAogICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNo
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxv
YXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKIAogICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwogCi0gICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUg
PSBkc3RSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsK
IApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBA
IC0yNDQsMjYgKzI0MCwyNiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3Vt
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3Jl
ZXMpCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0
KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXpl
LndpZHRoKCksIDApOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwogCi0gICAgY29udGV4dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3Rh
dGlvbkRlZ3JlZXMpKSk7CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwog
CiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERy
YXdQREZQYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSkpOwogfQogCiAjZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKaW5kZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkw
MC4uMjE3YWNkMGVkYjI2NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KTsKKyAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
IAogI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5
YjkxNTkwMjM4MTgzOGU5Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRi
MmU5ZGNhNDFjMDc3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0
dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBo
cywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hv
d0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBn
bHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFC
TEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRh
KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0
Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0
ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAt
MTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCog
Zm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3Qg
Q0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBh
ZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBm
b250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBv
c2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgp
KQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQp
KTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBv
aW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNl
bGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1Bv
aW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBs
eUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwog
ICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENH
UG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRy
YW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0
aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9
CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
aW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBj
b25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQt
PnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJv
b2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9v
dGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7Cisg
ICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8g
c3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewot
ICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRz
ID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBt
YXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnBy
ZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250
ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkg
KzMzOSw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250
ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKCkpOwogI2Vsc2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwg
W2RyYXdGb250IHJlbmRlcmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CisgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9u
dCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7
CiAjZW5kaWYKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0
YS5zaXplKCkpOwogCkBAIC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3Qg
RwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2Ug
PSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwor
ICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0g
PSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYg
IWNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAg
ICBGbG9hdFNpemUgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RN
Lm1hcFNpemUoRmxvYXRTaXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRM
ZW5ndGhJbkRldmljZVBpeGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4
ZWxzLndpZHRoKCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsg
aG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5p
dFNpemVJbkRldmljZVBpeGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBo
b3Jpem9udGFsVW5pdExlbmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JC
aXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29u
dGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5p
c0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxw
aGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFk
b3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUg
WSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250
ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAg
IGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93
VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlw
aHMpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9p
bnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRp
Y19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5
cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyAr
NjYwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZv
ciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3
OCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBm
bG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNw
cAppbmRleCAxNDRjNmE1MjBlNGM1ZGFkNzU0NDcyNTg4YWJmOTRmMDgyNGE3YWViLi5hZmNmNzU5
NzI3OTM3ZmRjNmFjNzM3NmYwNDkwNWY4ZmQyOThkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1h
Z2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7
CiAKICAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBjMTRmNjBm
YzY2OWJlNDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlhZTBiMmJmMjk2
YTBmYTc0ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCB2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
ID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0g
aW4yLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKICAgICBBU1NF
UlQoaW1hZ2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBv
c2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAppbmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMxOWM2Li44NzY2
YWVjYjIyMzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRS
ZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAz
NmJlZmU3YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4NzEzOGZiZGYz
ZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEsOCArMjgxLDgg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFw
cGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50
UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRl
UGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAg
ICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFk
anVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0
ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAppbmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2OTZmLi42MzNl
YmM2NjBiMWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CkBAIC04OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZl
cigpOwogICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiByZXN1
bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQocmVzdWx0Q29u
dGV4dCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsKLSAg
ICByZXN1bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRDb250ZXh0LT5z
ZXRBbHBoYSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJh
ZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIApAQCAt
MTA1LDExICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1Bp
eGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgp
LCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKLSAgICByZXN1
bHRDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAg
IHJlc3VsdENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAK
IHZvaWQgRkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZk
OGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2NzAyMjZkMDE4
YWIyMzcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgp
KTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMjZi
OTMyYWNmZjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUzODVhZTQyMzBi
YTNjOTE4ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTAgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9
IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFhNGUyZjllLi5m
ZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIo
KTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1f
ZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhk
MzE3MmQ5ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2ZWNmOTMxYWVh
NWY4MDlkYmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBG
RVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRp
bGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5N
YXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGls
ZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgp
OworICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngo
KSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGls
ZUltYWdlQ29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZl
Y3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRp
b24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0
ZXJuVHJhbnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKFdU
Rjo6bW92ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZp
bHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0
ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNjLi5iYTE0NzEy
YTNjZjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC00NjYsNyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29udGV4dCgp
KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi43MGIx
ZDU1NjRmNmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApA
QCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VC
dWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0
ZXJDb250ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKKyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKaW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2UxN2UyMy4uMzE5
OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdl
QnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2lu
dCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIu
c291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZv
aWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNjRhMjNkMWYyZDkzYWJmZTdjYzJkYWE4
NzY1MWY4NTQ2NjNmNDVmYy4uZTVmMjg2YTU0MzBjODE0NjEyYWM5NzAyZjRlNThkN2E3ZjUxMjQw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcApAQCAtNTAyLDE0ICs1MDIsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgbV9zaXplID0gc2l6
ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3BsYXllci0+dmlzaWJsZSgpKQpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+
aW1hZ2UoKS5nZXQoKSksIENvbG9yU3BhY2VTUkdCLAorICAgIGNvbnRleHQuZHJhd0ltYWdlKHJl
aW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSksIENvbG9yU3Bh
Y2VTUkdCLAogICAgICAgICByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCBDb21wb3NpdGVDb3B5KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKaW5kZXggMzEzNTczM2QxYjE5OGU2NWFmNWIzODI0ZTVjMmQ4NjcxZmI2ZjJkOS4uZDJmODhl
ODc1NGM1NmQ5MDM2YTQ3MmRlM2Y2NWJjNDlmYTJkN2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHRyaWdnZXJSZXBhaW50
KEdzdFNhbXBsZSopOwotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25z
dCB7IHJldHVybiAwLjA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCmluZGV4IDAyYzQ4ZDhmYjM2NjVm
OGNhZTI0OGJkMmFiNzZmNzE4MTg3NGI5MTIuLmFjZTE5MDU0YjlkYTUxMGE3MTkxZDAwYjRlNWJm
NmIyZGRjZDc4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBmbG9hdCB3CiAKICAgICAvLyBEcmF3IHVuZGVybGluZS4KICNpZiAhUExB
VEZPUk0oSU9TKQotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
dGhpcyk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgqdGhp
cyk7CiAgICAgTlNHcmFwaGljc0NvbnRleHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IChDR0Nv
bnRleHRSZWYpW2N1cnJlbnRDb250ZXh0IGdyYXBoaWNzUG9ydF07CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQppbmRleCBmZDEzYWJm
YjY4MmUyMWJiOWEwOGE4ZjY0ZmJlOWUwMTRiMmY1N2YzLi5mNDEwMjdmNTJlYjhmYjk5ZWRmMjJj
NjdmMDFiMGQ4YzMyNTFlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSWNvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSWNvbk1hYy5tbQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEljb246OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudEdDKCZjb250ZXh0KTsKKyAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CiAKICAgICBb
bV9uc0ltYWdlIGRyYXdJblJlY3Q6cmVjdCBmcm9tUmVjdDpOU01ha2VSZWN0KDAsIDAsIFttX25z
SW1hZ2Ugc2l6ZV0ud2lkdGgsIFttX25zSW1hZ2Ugc2l6ZV0uaGVpZ2h0KSBvcGVyYXRpb246TlND
b21wb3NpdGVTb3VyY2VPdmVyIGZyYWN0aW9uOjEuMGZdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaAppbmRleCAwMWU4NmYxY2M5MmE1Zjk2NzBjMmJjODBjYzk5YjIyNzNhMTU2MWU4Li4x
OTZkZWNjNjQ0N2JiMTQwZGQ4ZGNjMDk5YWEzODUwZDhjOWRmOWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQuaApAQCAtMTI3LDggKzEyNyw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGE3YTIxMzdkYzAzMzg2YzQ1OGY1NjVkOWMz
MjVhMTJjNmM2MTA5OTQuLmE0YzAwYjc3MWY1ODdiMjFjYjEzMjFmMmI1ZmI1MzUwN2UwNjk1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTExODQsNyArMTE4NCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlcGFpbnQoKQogICAgIG1fcGxheWVyLT5yZXBh
aW50KCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7CiAgICAg
aWQgcXRWaWRlb1JlbmRlcmVyID0gbV9xdFZpZGVvUmVuZGVyZXIuZ2V0KCk7CiAgICAgaWYgKCFx
dFZpZGVvUmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmlu
Z01vdmllTGF5ZXIpIHsKQEAgLTExOTcsOSArMTE5Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4CiAgICAgcGFpbnQoY29udGV4dCwgcik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQorICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQogICAgICAgICByZXR1
cm47CiAgICAgaWQgcXRWaWRlb1JlbmRlcmVyID0gbV9xdFZpZGVvUmVuZGVyZXIuZ2V0KCk7CiAg
ICAgaWYgKCFxdFZpZGVvUmVuZGVyZXIpCkBAIC0xMjExLDEyICsxMjExLDEyIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByCiAgICAgRmxvYXRTaXplIHNjYWxlRmFjdG9yKDEuMGYsIC0xLjBmKTsK
ICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0KEZsb2F0UG9pbnQoKSwgci5zaXplKCkpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250
ZXh0LT50cmFuc2xhdGUoci54KCksIHIueSgpICsgci5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC0+
c2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHIueCgpLCByLnkoKSAr
IHIuaGVpZ2h0KCkpOworICAgIGNvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGNvbnRl
eHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKIAotICAg
IG5ld0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBo
aWNzUG9ydDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOk5PXTsKKyAgICBuZXdD
b250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1Bv
cnQ6Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOk5PXTsKIAogICAgIFtOU0dyYXBo
aWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNl
dEN1cnJlbnRDb250ZXh0Om5ld0NvbnRleHRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCAw
ZGNmNmMxY2E5Y2ZmZDJkMjNkNmY0OGM1YzkxNjQzZTFjMTAwNWI3Li5iZmFhZmE5MzU3MDAwN2Q1
ZmRjMjM1M2IwMWIyNGQxNDQ1MzFhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNjks
MTkgKzY5LDE5IEBAIHVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07CiB9CiAKLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQREZE
b2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudENvbnRleHQoY29udGV4
dCk7CiAKICAgICAvLyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQgYnkgUERGS2l0IGJ1dCBh
cmUgbm90IHNhdmVkCiAgICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0ZSBzdGFjay4gKDxyZGFy
Oi8vcHJvYmxlbS8xNDk1MTc1OT4pCi0gICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRl
eHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAg
ICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9u
dFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBi
b29sIGFsbG93c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXph
dGlvbiA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIFtbbV9kb2N1bWVudCBwYWdlQXRJbmRleDowXSBk
cmF3V2l0aEJveDprUERGRGlzcGxheUJveENyb3BCb3hdOwogCi0gICAgQ0dDb250ZXh0U2V0QWxs
b3dzRm9udFNtb290aGluZyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21vb3Ro
aW5nKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uKTsKKyAg
ICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIGFsbG93c1Ntb290aGluZyk7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVh
bnRpemF0aW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggZjM0MmFkOTU0ZjA2MjQxMTRlN2FiZTEzNzQ1ZDVmYzU0YzIwZjc1
ZS4uYjZlZmE0MWI2ZmYwNmQ1MDI0MTY0NWM1YmFkYmQzZGM2OGI3N2I0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNjksOCArMTY5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgp
LCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgaW1h
Z2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNp
emUoKS5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAjZWxzZQotICAgIHBhaW50
VG9DYW52YXMocGl4ZWxzLmdldCgpLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGlt
YWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBt
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXpl
KCkud2lkdGgoKSwgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmhlaWdodCgpLCBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDZjMDgyNTgyOTA5NWRiNzlmYTU0OGI2ZTdj
YjM3NjZiNDNjOTAzZjMuLjY4Y2UzMTNlMWYwZjc0N2VhY2ZmNmRhYTk2MGJmMDQ4MGVkNmYyZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCB2b2lkIEJpdG1hcFRleHR1
cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNz
TGF5ZXIqCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBjb250
ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRl
eHR1cmVNYXBwZXItPnRleHREcmF3aW5nTW9kZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KCkpOworICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRleHRE
cmF3aW5nTW9kZSgpKTsKIAogICAgIEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsKICAg
ICBzb3VyY2VSZWN0LnNldExvY2F0aW9uKG9mZnNldCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRl
KC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7Ci0gICAgc291cmNlTGF5ZXItPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBzb3VyY2VSZWN0KTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtb2Zmc2V0LngoKSwgLW9mZnNldC55KCkpOworICAgIHNvdXJjZUxheWVyLT5wYWludEdy
YXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBzb3VyY2VSZWN0KTsKIAogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIWltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBjNDkwYjExMTYxZmQ4ZTI3MjNhYTk2NjJkMWI1
MDAzOTQ2MzE2NjhiLi5hMjdhMmVmNmZlY2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcApAQCAtMTI3LDI1ICsxMjcsMjUgQEAgc3RhdGljIENHUGF0aFJlZiBjcmVhdGVQYXRoRm9y
R2x5cGgoSERDIGhkYywgR2x5cGggZ2x5cGgpCiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLXZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKICAgICBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7
Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKICAgICBib29sIHNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBXZWJD
b3JlU2hvdWxkVXNlRm9udFNtb290aGluZygpOwogCiAgICAgc3dpdGNoKGZvbnREZXNjcmlwdGlv
bigpLmZvbnRTbW9vdGhpbmcoKSkgewogICAgIGNhc2UgQW50aWFsaWFzZWQ6IHsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFVzZUZv
bnRTbW9vdGhpbmcgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3Vi
cGl4ZWxBbnRpYWxpYXNlZDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFu
dGlhbGlhcyh0cnVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlh
cyh0cnVlKTsKICAgICAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5vU21vb3RoaW5nOiB7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFVzZUZvbnRTbW9v
dGhpbmcgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAKICAgICB1aW50MzJfdCBvbGRGb250U21vb3RoaW5n
U3R5bGUgPSB3a1NldEZvbnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIHNob3VsZFVzZUZvbnRT
bW9vdGhpbmcpOwogCi0gICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0g
Zm9udC0+cGxhdGZvcm1EYXRhKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKIAogICAgIENHQ29udGV4dFNldEZvbnQoY2dD
b250ZXh0LCBwbGF0Zm9ybURhdGEuY2dGb250KCkpOwogCkBAIC0xNzgsNDMgKzE3OCw0MyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGb250KiBmb250LAogICAgIEZsb2F0U2l6ZSB0cmFuc2xhdGlvbiA9IGdseXBo
QnVmZmVyLm9mZnNldEF0KGZyb20pOwogCiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250
ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsKLSAgICB3a1NldENHQ29udGV4dEZvbnRSZW5kZXJp
bmdTdHlsZShjZ0NvbnRleHQsIGZvbnQtPmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC0+cGxh
dGZvcm1EYXRhKCkudXNlR0RJKCkpOworICAgIHdrU2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0
eWxlKGNnQ29udGV4dCwgZm9udC5pc1N5c3RlbUZvbnQoKSwgZmFsc2UsIGZvbnQucGxhdGZvcm1E
YXRhKCkudXNlR0RJKCkpOwogCiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9h
dCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ugc2hh
ZG93Q29sb3JTcGFjZTsKLSAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBncmFw
aGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFw
aGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dD
b2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQtPnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hh
ZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cp
IHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2Yg
cmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFz
aW5nLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgICAgIENv
bG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNwYWNl
KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOworICAgICAgICBDb2xv
ciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yKCk7CisgICAgICAgIENvbG9y
U3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsK
ICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dD
b2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBm
aWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Rmls
bENvbG9yKHNoYWRvd0ZpbGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNl
KTsKICAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53
aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJl
IGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3Jk
aW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAgIGZsb2F0IHNoYWRv
d1RleHRZID0gcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQu
aGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8g
LTEgOiAxKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xh
dGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CiAgICAgICAgIENHQ29udGV4dFNl
dFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSk7CiAgICAg
ICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZl
ci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFk
dmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICAgICAgaWYgKGZvbnQtPnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSkgewotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29u
dGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0
aCgpICsgZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlv
bi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CisgICAgICAgIGlmIChmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKSkgeworICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0
aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09m
ZnNldC53aWR0aCgpICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgICAg
IENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgfQotICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKICAg
ICB9CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkg
KyB0cmFuc2xhdGlvbi53aWR0aCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSk7
CiAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVm
ZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgIGlmIChmb250LT5zeW50aGV0aWNCb2xk
T2Zmc2V0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwg
cG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkpOworICAgIGlmIChmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKSkgeworICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24o
Y2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgZm9udC5zeW50aGV0
aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVy
LmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2
YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFk
b3cpCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHNoYWRvd0NvbG9yU3BhY2UpOwogCiAgICAgd2tSZXN0b3JlRm9udFNtb290aGluZ1N0eWxlKGNn
Q29udGV4dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAppbmRleCAzYTBjYjMwYmU3NmMwY2U3
NDFjNTRmZWNhZGM3YzQ4ZWEzOWNkZWUzLi5kYjk2M2MyZjY0MGJkZmE0YTNhNjQ4NTQ0OGE0OWEw
YzlmNThjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRXaW4uY3BwCkBAIC05MSw3ICs5MSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlw
aHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZyCiAg
ICAgcmV0dXJuIGJlZm9yZVdpZHRoOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0IEZvbnRD
YXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMgKyBhZHZh
bmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1
ZmZlcjsKQEAgLTEwOCw3ICsxMDgsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJl
dHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRy
YXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIg
Z2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZh
bmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1w
aGFzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25X
aW4uY3BwCmluZGV4IGVlODhlMjA1YmMxMzdlNTYyMDA0MGMwYzFmZmJkZjkwOGE0ZWZhMmYuLmE3
ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2YTVjNzkzODhjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcikKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93Q29udGV4dCgmY29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChyKSk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dDb250
ZXh0KGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocikpOwogICAgIERyYXdJY29uRXgod2luZG93
Q29udGV4dC5oZGMoKSwgci54KCksIHIueSgpLCBtX2hJY29uLCByLndpZHRoKCksIHIuaGVpZ2h0
KCksIDAsIDAsIERJX05PUk1BTCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3MjNlYWRiZmQ1ZGMyMTVmMzMw
M2RlMDNjMzU4ZWJhOGE2OTA0MTI0Li4wODM0NzA3ZGE5YmFmNzExY2JmNzI4MTczNmYyNTIyZjdm
MTFhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC03Niw5ICs3Niw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAg
ICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZv
LmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwog
ICAgIGVsc2UKLSAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZv
LmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdp
ZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBA
IC04Niw3ICs4Niw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3ApCiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggNGZkNjM5
NGJjZDk4ODUzODVlNGMxZjVhMGFmYTNiNjRlNmE4NjQ5ZC4uYzc0MDM0N2JhMWJiNzc2Y2M0N2Ey
ODkzZGRmYTI3ZDgxNTU0MzVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtNzksNyArNzksNyBAQCBib29s
IEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXpl
KiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7
CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcElu
Zm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCiAgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIApAQCAtODksNyArODksNyBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFt
ZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xv
Y2FsV2luZG93c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKaW5kZXggY2Y1MWIwMDgxMDg4NTlmMDMxNTdhY2IyZWE2
NjNjZmQ5MGVmMWJiMS4uM2FkZGMxNDRmYzcxZjc2MjQwYWY5OTY5NGZmMDVlMDY5ZDIxYjQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2lu
ZG93c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TG9jYWxXaW5kb3dzQ29udGV4dC5oCkBAIC0zNCwyNCArMzQsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTG9jYWxXaW5kb3dzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTG9jYWxXaW5kb3dzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9jYWxXaW5kb3dzQ29udGV4
dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwg
Ym9vbCBzdXBwb3J0QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0gdHJ1
ZSkKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gdHJ1ZSwg
Ym9vbCBtYXlDcmVhdGVCaXRtYXAgPSB0cnVlKQogICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0
KGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAgICAgICAgLCBtX3N1
cHBvcnRBbHBoYUJsZW5kKHN1cHBvcnRBbHBoYUJsZW5kKQogICAgICAgICAsIG1fbWF5Q3JlYXRl
Qml0bWFwKG1heUNyZWF0ZUJpdG1hcCkKICAgICB7Ci0gICAgICAgIG1faGRjID0gbV9ncmFwaGlj
c0NvbnRleHQtPmdldFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwg
bV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2hkYyA9IG1fZ3JhcGhpY3NDb250ZXh0Lmdl
dFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVC
aXRtYXApOwogICAgIH0KIAogICAgIH5Mb2NhbFdpbmRvd3NDb250ZXh0KCkKICAgICB7Ci0gICAg
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVj
dCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2dy
YXBoaWNzQ29udGV4dC5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVjdCwgbV9zdXBw
b3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOwogICAgIH0KIAogICAgIEhEQyBoZGMo
KSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4
dCogbV9ncmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29u
dGV4dDsKICAgICBIREMgbV9oZGM7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiAgICAgYm9vbCBtX3N1
cHBvcnRBbHBoYUJsZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNw
cAppbmRleCBhN2JhNDJhMmViM2UzOWU0Mjc2NTVhNDg4MzIwYzNkYzBmMmQ3NzAyLi4yZWUzMTgy
MGNlYTBhNGRkMGYxZmU3Y2E5OGY3MjQ3MWRhMGM2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFdpZGdldDo6aGlk
ZSgpCiAgICAgICAgIGd0a193aWRnZXRfaGlkZShwbGF0Zm9ybVdpZGdldCgpKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCBhOGRmY2MzMjFiYWRm
ZWQyNzEwZmVlYzUwOGQyN2NjMTNhODEzMWNhLi4wZTM2NWVmMDg4NGFkMmM4YTZkNjcyNWY3NGM3
NTg3OGM1OTAwMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0K
QEAgLTE0MSwxNCArMTQxLDE0IEBAIE5TVmlldyogV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25z
dAogICAgIHJldHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgcCwgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBpZiAocC0+cGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIE5TVmlldyAqdmlldyA9IGdldE91dGVyVmlldygpOwogCi0gICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dD
b250ZXh0KTsKIAogICAgIE5TUmVjdCB2aWV3RnJhbWUgPSBbdmlldyBmcmFtZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCBiNTA1ZmMxMzhkNTgx
YTdhNDFmMWJlYTYzZmNlNTI2ZTg1NDYxZmRiLi41ZmIwNTJkNDU2N2RhMDBiZDgyZGUyMWM5YWQ2
OTAxMDU1ZDVkOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChOU1N0cmlu
ZyAqc3RyaW5nLCBOU1BvaW50IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgogICAgICAg
ICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNw
YWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwg
Z3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIAotICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250
ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICog
cG9pbnQueSkpKSk7CisgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4
dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBv
aW50LnkpKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFmbGlwcGVkKQogICAgICAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggNThiNjQ3MmNmMmUwN2M2YjkwODA0MDI4N2ViNjJjNWE5MDI3ZWYwMS4uNDhmZWIyZWE0ZDE5
ZDQwYTA5NWM5ZGZlZDViOTc2MmJhYzg2NzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaApAQCAtMjks
MTEgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dChHcmFwaGljc0NvbnRleHQmKTsKICAgICB+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0KCk7CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCgpOwogcHJpdmF0ZToKLSAgICBHcmFw
aGljc0NvbnRleHQqIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0OwogICAgIE5TR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVk
TlNHcmFwaGljc0NvbnRleHQ7CiAgICAgYm9vbCBtX2RpZFNldEdyYXBoaWNzQ29udGV4dDsKIH07
CkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6CiBjbGFzcyBDb250ZXh0Q29udGFpbmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZXh0Q29udGFpbmVyKTsKIHB1YmxpYzoKLSAgICBD
b250ZXh0Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQotICAgICAg
ICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkp
CisgICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkK
KyAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250
ZXh0KCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KaW5kZXggMjYzMmY2NjQz
YmZlMGY2OWEzNDI3MTE2Zjg3ODExYWI1ZDllMGNkZS4uMTM5ZGQ2NjViYzFiZWIxMGI3NWE0ZTQz
ZWNmZDdmNzIwNzE4MTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCkBAIC0yNCwxMSArMjQsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCkKLSAgICA6IG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KGZhbHNlKQorTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgOiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0KGdyYXBo
aWNzQ29udGV4dCkKKyAgICAsIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KGZhbHNlKQogewotICAg
IG1fc2F2ZWRHcmFwaGljc0NvbnRleHQgPSBncmFwaGljc0NvbnRleHQ7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKIAogICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0NvbnRleHQoKTsKICAgICBpZiAoY2dDb250ZXh0
ID09IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pIHsK
QEAgLTQ5LDEyICs0OSwxMiBAQCBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6On5Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoKQogICAgICAgICBbbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0
IHJlbGVhc2VdOwogICAgIH0KIAotICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKIH0KIAogQ0dDb250ZXh0
UmVmIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6Y2dDb250ZXh0KCkKIHsKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gbV9zYXZlZEdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRHcmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgcmV0dXJuIGNnQ29udGV4dDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDc3
ZjJkODA4Y2M2NDg1NzExYjFhOTJlYzhmOGJjYjk3YzM4YzY4NjYuLmMzMzc2NWZjMjVkMGRjM2Jh
NWYxZjJlNTU5OTllYThjNzUyOGFiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTUxMyw3ICs1MTMsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjbwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAgICAgICAgIGNvbnRleHQuY2xpcChkYW1hZ2VSZWN0KTsKICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xsYmFyLmZy
YW1lUmVjdCgpLnkoKSk7Ci0gICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQoJmNvbnRleHQpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgICAgICBzY3JvbGxiYXJQYWludGVyUGFpbnQoc2Ny
b2xsYmFyTWFwKCktPmdldCgmc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xsYmFyLmVuYWJsZWQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCmluZGV4IGY4ZWUx
NmViOWVhMTIxNDNiMjEyNWYwOGFmZDYzNjA2Y2M4NDE3MTIuLjNiYWRlN2E2NmUwOWQ3OTYzNjgx
MTNlNDQ2NzllMDgyZjdmODQzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNvbnRy
b2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENv
bnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVy
IHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1lTWFjLgogICAg
IHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3Rh
dGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxs
ICovLCBib29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8s
IGZsb2F0IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKKyAgICBzdGF0aWMgYm9vbCBkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxsICovLCBi
b29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8sIGZsb2F0
IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA1MWNmZDBkZTNhM2I1
OWZlNDk3ZTk2YTAwOGJhOGNlOGJmZjk4ZjA4Li4xYmQ1MDlmNTcwYzg0MTYxMDMwYzg1Mzc4OTVk
N2UzNmVhMTU2YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpj
ZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRv
blR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3Jv
bGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNj
YWxlRmFjdG9yKQorc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0
dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNj
cm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdl
U2NhbGVGYWN0b3IpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTQw
MCw3ICs0MDAsNyBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBi
dXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIH0KICAgICBjb250cm9s
U3RhdGVzLnNldERpcnR5KGZhbHNlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFt0b2dn
bGVCdXR0b25DZWxsIGNvbnRyb2xTaXplXTsKICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBidXR0
b25UeXBlID09IENoZWNrYm94UGFydCA/IGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV0gOiBy
YWRpb1NpemVzKClbY29udHJvbFNpemVdOwpAQCAtNDEyLDkgKzQxMiw5IEBAIHN0YXRpYyB2b2lk
IHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMm
IGNvbnRyb2xTdGF0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICBpbmZs
YXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAg
ICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29t
RmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGlu
ZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZh
Y3Rvciwgem9vbUZhY3RvcikpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVk
UmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
aW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAK
ICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwpA
QCAtNDMxLDExICs0MzEsMTEgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJv
bFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKIAogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgaWYgKFt0b2dnbGVCdXR0
b25DZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddKSB7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5z
bGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgw
LCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoaW5m
bGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbmZsYXRl
ZFJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgIFt0b2dnbGVCdXR0b25DZWxsIF9yZW5kZXJDdXJy
ZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgYXRM
b2NhdGlvbjpOU01ha2VQb2ludCgwLCAwKV07CisgICAgICAgIFt0b2dnbGVCdXR0b25DZWxsIF9y
ZW5kZXJDdXJyZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50KDAsIDApXTsKICAgICAgICAgaWYgKCFbdG9nZ2xl
QnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSAmJiBpc0NlbGxGb2N1c2VkKQogICAg
ICAgICAgICAgbmVlZHNSZXBhaW50ID0gVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRo
Vmlld0ludG9Db250ZXh0KHRvZ2dsZUJ1dHRvbkNlbGwuZ2V0KCksIGNvbnRleHQsIGluZmxhdGVk
UmVjdCwgdmlldywgZmFsc2UsIHRydWUsIHVzZUltYWdlQnVmZmVyLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgfSBlbHNlCkBAIC01MjAsMTQgKzUyMCwxNCBAQCBzdGF0aWMgTlNCdXR0b25DZWxs
ICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0
YXRlcwogICAgIHJldHVybiBjZWxsOwogfQogICAgIAotc3RhdGljIHZvaWQgcGFpbnRCdXR0b24o
Q29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFy
dCBwYXJ0LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvcikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJv
bCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCiAgICAgQ29udHJvbFN0YXRlczo6
U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CiAgICAgTlNCdXR0b25DZWxs
ICpidXR0b25DZWxsID0gYnV0dG9uKHBhcnQsIGNvbnRyb2xTdGF0ZXMsIEludFNpemUoem9vbWVk
UmVjdC5zaXplKCkpLCB6b29tRmFjdG9yKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbYnV0
dG9uQ2VsbCBjb250cm9sU2l6ZV07CiAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gYnV0dG9uU2l6
ZXMoKVtjb250cm9sU2l6ZV07CkBAIC01NDcsOSArNTQ3LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRC
dXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3Jh
cGhpY3MKICAgICAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICAgICAgaW5m
bGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAg
ICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAv
IHpvb21GYWN0b3IpOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVj
dC54KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7
CisgICAgICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFj
dG9yKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwg
LWluZmxhdGVkUmVjdC55KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNTk5LDcgKzU5
OSw3IEBAIHN0YXRpYyBOU0NvbnRyb2xTaXplIHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwogfQog
Ci1zdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9v
bUZhY3RvciwgU2Nyb2xsVmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0
YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopCiB7CiAgICAgLy8gV2Ug
ZG9uJ3QgdXNlIE5TU3RlcHBlckNlbGwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gd2F5cyB0byBkcmF3
IGFuCiAgICAgLy8gTlNTdGVwcGVyQ2VsbCB3aXRoIHRoZSB1cCBidXR0b24gaGlnaGxpZ2h0ZWQu
CkBAIC02MTcsMTMgKzYxNywxMyBAQCBzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0
YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgICAgIGRy
YXdJbmZvLmtpbmQgPSBrVGhlbWVJbmNEZWNCdXR0b247CiAKICAgICBJbnRSZWN0IHJlY3Qoem9v
bWVkUmVjdCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICByZWN0LnNldFdpZHRoKHJl
Y3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICByZWN0LnNldEhlaWdodChyZWN0Lmhl
aWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyZWN0Lngo
KSwgcmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rv
ciwgem9vbUZhY3RvcikpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAt
cmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkp
OworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9y
KSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAg
ICB9CiAgICAgQ0dSZWN0IGJvdW5kcyhyZWN0KTsKICAgICBDR1JlY3QgYmFja2dyb3VuZEJvdW5k
czsKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIGNvbnN0IGZsb2F0IGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCA9IDMuMGY7CiAKLWJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGluZmxhdGVkUmVjdCwgTlNWaWV3KiB2aWV3LCBib29sIGRyYXdC
dXR0b25DZWxsLCBib29sIGRyYXdGb2N1c1JpbmcsIGJvb2wgdXNlSW1hZ2VCdWZmZXIsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKQorYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dp
dGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiBjZWxsLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgaW5mbGF0ZWRSZWN0LCBOU1ZpZXcqIHZpZXcsIGJvb2wgZHJhd0J1
dHRvbkNlbGwsIGJvb2wgZHJhd0ZvY3VzUmluZywgYm9vbCB1c2VJbWFnZUJ1ZmZlciwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgQVNTRVJUKGRyYXdCdXR0b25DZWxsIHx8IGRyYXdG
b2N1c1JpbmcpOwogICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CkBAIC02NzksNyArNjc5
LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRl
eHQoTlNDZWxsKiBjZWxsLCBHcmFwaGljc0NvbnQKICAgICAgICAgICAgIGlmIChkcmF3Rm9jdXNS
aW5nKQogICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsRm9jdXNSaW5nKGNl
bGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZVNSR0IsIGlu
ZmxhdGVkUmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlU1JHQiwgaW5mbGF0ZWRS
ZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWlu
dDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpAQCAtODQwLDcgKzg0MCw3IEBAIHZv
aWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMmIHN0CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQog
Ci12b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQordm9pZCBUaGVtZU1hYzo6cGFp
bnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rv
ciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBD
aGVja2JveFBhcnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRl
eCA1NGQ5Yzg1N2RmNDAyYjgyZDdhN2QxMzBmOGY3NjE4NWUyYmQ3OWFhLi5iMzBmZDgxMzQzYzA2
YWNkODliYThmOWUyZjY3NDM3NmY2ZWFkMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0KQEAgLTE4NSw5ICsxODUsOSBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0
ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKK3ZvaWQgV2lkZ2V0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgaWYgKHAtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBOU1ZpZXcgKnZpZXcgPSBnZXRPdXRlclZpZXcoKTsKIApAQCAtMjI5LDcg
KzIyOSw3IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IElu
dFJlY3QmIHIpCiAgICAgICAgICAgICBzY3JvbGxWaWV3ID0gMDsKICAgICB9CiAKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHAucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQVNTRVJUKGNnQ29udGV4
dCA9PSBbY3VycmVudENvbnRleHQgZ3JhcGhpY3NQb3J0XSk7CiAgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShjZ0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDNiNDk3NjYwY2M5NjhiMzAxZGNmMDY3ZTQzZjhlYzU4ODk3MWQxMjYuLjQ2
YTdjYjcxMTIyYTA0ZTI2YjZiYTJlMTYxOTAzN2E4YmFkOGQ3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikKIHsKIH0K
IAotdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaAppbmRleCAxYzFmMjE4MmU5NTkzN2M3YWM0
NWJiNTg3NGJlZGZjMGIwY2QxMmIwLi4wMzI2MWZhYzYyZjQzZmM4YWEyYzBkNzEwNzc4MzY2MjA3
YTUzYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb25NZWRpYVRpbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IDRkZjdlNWViM2Ux
Mjg4MjY0MTNjNDUwY2IzZjAwY2NlN2JhM2VkYTIuLjY0NDQ4OTM4ZjNhOWRmYmI2ZGQ5NDIzMDlj
ZTQ4OTYxYmIyMjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgfQogCiAgICAgaWYgKG1fc2Ny
b2xsYmFyKQotICAgICAgICBtX3Njcm9sbGJhci0+cGFpbnQoJmNvbnRleHQsIGRhbWFnZVJlY3Qp
OworICAgICAgICBtX3Njcm9sbGJhci0+cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiAKICAg
ICBIV25kREMgaFduZERDOwogICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogaFduZERDLnNl
dEhXbmQobV9wb3B1cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lV2luLmNwcAppbmRleCBjNjU0YWIxMDMxOWY3MTUwNGQxNGY3ZTIxYWU3ZDE1NjVh
NGYwOTBiLi4zYTA5NDQ0MjNiNjg0YjgzODFiN2E0M2E5YTg5NmIzOWFmOWI0MzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcgogICAgIGlmIChzY3JvbGxi
YXJUaGVtZSkKICAgICAgICAgYWxwaGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5
VHJhbnNwYXJlbnQoc2Nyb2xsYmFyVGhlbWUsIHBhcnQsIHN0YXRlKTsKIAotICAgIExvY2FsV2lu
ZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOwor
ICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdCwgYWxw
aGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAKICAgICBpZiAoc2Nyb2xsYmFy
VGhlbWUpCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGIKICAgICBp
ZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3Vu
ZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBTUF9CVVRUT04sIHhwU3RhdGUp
OwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVj
dCwgYWxwaGFCbGVuZCk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChj
b250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAg
ICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xs
YmFyVGhlbWUsIHdpbmRvd3NDb250ZXh0LmhkYygpLCBTUF9CVVRUT04sIHhwU3RhdGUsICZ0aGVt
ZVJlY3QsIDApOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhCiAg
ICAgYm9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQogICAg
ICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChz
Y3JvbGxiYXJUaGVtZSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7Ci0gICAgTG9jYWxXaW5k
b3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7Cisg
ICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBo
YUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhl
bWUpIHsKICAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgd2luZG93
c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVy
ZXIuY3BwCmluZGV4IDk0ZTA5NDkxMGUyOGYzMDllMDNjNWUwMzMzZWFiMWQ0ZjQ4ZjBjNmMuLmRm
NTdlNWEzZTZkOTI3MmEwYTljMmVmOTg3MTI5OTNlZThhZjM5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpZiAoaXNPbmVMZWZ0VG9SaWdo
dFJ1bihydW4pKQotICAgICAgICBmb250LmRyYXdUZXh0KCZjb250ZXh0LCBydW4sIHBvaW50KTsK
KyAgICAgICAgZm9udC5kcmF3VGV4dChjb250ZXh0LCBydW4sIHBvaW50KTsKICAgICBlbHNlCiAg
ICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgcG9pbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IDI3MWUzNmQ1Y2IzMTBmNWY2
ODg3ZGQyMzc5MGE5YjZiYTQ2OGYwYTAuLjlhY2UxYTE0ODUyNDlkNzU2ZTFiZDNlMjJlN2UxNjA2
NDA1ZTlkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJz
b3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCA0NjlmN2VmZWU4N2Y3
NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li4yZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQz
NGQ2YmZmZmRiNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBz
aXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAK
QEAgLTQyLDE0ICs0MiwxNCBAQCBFbGxpcHNpc0JveDo6RWxsaXBzaXNCb3goUmVuZGVyQmxvY2tG
bG93JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpcwogCiB2b2lkIEVsbGlw
c2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBDb2xvciB0
ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEZpbGxDb2xvcik7Ci0gICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LT5maWxsQ29s
b3IoKSkKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigp
KQorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xv
clNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYgKGxpbmVTdHls
ZS50ZXh0U2hhZG93KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KExheW91dFNpemUo
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkp
LAorICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhMYXlvdXRTaXplKGxpbmVTdHlsZS50ZXh0U2hh
ZG93KCktPngoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+eSgpKSwKICAgICAgICAgICAgIGxp
bmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5j
b2xvcigpLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1
ZTsKICAgICB9CkBAIC02MSwxOCArNjEsMTggQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAg
ICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUgdGV4dC4K
ICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xvcigpID8g
cGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tGbG93KCkuc2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFsaWQoKSAmJiBmb3JlZ3Jv
dW5kICE9IHRleHRDb2xvcikKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihmb3Jl
Z3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3Jy
ZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgotICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxp
bmVTdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50
T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkpKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHlsZSwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwg
eSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
KTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KLSAgICBpZiAodGV4
dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAodGV4dENv
bG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHRleHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICBpZiAoc2V0U2hhZG93
KQotICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOworICAgICAgICBjb250ZXh0LmNsZWFy
U2hhZG93KCk7CiAKICAgICBwYWludE1hcmt1cEJveChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBs
aW5lVG9wLCBsaW5lQm90dG9tLCBsaW5lU3R5bGUpOwogfQpAQCAtMTE5LDcgKzExOSw3IEBAIElu
dFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QoKQogICAgIHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQogCi12b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVj
dGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkK
K3ZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIENvbG9yIHRleHRDb2xvciA9IHN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBDb2xvciBj
ID0gYmxvY2tGbG93KCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgICAgICBjID0gQ29sb3IoMHhmZiAt
IGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAgICBjb25z
dCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdh
eXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAg
IExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQu
eCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCBy
b290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0
KHJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0
QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5o
CmluZGV4IDI3ZTkxMmZmZmEwM2E1NGUxMjRkOWJkMzJmYzcxOTE2NjMxY2IyNTEuLjQ0YzA1ZGFm
MWFkMjRiY2ZiMDhmYzNjNDljZGExNGFiNzZjZjExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWlu
dE1hcmt1cEJveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBjb25zdCBSZW5kZXJTdHls
ZSYpOwogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0KLSAgICB2b2lkIHBhaW50U2VsZWN0aW9u
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZv
bnRDYXNjYWRlJik7CiAgICAgSW5saW5lQm94KiBtYXJrdXBCb3goKSBjb25zdDsKIAogICAgIGJv
b2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDYyZGFjNGI4YjQ2MjIzODdiOGRjY2U3
OGZlYTIwOTJkMjE0NDBlNWMuLjU3NTdlOWE4NTE4M2MwNzY4MGJhMTlmNGE2YTMyMWU2NTc2ZDFj
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcApAQCAtODAsNyArODAsNyBAQCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZpbHRlckVm
ZmVjdFJlbmRlcmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
aW5wdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJjZUltYWdl
KCktPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291cmNlSW1h
Z2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKQEAgLTQxNyw3ICs0MTcsNyBA
QCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFw
cGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0KQordm9p
ZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3ND
b250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1faGF2ZUZpbHRlckVm
ZmVjdCAmJiBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigpKTsKICAgICBGaWx0ZXJFZmZl
Y3RSZW5kZXJlciogZmlsdGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKTsKQEAg
LTQyOSw3ICs0MjksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZp
bHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQwogICAgIExheW91dFJlY3Qg
ZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3QoKTsKICAgICBkZXN0UmVjdC5tb3ZlKG1fcGFp
bnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CiAKLSAgICBkZXN0aW5hdGlvbkNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5k
ZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAorICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwKICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0
UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCmluZGV4IGJl
YjNmNzdjNDhhMGEyYjRmYTEzYjZlNjQ1NmNiM2E3N2E5YjBmNjguLjNlMTMzN2QzZDE1Zjc2MTE5
MzRkNWM2ZDU3NmE5ZjE4MjAxNDc4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcHJlcGFyZUZpbHRlckVmZmVjdChSZW5kZXJMYXllciosIGNvbnN0IExheW91dFJlY3Qm
IGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgYm9vbCBiZWdpbkZpbHRlckVmZmVjdCgpOwot
ICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNv
bnRleHQpOworICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0
aW5hdGlvbkNvbnRleHQpOwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4
dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggYzRhNmU0M2M2NzIyZjQxMGY3YmY5MGQxMDhiOGM1NjBj
MzIwMDA5Yy4uNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFiN2QxMzRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9u
ZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBx
dWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5p
c1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLmltYWdlUmVu
ZGVyaW5nKCkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAg
Ym9vbCBjb250ZXh0SXNTY2FsZWQgPSAhY3VycmVudFRyYW5zZm9ybS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpOwogICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIHNpemUgPT0g
aW1hZ2VTaXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVjdC4gSWYg
d2UgaGFkIGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoaXMg
b2JqZWN0IGZyb20gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNWQ3ZWU5MmY1N2NlYTM2YmE2NzYzMzliODY4
NmZjYTM1Y2JhNWJkLi5kMTRkYzQ5YWE3OWFmMzE1ZGFjOGUxZDUxMjFjMzQwMjYwZWY2NWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihjb25zdCBSZW5kZXJWaWV3
Jik7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCos
IFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3Qg
TGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3ND
b250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVy
LCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAppbmRleCAzNTliZWQ2NTYzMWYxN2RmODU0OWI3ZWMzNDYwYThiMDkzZmUwMWY5Li5hODc0Y2Rj
MWM3ZDFkMWU3OGU0Yjc3NjA5OWVjY2EwYzhiNGIzYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMjIwLDggKzEyMjAsOCBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBDb2xvciYgYywgYwogICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMs
IHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykK
ICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFrKCkgPT0g
RENMT05FKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlv
dXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwg
cmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICB9CiAjZW5kaWYKQEAgLTEy
NTIsOCArMTI1Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAgICAgICAgIExheW91dFVu
aXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBMYXlv
dXRVbml0KHdpZHRoKCkpOwogICAgICAgICBMYXlvdXRVbml0IHN0cmlwSGVpZ2h0ID0gaXNIb3Jp
em9udGFsKCkgPyBMYXlvdXRVbml0KGhlaWdodCgpKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCi0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlvdXRSZWN0KHJlY3Qu
eCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdp
ZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwg
c3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0
LnNpemUoKSwgb3ApOwogICAgIH0KIH0KQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGFkanVzdGVk
UGFpbnRvZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0UmVjdCBw
YWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRvZmZzZXQsIGZyYW1lUmVjdC5zaXpl
KCkpOwogICAgIC8vIFNoYWRvdyBjb21lcyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3Jv
dW5kIGFuZCBib3JkZXIuCiAgICAgaWYgKCFyZW5kZXJlcigpLmJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWROb25l
LCB0aGlzKSkKQEAgLTEzODIsOCArMTM4Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAg
ICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVj
dC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgICAgIExheW91dFJlY3QgY2xp
cFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAodGhpcywgYm9yZGVySW1hZ2Us
IHBhaW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNv
bnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRCb3JkZXIocGFp
bnRJbmZvLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdo
dCksIGxpbmVTdHlsZSk7CiAgICAgfQogfQpAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnMKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
RGVzdGluYXRpb25JbjsKICAgICAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikgewotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVEZXN0aW5hdGlvbkluKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7CiAgICAg
ICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNDI3LDE0ICsxNDI3LDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNr
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAg
Ym9vbCBoYXNCb3hJbWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNhblJlbmRl
cigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAg
aWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5pc0xvYWRlZCgpKSB7CiAgICAgICAg
IGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCBwYWlu
dCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gbG9hZC4KICAgICB9CiAK
ICAgICAvLyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2UgYXJlIHRoZSBvbmx5IGJveCBmb3Ig
dGhpcyBvYmplY3QuICBJbiB0aG9zZQogICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUgY2FsbCB0
byBkcmF3IGlzIHJlcXVpcmVkLgogICAgIGlmICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVC
b3goKSkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZv
LmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUo
KSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7
CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4
dCgpLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpLCBy
ZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXNrIGltYWdlIHRoYXQgc3BhbnMgbXVs
dGlwbGUgbGluZXMuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IF90eCBhbmQgX3R5IGJ5
IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlvdXMgbGluZXMuCkBAIC0xNDUwLDEzICsxNDUwLDEzIEBA
IHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQg
PSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRo
OwogCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUlt
YWdlU3RyaXAodGhpcywgbWFza05pbmVQaWVjZUltYWdlLCBwYWludFJlY3QpOwotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwotICAgICAgICByZW5k
ZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3Qo
c3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS5zdHls
ZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3QpOworICAgICAgICByZW5kZXJlcigp
LnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQoKSwgTGF5b3V0UmVjdChzdHJp
cFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigpLnN0eWxlKCks
IG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAgICBpZiAo
cHVzaFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3Bh
cmVuY3lMYXllcigpOwogfQogCiBJbmxpbmVCb3gqIElubGluZUZsb3dCb3g6OmZpcnN0TGVhZkNo
aWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA5ZTZkMmNlYzBmZDQ1NDNhNjdhYTc4ZmJjMmQ3MWQyZGY4MjQwYjhiLi5mMzUxM2RjM2Q1
MmNjN2M1NGRhZDcwYjQ5YTExYzJjZmYxNGQ2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0g
dGhpcy0+bGluZVN0eWxlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgK
aW5kZXggMTViMWYyNDEyODI3NDRkYzViZDZkYjVjMmY5Y2RmMTc4ODViODk4NC4uZGRiYzkzMzUw
YTczMmEzMTU1Yzc3NGVjYTI4NDk0NDNjNGI0MzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YWludEluZm8uaApAQCAtNDksMjAgKzQ5LDMxIEBAIHR5cGVkZWYgSGFzaE1hcDxPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAgKiAodHh8
dHkpIGlzIHRoZSBjYWxjdWxhdGVkIHBvc2l0aW9uIG9mIHRoZSBwYXJlbnQKICAqLwogc3RydWN0
IFBhaW50SW5mbyB7Ci0gICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhh
dmlvciBuZXdQYWludEJlaGF2aW9yLAorICAgIFBhaW50SW5mbyhHcmFwaGljc0NvbnRleHQmIG5l
d0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIG5ld1JlY3QsIFBhaW50UGhhc2UgbmV3UGhhc2Us
IFBhaW50QmVoYXZpb3IgbmV3UGFpbnRCZWhhdmlvciwKICAgICAgICAgUmVuZGVyT2JqZWN0KiBu
ZXdTdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4q
IG5ld091dGxpbmVPYmplY3RzID0gbnVsbHB0ciwKICAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0
TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogbmV3UGFpbnRDb250YWluZXIgPSBudWxscHRyKQotICAgICAgICAgICAgOiBjb250
ZXh0KG5ld0NvbnRleHQpCi0gICAgICAgICAgICAsIHJlY3QobmV3UmVjdCkKKyAgICAgICAgICAg
IDogcmVjdChuZXdSZWN0KQogICAgICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKICAgICAgICAg
ICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9yKQogICAgICAgICAgICAgLCBzdWJ0
cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCiAgICAgICAgICAgICAsIG91dGxpbmVP
YmplY3RzKG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAgICAgLCBvdmVybGFwVGVzdFJlcXVl
c3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAgICAgICAsIHBhaW50Q29udGFpbmVyKG5l
d1BhaW50Q29udGFpbmVyKQorICAgICAgICAgICAgLCBtX2NvbnRleHQoJm5ld0NvbnRleHQpCiAg
ICAgewogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuICptX2NvbnRleHQ7
CisgICAgfQorCisgICAgdm9pZCBzZXRDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dCA9ICZjb250ZXh0OworICAgIH0KKwogICAgIHZvaWQg
dXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiAgICAgewogICAgICAgICBpZiAoIXN1YnRyZWVQYWludFJvb3QpCkBAIC05Myw3ICsx
MDQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKGxvY2FsVG9BbmNlc3RvclRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybSk7CisgICAgICAgIGNvbnRl
eHQoKS5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsKIAogICAgICAgICBpZiAo
cmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMsNyArMTE0LDYg
QEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlvdXRTaXplKHRy
YW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dDsKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0xMTEsNiArMTIxLDkgQEAgc3RydWN0IFBh
aW50SW5mbyB7CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG91dGxpbmVPYmplY3Rz
OyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBzaG91bGQgYmUgcGFpbnRlZCBieSBhIGJs
b2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVy
bGFwVGVzdFJlcXVlc3RzOwogICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50
Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUgY3VycmVu
dCBwYWludGluZworCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCogbV9jb250ZXh0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggOWFkZTc5NGE1N2YxZDAwY2E3NDY1YjRjYzNmZDBmOGM4NjAzYzUy
YS4uODY0OTZkZmE5Yjc1MGEzOWZhYzc3NWM5ZDExZGM5NjRjOTJkYmRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBXZSBwYWludCBhZnRlciB3ZSBwYWlu
dGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3aWxsCiAg
ICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAgICBpZiAoKHBoYXNlID09
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpICYm
ICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKLSAgICAgICAgbGF5ZXIoKS0+
cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQo
YWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7Cisg
ICAgICAgIGxheWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9scyhwYWludEluZm8uY29udGV4dCgp
LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBh
aW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGVudHMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTE1
MTYsOSArMTUxNiw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q2FyZXQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAoY2FyZXRQ
YWludGVyID09IHRoaXMgJiYgKGlzQ29udGVudEVkaXRhYmxlIHx8IGNhcmV0QnJvd3NpbmcpKSB7
CiAgICAgICAgIGlmICh0eXBlID09IEN1cnNvckNhcmV0KQotICAgICAgICAgICAgZnJhbWUoKS5z
ZWxlY3Rpb24oKS5wYWludENhcmV0KHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNldCwgcGFp
bnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5zZWxlY3Rpb24oKS5wYWludENhcmV0
KHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGZyYW1lKCkucGFnZSgpLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkucGFpbnREcmFnQ2FyZXQoJmZyYW1lKCksIHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNl
dCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRyYWdDYXJl
dENvbnRyb2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNvbnRleHQo
KSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKQEAgLTE1MzgsMTYg
KzE1MzgsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgICAgICAgICAvLyBv
dmVyZmxvd3MgcmVnaW9uIFggYW5kIGlzIGFuIHVuc3BsaXR0YWJsZSBlbGVtZW50IChsaWtlIGFu
IGltYWdlKS4KICAgICAgICAgICAgICAgICAvLyBUaGUgc2FtZSBhcHBsaWVzIGZvciBhIGJveCBv
dmVyZmxvd2luZyB0aGUgdG9wIG9mIHJlZ2lvbiBYIHdoZW4gdGhhdCBib3ggaXMgYWxzbyBmcmFn
bWVudGVkIGluIHJlZ2lvbiBYLTEuCiAKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwog
ICAgICAgICAgICAgICAgIGRpZENsaXBUb1JlZ2lvbiA9IHRydWU7CiAKLSAgICAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcChkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+
KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25zQ2xpcFJlY3RGb3JCb3hJbk5h
bWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21lbnQpKTsKKyAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhy
ZWFkPigqcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS5kZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94
SW5OYW1lZEZsb3dGcmFnbWVudCgqdGhpcywgKm5hbWVkRmxvd0ZyYWdtZW50KSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChkaWRDbGlwVG9SZWdpb24p
Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rpb24o
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAg
TGF5b3V0VW5pdCBsYXN0VG9wID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBsYXN0TGVmdCA9IGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KCp0aGlzLCBsYXN0VG9wLCBjYWNoZSk7CiAgICAgICAg
IExheW91dFVuaXQgbGFzdFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KCp0aGlz
LCBsYXN0VG9wLCBjYWNoZSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAgTGF5b3V0
UmVjdCBnYXBSZWN0c0JvdW5kcyA9IHNlbGVjdGlvbkdhcHMoKnRoaXMsIHBhaW50T2Zmc2V0LCBM
YXlvdXRTaXplKCksIGxhc3RUb3AsIGxhc3RMZWZ0LCBsYXN0UmlnaHQsIGNhY2hlLCAmcGFpbnRJ
bmZvKTsKICAgICAgICAgaWYgKCFnYXBSZWN0c0JvdW5kcy5pc0VtcHR5KCkpIHsKQEAgLTE3OTYs
NyArMTc5Niw3IEBAIHN0YXRpYyB2b2lkIGNsaXBPdXRQb3NpdGlvbmVkT2JqZWN0cyhjb25zdCBQ
YWludEluZm8qIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pCiAgICAgVHJhY2tlZFJlbmRlcmVy
TGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3RzLT5lbmQo
KTsKICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgUmVuZGVyQm94KiByID0gKml0OwotICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmNsaXBP
dXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgpLCByLT53
aWR0aCgpLCByLT5oZWlnaHQoKSkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5jbGlw
T3V0KEludFJlY3Qob2Zmc2V0LngoKSArIHItPngoKSwgb2Zmc2V0LnkoKSArIHItPnkoKSwgci0+
d2lkdGgoKSwgci0+aGVpZ2h0KCkpKTsKICAgICB9CiB9CiAKQEAgLTE5NjYsNyArMTk2Niw3IEBA
IExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290
QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9u
LCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2lj
YWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRl
eHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwog
ICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJs
b2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2lj
YWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVj
dChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9n
aWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAg
cGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJl
Y3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBw
YWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJl
Y3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVy
biBnYXBSZWN0OwogfQogCkBAIC0yMDAwLDcgKzIwMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJs
b2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTAogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9Q
aHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290Qmxv
Y2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmlu
ZGV4IDY3ZDcyMTQwNDJiMmE3NTJkNzI5NDA0OTg3OGY0NWE5MjlmMTY0YmUuLmUxZjNmMTdiOTBl
MDQ5ODlhMTQyYTc0ZWNmNTRkN2U5ZTdjYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmCiB7CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMocGFpbnRJ
bmZvLCBwb2ludCk7CiAgICAgCi0gICAgaWYgKCFtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSB8fCBw
YWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbXVsdGlDb2x1
bW5GbG93VGhyZWFkKCkgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBvdXIgY2hpbGRyZW4gYW5k
IHBhaW50IHRoZSBjb2x1bW4gcnVsZXMgYXMgbmVlZGVkLgpAQCAtMjE5Niw3ICsyMTk2LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2sm
IHJvb3RCbG9jaywgY29uc3QgUGFpbnQKICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+
cmVuZGVyZXIoKS53aWR0aCgpLCBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5oZWlnaHQoKSk7
CiAgICAgICAgICAgICByb290QmxvY2suZmxpcEZvcldyaXRpbmdNb2RlKGZsb2F0Qm94KTsKICAg
ICAgICAgICAgIGZsb2F0Qm94Lm1vdmUocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi54KCksIHJv
b3RCbG9ja1BoeXNpY2FsUG9zaXRpb24ueSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby0+Y29u
dGV4dC0+Y2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOworICAgICAgICAgICAgcGFp
bnRJbmZvLT5jb250ZXh0KCkuY2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCBhZTZhZWE1YjVkNzgxN2E3M2Q5OTEzODBmMGRjMDcyOGVlNTdlZTIyLi5mZjE5MWVhODk5ZDE5
MDkxZGIwYTkyZmM4NTQ0Y2IwNmQzNmJlNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMTI0Miw5ICsxMjQyLDkgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9v
dEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgcGFpbnRGaWxs
TGF5ZXJzKHBhaW50SW5mbywgYmdDb2xvciwgYmdMYXllciwgdmlldygpLmJhY2tncm91bmRSZWN0
KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIsICZyb290QmFja2dy
b3VuZFJlbmRlcmVyKTsKIH0KIAotQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKK0JhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWluZUJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWROb25lOwog
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKQEAgLTEyNTIs
NyArMTI1Miw3IEBAIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvCiAgICAgaWYgKCFzdHlsZS5oYXNC
YWNrZ3JvdW5kKCkgfHwgIXN0eWxlLmhhc0JvcmRlcigpIHx8ICFzdHlsZS5oYXNCb3JkZXJSYWRp
dXMoKSB8fCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVSZW5kZXJlZCgpKQogICAgICAgICBy
ZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBj
b250ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4dC5nZXRD
VE0oKTsKICAgICBGbG9hdFNpemUgY29udGV4dFNjYWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0
bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKIAogICAgIC8v
IEJlY2F1c2UgUm91bmRlZFJlY3QgdXNlcyBJbnRSZWN0IGludGVybmFsbHkgdGhlIGluc2V0IGFw
cGxpZWQgYnkgdGhlIApAQCAtMTI5MywyMSArMTI5MywyMSBAQCB2b2lkIFJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaQogICAgICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHBhaW50UmVjdC54KCksIHBhaW50UmVj
dC55KCkgKyAodGhpcy0+aGVpZ2h0KCkgLSBoZWlnaHQpIC8gMiwgd2lkdGgsIGhlaWdodCk7IC8v
IFZlcnRpY2FsbHkgY2VudGVyIHRoZSBjaGVja2JveCwgbGlrZSBvbiBkZXNrdG9wCiAgICAgfQog
I2VuZGlmCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0gZGV0
ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBGSVhNRTog
U2hvdWxkIGV2ZW50dWFsbHkgZ2l2ZSB0aGUgdGhlbWUgY29udHJvbCBvdmVyIHdoZXRoZXIgdGhl
IGJveCBzaGFkb3cgc2hvdWxkIHBhaW50LCBzaW5jZSBjb250cm9scyBjb3VsZCBoYXZlCiAgICAg
Ly8gY3VzdG9tIHNoYWRvd3Mgb2YgdGhlaXIgb3duLgogICAgIGlmICghYm94U2hhZG93U2hvdWxk
QmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBibGVlZEF2b2lkYW5j
ZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgp
LCBOb3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAgICAgaWYgKGJsZWVkQXZv
aWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAg
IC8vIFRvIGF2b2lkIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJsZWVkaW5nIG91dCBiZWhpbmQgdGhl
IGJvcmRlciwgd2UnbGwgcmVuZGVyIGJhY2tncm91bmQgYW5kIGJvcmRlcgogICAgICAgICAvLyBp
bnRvIGEgdHJhbnNwYXJlbmN5IGxheWVyLCBhbmQgdGhlbiBjbGlwIHRoYXQgaW4gb25lIGdvICh3
aGljaCByZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBjbGlwIGJlZm9yZQogICAgICAgICAvLyBiZWdp
bm5pbmcgdGhlIGxheWVyKS4KICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVy
Rm9yKHBhaW50UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QpLnBpeGVs
U25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFu
Y2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgpAQCAtMTM0Miw3
ICsxMzQyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAgICAgcGFpbnRCb3JkZXIo
cGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKIAogICAgIGlm
IChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9p
ZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBib29sIFJlbmRlckJveDo6YmFja2dy
b3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFz
ayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNr
IHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQs
IHNpemUoKSk7CkBAIC0xNTI4LDExICsxNTI4LDExIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludE1h
c2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IAogdm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBh
aW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUo
KSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50
UmVjdCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJs
YWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpwYWludE1h
c2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBh
aW50UmVjdCkKQEAgLTE1NTcsMTggKzE1NTcsMTggQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFz
a0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEK
ICAgICAgICAgaWYgKG1hc2tMYXllcnMpCiAgICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVk
ICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOwogCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVE
ZXN0aW5hdGlvbkluKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKDEpOwogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7
CiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJbWFnZXNMb2FkZWQpIHsKICAgICAgICAgcGFpbnRG
aWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS5tYXNrTGF5ZXJzKCksIHBhaW50
UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3ApOwotICAgICAgICBwYWludE5p
bmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxl
KCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcGFpbnROaW5lUGllY2VJ
bWFnZShwYWludEluZm8uY29udGV4dCgpLCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxlKCkubWFz
a0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHB1c2hUcmFu
c3BhcmVuY3lMYXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0xNjE5LDE2ICsxNjE5LDEzIEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjLCBjb25zCiAgICAgICAgIGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKTsKICAgICB9
CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1
ZmZlciA9IGZhbHNlOwotCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKICAgICBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxkRHJhd0JhY2tncm91
bmRJblNlcGFyYXRlQnVmZmVyKSB7CiAgICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywg
YywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CiAgICAgICAgIGJhc2VCZ0NvbG9yVXNh
Z2UgPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcDsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KDEpOwogICAgIH0KIAogICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29uc3RfcmV2ZXJz
ZV9pdGVyYXRvciB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7CkBAIC0xNjM2LDcgKzE2MzMsNyBA
QCB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBDb2xvciYgYywgY29ucwogICAgICAgICBwYWludEZpbGxMYXllcihwYWludElu
Zm8sIGMsICppdCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBi
YXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlmIChzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJh
dGVCdWZmZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6
OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYg
YywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCkBA
IC0xNzY4LDEwICsxNzY1LDEwIEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgfQogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKGlzQ29u
dHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dD
bGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNl
U2NhbGVGYWN0b3IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkp
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgp
KSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcikp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3Jk
ZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkucGl4ZWxTbmFwcGVk
Um91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3
NzksNyArMTc3Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZv
JiBwYWludEluZm8sIFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFzZSwKIHsKICAgICBBU1NFUlQoaGFz
Q29udHJvbENsaXAoKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWxheWVyKCktPmlzU2VsZlBh
aW50aW5nTGF5ZXIoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICBpZiAob3JpZ2luYWxQaGFzZSA9
PSBQYWludFBoYXNlT3V0bGluZSkgewogICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBo
YXNlU2VsZk91dGxpbmU7CiAgICAgICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgYWNjdW11bGF0
ZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDU1MTg4YzYx
NjlkNDdmOTMwM2JkZjE2MWFmMjVhODJjOWQyZjk4YjkuLjE2ZDUxZDk3ZWZkNWFmZThlMWE3ZTM2
ZjdkODI0N2Y4ZjBiZGEwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTY0MCw3ICs2NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29u
dGV4dCopIGNvbnN0OworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAgYm9vbCBi
YWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVy
UmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMWRjZmUxMjJmMDI3NzIyOTFiN2ExN2I4
MzY0YTg3MGRiYTJiZDIyZS4uZmNhOTdhZGYyNWJkMTcxOTJkOTBmYTVjNDc2ZjMzZGEzYmEwNWNj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3Vz
cGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNw
ZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBJbWFnZSogaW1h
Z2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplKQogewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigp
LnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6
ZSk7CiB9CkBAIC01MTgsMzQgKzUxOCwzNCBAQCBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcgogICAg
IHJldHVybiBib3JkZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3Vu
ZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjbGlwUm91bmRlZElubmVyUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3Qp
CiB7CiAgICAgaWYgKGNsaXBSZWN0LmlzUmVuZGVyYWJsZSgpKQotICAgICAgICBjb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVj
dChjbGlwUmVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJvdW5kZWQg
cmVjdCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFraW5nIHN1
cmUgd2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAoIWNsaXBS
ZWN0LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0
b21SaWdodCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRvcENvcm5lcihj
bGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgpLCByZWN0Lm1heFgoKSAtIGNs
aXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJlY3QucmVjdCgpLnkoKSk7CiAg
ICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJSYWRpaTsKICAgICAg
ICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJlY3QucmFkaWkoKS50b3BMZWZ0
KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAgY29udGV4dC5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7
CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIocmVjdC54KCksIHJlY3QueSgp
LCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZ
KCkgLSByZWN0LnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBib3R0
b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJvdHRvbVJp
Z2h0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3R0b21Db3JuZXIsIGJvdHRvbUNv
cm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfSAK
IAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQoKS5pc0VtcHR5KCkgfHwg
IWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
RmxvYXRSZWN0IHRvcENvcm5lcihyZWN0LngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgY2xpcFJl
Y3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJlY3Qo
KS55KCkpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgdG9wQ29ybmVyUmFk
aWk7CiAgICAgICAgICAgICB0b3BDb3JuZXJSYWRpaS5zZXRUb3BSaWdodChjbGlwUmVjdC5yYWRp
aSgpLnRvcFJpZ2h0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAg
Y29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENv
cm5lclJhZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIoY2xpcFJl
Y3QucmVjdCgpLngoKSwgcmVjdC55KCksIHJlY3QubWF4WCgpIC0gY2xpcFJlY3QucmVjdCgpLngo
KSwgY2xpcFJlY3QucmVjdCgpLm1heFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAgIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpIGJvdHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAgYm90dG9t
Q29ybmVyUmFkaWkuc2V0Qm90dG9tTGVmdChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChi
b3R0b21Db3JuZXIsIGJvdHRvbUNvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU4MSw3ICs1ODEsNyBAQCBSb3VuZGVk
UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRG
b3JCbGVlZEF2b2lkYW5jZQogICAgIHJldHVybiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoYm9y
ZGVyUmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotc3RhdGljIHZv
aWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHN0eWxlLT5ib3hTaGFkb3coKTsKICAgICB3
aGlsZSAoYm94U2hhZG93LT5zdHlsZSgpICE9IE5vcm1hbCkKQEAgLTU4OSwxNSArNTg5LDE1IEBA
IHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGJv
eFNoYWRvdy0+eCgpLCBib3hTaGFkb3ctPnkoKSk7CiAgICAgaWYgKCFib3hTaGFkb3ctPmlzV2Vi
a2l0Qm94U2hhZG93KCkpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hhZG93
LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJv
eFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsK
IH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZs
b3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCiB7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7
Ci0gICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVj
dC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOworICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC54
KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4dCB0byB0aGUgY2xp
cC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFpbnQgcGhhc2UgdGhh
dCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQganVz
dCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCkBAIC02MTgsOCArNjE4LDggQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZm
ZXIqIG1hc2tJbWFnZSwgY29uc3QKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAog
ICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0Jv
eCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
UmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdl
IGJhc2VCZ0NvbG9yVXNhZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBy
ZWN0LmlzRW1wdHkoKSkKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCByZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbmNsdWRlTGVmdEVkZ2UgPSBi
b3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSA6IHRydWU7CkBAIC02NzIsMzIgKzY3
MiwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHJlY3QubG9jYXRpb24oKSwgYmxl
ZWRBdm9pZGFuY2UsIGJveCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2hh
ZG93U3RhdGVTYXZlcigqY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVy
KGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAg
IGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAgICAgICBh
cHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoY29udGV4dCwgJnN0eWxlKCkpOwogCiAgICAgICAg
IGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVl
ZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBp
eGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRB
dm9pZGFuY2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsCisg
ICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91
bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxl
ZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwKICAgICAgICAgICAgICAgICBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmco
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYgKHBpeGVsU25hcHBlZEJvcmRlci5p
c1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3Qo
cGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QoY29udGV4dCwgcGl4ZWxT
bmFwcGVkUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3QoKSwgYmdD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQucmVz
dG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBCb3JkZXJGaWxsQm94IHJhZGl1cyBjbGlwcGluZyBpcyB0YWtlbiBjYXJlIG9mIGJ5
IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyCiAgICAgYm9vbCBjbGlwVG9Cb3Jk
ZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmICEoaXNCb3JkZXJGaWxsICYmIGJsZWVkQXZv
aWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBUb0JvcmRlclN0YXRlU2F2ZXIoKmNvbnRleHQsIGNs
aXBUb0JvcmRlclJhZGl1cyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwVG9C
b3JkZXJTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CiAgICAgaWYgKGNs
aXBUb0JvcmRlclJhZGl1cykgewotICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRl
ckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpj
b250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLCBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KHJlY3QsIGJv
eCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGlu
Y2x1ZGVSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRlckZp
bGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRl
eHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0RWRnZSwg
aW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QocmVjdCwgYm94LCBi
b3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVk
ZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBjb250ZW50
IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBDb250
ZW50RmlsbEJveCkgewpAQCAtNzE0LDEyICs3MTQsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y28KICAgICBMYXlvdXRVbml0IHBMZWZ0ID0gaW5jbHVkZUxlZnRFZGdlID8gcGFkZGluZ0xlZnQo
KSA6IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHBSaWdodCA9IGluY2x1ZGVSaWdodEVk
Z2UgPyBwYWRkaW5nUmlnaHQoKSA6IExheW91dFVuaXQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlwcGVk
V2l0aExvY2FsU2Nyb2xsaW5nKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBX
aXRoU2Nyb2xsaW5nU3RhdGVTYXZlcihjb250ZXh0LCBjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5n
KTsKICAgICBMYXlvdXRSZWN0IHNjcm9sbGVkUGFpbnRSZWN0ID0gcmVjdDsKICAgICBpZiAoY2xp
cHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewogICAgICAgICAvLyBDbGlwIHRvIHRoZSBvdmVyZmxv
dyBhcmVhLgogICAgICAgICBhdXRvJiB0aGlzQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhp
cyk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0KHJlY3Qu
bG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKKyAgICAgICAg
Y29udGV4dC5jbGlwKHRoaXNCb3gub3ZlcmZsb3dDbGlwUmVjdChyZWN0LmxvY2F0aW9uKCksIGN1
cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBB
ZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQgYm94IHdp
dGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSB0aGlzQm94
LnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LnNldEhlaWdodChib3JkZXJU
b3AoKSArIGxheWVyKCktPnNjcm9sbEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCkpOwogICAgIH0K
ICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGJhY2tncm91bmRDbGlwU3RhdGVT
YXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFj
a2dyb3VuZENsaXBTdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0OwogCkBAIC03
NDEsNyArNzQxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBz
Y3JvbGxlZFBhaW50UmVjdC53aWR0aCgpIC0gYkxlZnQgLSBiUmlnaHQgLSAoaW5jbHVkZVBhZGRp
bmcgPyBwTGVmdCArIHBSaWdodCA6IExheW91dFVuaXQoKSksCiAgICAgICAgICAgICAgICAgc2Ny
b2xsZWRQYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpIC0g
KGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpIDogTGF5b3V0
VW5pdCgpKSk7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXAoY2xpcFJlY3QpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChiZ0xheWVyLT5jbGlw
KCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0
IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byBjbGlwIGJhY2tncm91bmQgZHJh
d2luZy4KQEAgLTc1MSwxNSArNzUxLDE1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAg
ICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwog
CiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IGNv
bnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAgICAgICAg
bWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUo
KSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gs
IHNjcm9sbGVkUGFpbnRSZWN0KTsKIAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVlbiBjcmVh
dGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNrZ3JvdW5k
Q2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlwKG1hc2tSZWN0KTsK
LSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29u
dGV4dC5jbGlwKG1hc2tSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxh
eWVyKDEpOwogICAgIH0KIAogICAgIC8vIE9ubHkgZmlsbCB3aXRoIGEgYmFzZSBjb2xvciAoZS5n
Liwgd2hpdGUpIGlmIHdlJ3JlIHRoZSByb290IGRvY3VtZW50LCBzaW5jZSBpZnJhbWVzL2ZyYW1l
cyB3aXRoCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNh
dmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKGNvbnRl
eHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAgICAgICBp
ZiAoYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAg
IGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUoKSk7CiAKQEAgLTgx
NywxMiArODE3LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAg
aWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgICAg
ICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNl
IGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxwaGEoKSkgewotICAgICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/
IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiZ0Nv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21w
b3NpdGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChz
aG91bGRDbGVhckJhY2tncm91bmQpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xlYXJSZWN0
KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xl
YXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC04MzQsMTcgKzgzNCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
ID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9y
QmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0
aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNs
aWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgp
ID09IE1hc2tMdW1pbmFuY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNl
TWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOwogICAgICAg
ICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAg
ICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3Bh
Y2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVz
dFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRy
eS50aWxlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+
YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5
U2NhbGluZykpOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQo
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9p
bnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgSW1hZ2VQ
YWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKLSAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAgICAgICBj
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tSZWN0LCBD
b21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOwogICAgIH0KIH0KIApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE8KICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRlc3RSZWN0KCk7CiB9CiAKLWJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwKK2Jvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1h
Z2UoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG5pbmVQaWVjZUltYWdl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBTdHlsZUltYWdlKiBzdHlsZUltYWdlID0g
bmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsKQEAgLTE0MjYsNyArMTQyNiw3IEBAIHN0YXRpYyBib29s
IGpvaW5SZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNv
bnN0IEJvcmRlckVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgY29uc3QgTGF5b3V0UmVj
dCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRl
IGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0
aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBh
bnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTQ0NCw3ICsxNDQ0
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIGNvbnN0IENvbG9yJiBjb2xvclRvUGFp
bnQgPSBvdmVycmlkZUNvbG9yID8gKm92ZXJyaWRlQ29sb3IgOiBlZGdlVG9SZW5kZXIuY29sb3Io
KTsKIAogICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgIGlmIChpbm5lckJv
cmRlci5pc1JlbmRlcmFibGUoKSkKICAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihn
cmFwaGljc0NvbnRleHQsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZSwgYWRqYWNlbnRT
aWRlMVN0eWxlc01hdGNoLCBhZGphY2VudFNpZGUyU3R5bGVzTWF0Y2gpOwogICAgICAgICBlbHNl
CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIGJv
b2wgY2xpcEFkamFjZW50U2lkZTIgPSBjb2xvck5lZWRzQW50aUFsaWFzQXRDb3JuZXIoc2lkZSwg
YWRqYWNlbnRTaWRlMiwgZWRnZXMpICYmIG1pdHJlQWRqYWNlbnRTaWRlMjsKICAgICAgICAgYm9v
bCBzaG91bGRDbGlwID0gY2xpcEZvclN0eWxlIHx8IGNsaXBBZGphY2VudFNpZGUxIHx8IGNsaXBB
ZGphY2VudFNpZGUyOwogICAgICAgICAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBjbGlwU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBzaG91bGRDbGlwKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQs
IHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgYm9v
bCBhbGlhc0FkamFjZW50U2lkZTEgPSBjbGlwQWRqYWNlbnRTaWRlMSB8fCAoY2xpcEZvclN0eWxl
ICYmIG1pdHJlQWRqYWNlbnRTaWRlMSk7CiAgICAgICAgICAgICBib29sIGFsaWFzQWRqYWNlbnRT
aWRlMiA9IGNsaXBBZGphY2VudFNpZGUyIHx8IChjbGlwRm9yU3R5bGUgJiYgbWl0cmVBZGphY2Vu
dFNpZGUyKTsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAg
ICAgICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMSA9IGZhbHNlOwogICAgICAgICAgICAgbWl0cmVB
ZGphY2VudFNpZGUyID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKCpncmFwaGljc0NvbnRleHQsIHNpZGVSZWN0LCBzaWRlLCBjb2xvclRvUGFpbnQsIGVkZ2VU
b1JlbmRlci5zdHlsZSgpLCBtaXRyZUFkamFjZW50U2lkZTEgPyBhZGphY2VudEVkZ2UxLndpZHRo
Rm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJlQWRqYWNlbnRTaWRlMiA/IGFkamFjZW50RWRnZTIud2lk
dGhGb3JQYWludGluZygpIDogMCwgYW50aWFsaWFzKTsKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9yVG9QYWludCwgZWRnZVRv
UmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFjZW50RWRnZTEud2lkdGhG
b3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRqYWNlbnRFZGdlMi53aWR0
aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOwogICAgIH0KIH0KIApAQCAtMTQ4OCw3ICsx
NDg4LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXIKICAgICByZXR1cm4gc2lkZVJlY3Q7CiB9
CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAog
ICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJvcmRlckVk
Z2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciog
b3ZlcnJpZGVDb2xvcikKIHsKQEAgLTE1MzYsNyArMTUzNiw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5z
bHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFk
anVzdG1lbnQsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVk
UmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQs
CiAgICAgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRnZXNUb0Ry
YXcsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlh
bGlhcykKIHsKICAgICAvLyB3aWxsQmVPdmVyZHJhd24gYXNzdW1lcyB0aGF0IHdlIGRyYXcgaW4g
b3JkZXI6IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC4KQEAgLTE1NjYsMTQgKzE1NjYsMTQgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIAogICAgICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxh
eWVyID0gaW5jbHVkZXNBZGphY2VudEVkZ2VzKGNvbW1vbkNvbG9yRWRnZVNldCkgJiYgY29tbW9u
Q29sb3IuaGFzQWxwaGEoKTsKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0g
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0Pihj
b21tb25Db2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgICAgICBjb21tb25Db2xvciA9IENv
bG9yKGNvbW1vbkNvbG9yLnJlZCgpLCBjb21tb25Db2xvci5ncmVlbigpLCBjb21tb25Db2xvci5i
bHVlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0Nv
bnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIGlubmVyQm9yZGVyQWRqdXN0
bWVudCwgZWRnZXMsIGNvbW1vbkNvbG9yRWRnZVNldCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMsICZjb21t
b25Db2xvcik7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
ICAgIAogICAgICAgICBlZGdlc1RvRHJhdyAmPSB+Y29tbW9uQ29sb3JFZGdlU2V0OwogICAgIH0K
QEAgLTE1ODIsOSArMTU4Miw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJh
bnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzCiB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKQogewotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0g
aW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW5m
by5jb250ZXh0KCk7CiAKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTE1OTcsNyArMTU5Nyw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwogICAgIEJv
cmRlckVkZ2U6OmdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBzdHlsZSwgZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3Qgb3V0ZXJCb3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVk
Qm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlciA9IHN0eWxlLmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpn
cmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlubmVyQm9y
ZGVyID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVz
dGVkRm9yQmxlZWRBdm9pZGFuY2UoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5j
ZSksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAog
ICAgIGJvb2wgaGF2ZUFscGhhQ29sb3IgPSBmYWxzZTsKICAgICBib29sIGhhdmVBbGxTb2xpZEVk
Z2VzID0gdHJ1ZTsKQEAgLTE3MDMsOSArMTcwMyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocGl4ZWxTbmFw
cGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBh
dGgocGF0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9F
VkVOT0REKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNb
Zmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfSAKICAgICAgICAgLy8gQXZvaWQgY3JlYXRpbmcgdHJhbnNwYXJlbnQgbGF5ZXJz
CkBAIC0xNzIwLDIzICsxNzIwLDIzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVSTyk7Cisg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJs
ZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBib29sIGNsaXBUb091dGVyQm9yZGVyID0gb3V0ZXJCb3JkZXIuaXNSb3Vu
ZGVkKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGlj
c0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlwVG9PdXRlckJvcmRlcik7CiAgICAg
aWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhlIGlubmVyIGFu
ZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tn
cm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZv
clBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIC8vIGlzUmVuZGVyYWJsZSgp
IGNoZWNrIGF2b2lkcyBpc3N1ZSBkZXNjcmliZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4Nzg3CiAgICAgICAgIC8vIFRoZSBpbnNpZGUgd2lsbCBiZSBjbGlw
cGVkIG91dCBsYXRlciAoaW4gY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKQogICAg
ICAgICBpZiAoaW5uZXJCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlci5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB9CiAKICAgICAv
LyBJZiBvbmx5IG9uZSBlZGdlIHZpc2libGUgYW50aWFsaWFzaW5nIGRvZXNuJ3QgY3JlYXRlIHNl
YW1zCkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAg
IHBhaW50Qm9yZGVyU2lkZXMoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIHVu
YWRqdXN0ZWRJbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywgZWRnZXNU
b0RyYXcsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29u
c3QgQm9yZGVyRWRnZSBlZGdlc1tdLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0Jv
eFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29uc3QgQm9yZGVy
RWRnZSBlZGdlc1tdLAogICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywg
Qm94U2lkZSBzaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yIGNvbG9yLCBFQm9y
ZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiB7CkBAIC0xNzY1LDE0ICsxNzY1LDE0IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERPVFRFRDoKICAgICBjYXNlIERBU0hF
RDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHls
ZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
Y29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgLy8gVGhlIHN0cm9rZSBpcyBk
b3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAgICAgIC8v
IG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBjbGlwcGVk
IG9mZi4gCiAgICAgICAgIC8vIFRoZSBleHRyYSBtdWx0aXBsaWVyIGlzIHNvIHRoYXQgdGhlIGNs
aXBwaW5nIG1hc2sgY2FuIGFudGlhbGlhcwogICAgICAgICAvLyB0aGUgZWRnZXMgdG8gcHJldmVu
dCBqYWdnaWVzLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhk
cmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0
cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0
cm9rZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoZHJhd1Ro
aWNrbmVzcyAqIDIgKiAxLjFmKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0
eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0cm9rZSk7
CiAKICAgICAgICAgLy8gSWYgdGhlIG51bWJlciBvZiBkYXNoZXMgdGhhdCBmaXQgaW4gdGhlIHBh
dGggaXMgb2RkIGFuZCBub24taW50ZWdyYWwgdGhlbiB3ZQogICAgICAgICAvLyB3aWxsIGhhdmUg
YW4gYXdrd2FyZGx5LXNpemVkIGRhc2ggYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4gVG8gdHJ5IHRv
IGF2b2lkIHRoYXQKQEAgLTE3OTUsMTMgKzE3OTUsMTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgICAgIERhc2hBcnJheSBsaW5lRGFzaDsKICAgICAgICAgICAgIGxpbmVEYXNo
LmFwcGVuZChkYXNoTGVuZ3RoKTsKICAgICAgICAgICAgIGxpbmVEYXNoLmFwcGVuZChnYXBMZW5n
dGgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRMaW5lRGFzaChsaW5lRGFzaCwg
ZGFzaExlbmd0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0TGluZURhc2gobGlu
ZURhc2gsIGRhc2hMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBGSVhN
RTogc3Ryb2tpbmcgdGhlIGJvcmRlciBwYXRoIGNhdXNlcyBpc3N1ZXMgd2l0aCB0aWdodCBjb3Ju
ZXJzOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg3MTEKICAgICAgICAgLy8gQWxzbywgdG8gZ2V0IHRoZSBiZXN0IGFwcGVhcmFuY2Ugd2Ugc2hv
dWxkIHN0cm9rZSBhIHBhdGggYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnMuCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnN0cm9rZVBhdGgoYm9yZGVyUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y2FzZSBET1VCTEU6IHsKQEAgLTE4MjQsMTggKzE4MjQsMTggQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKIAogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3ND
b250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5uZXJDbGlwID0g
c3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCiAgICAgICAgICAgICAg
ICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgaW5uZXJCb3Jk
ZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAgICAgICBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoaW5uZXJDbGlwKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW5uZXJDbGlwKSk7CiAgICAgICAgICAgICBkcmF3
Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyUGF0aCwg
ZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwgc3R5bGUsIGNvbG9yLCBTT0xJ
RCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9yZGVyIGxp
bmUKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBMYXlvdXRS
ZWN0IG91dGVyUmVjdCA9IGJvcmRlclJlY3Q7CiAgICAgICAgICAgICBpZiAoYmxlZWRBdm9pZGFu
Y2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgICAg
ICAgICBvdXRlclJlY3QuaW5mbGF0ZSgxKTsKQEAgLTE4NDgsNyArMTg0OCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBvdXRlckNsaXAgPSBzdHls
ZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAgICAgIG91
dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVm
dFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckNs
aXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChvdXRlckNsaXApKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBh
dGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tu
ZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIFNPTElELCBibGVlZEF2b2lk
YW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tu
ZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMxLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIFBhaW50
IGlubmVyIG9ubHkKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9
IGVkZ2VzW0JTVG9wXS53aWR0aEZvclBhaW50aW5nKCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0
IGJvdHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CiAg
ICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoID0gZWRnZXNbQlNMZWZ0XS53aWR0aEZvclBhaW50
aW5nKCkgLyAyOwpAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwK
ICAgICAgICAgICAgIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRo
LAogICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRl
RnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywg
dGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2
b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg5Miw5ICsxODkyLDkgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZ3JhcGhpY3NDb250
ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRG
aWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1JlY3Qoc25hcFJlY3RU
b0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkp
KTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91
dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5lckNvcm5lciwgY29uc3QgRmxvYXRQb2lu
dCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkKQEAgLTE5MTIsNyArMTkxMiw3IEBA
IHN0YXRpYyB2b2lkIGZpbmRJbm5lclZlcnRleChjb25zdCBGbG9hdFBvaW50JiBvdXRlckNvcm5l
ciwgY29uc3QgRmxvYXRQb2ludCYgaW5uCiAgICAgICAgIGZpbmRJbnRlcnNlY3Rpb24ob3V0ZXJD
b3JuZXIsIGlubmVyQ29ybmVyLCBGbG9hdFBvaW50KDAsIGNlbnRlclBvaW50LnkoKSksIEZsb2F0
UG9pbnQoMTAwLCBjZW50ZXJQb2ludC55KCkpLCByZXN1bHQpOwogfQogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRl
ZFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHNp
ZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcykKIHsKICAg
ICBGbG9hdFBvaW50IHF1YWRbNF07CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleAogICAgIC8vIElmIHRoZSBib3JkZXIgbWF0Y2hlcyBib3RoIG9mIGl0cyBhZGph
Y2VudCBzaWRlcywgZG9uJ3QgYW50aS1hbGlhcyB0aGUgY2xpcCwgYW5kCiAgICAgLy8gaWYgbmVp
dGhlciBzaWRlIG1hdGNoZXMsIGFudGktYWxpYXMgdGhlIGNsaXAuCiAgICAgaWYgKGZpcnN0RWRn
ZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0
Y2hlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMDQsNyArMjAwNCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZmlyc3RRdWFkWzFdID0gcXVhZFsxXTsKICAgICBm
aXJzdFF1YWRbMl0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9hdFBv
aW50KHF1YWRbM10ueCgpLCBxdWFkWzJdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMl0ueCgpLCBx
dWFkWzNdLnkoKSk7CiAgICAgZmlyc3RRdWFkWzNdID0gcXVhZFszXTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1hdGNoZXMp
OworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBmaXJzdFF1YWQsICFm
aXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0UG9pbnQgc2Vjb25kUXVhZFs0XTsKICAgICBz
ZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKQEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4CiAgICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRbMl07CiAgICAgc2Vjb25kUXVh
ZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNlY29uZCBz
aWRlLgotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVh
ZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcENvbnZleFBv
bHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0KIAogc3RhdGljIExh
eW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3VuZGVkUmVj
dCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBzaWRlKQpA
QCAtMjEyMiwxMSArMjEyMiwxMSBAQCBzdGF0aWMgUm91bmRlZFJlY3QgY2FsY3VsYXRlQWRqdXN0
ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5lckJvcmRlciwgQgogICAgIHJldHVy
biBSb3VuZGVkUmVjdChuZXdSZWN0LCBuZXdSYWRpaSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
bGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLAogICAgIEJveFNpZGUgc2lkZSwgY29uc3QgY2xhc3MgQm9yZGVyRWRn
ZSBlZGdlc1tdKQogewotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChjYWxjdWxhdGVTaWRlUmVj
dEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdlcywgc2lkZSkpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2FsY3VsYXRlQWRq
dXN0ZWRJbm5lckJvcmRlcihpbm5lckJvcmRlciwgc2lkZSkpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdl
cywgc2lkZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRl
KSkpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJPYnNjdXJlc0JhY2tn
cm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25zdApAQCAtMjIzMCw4
ICsyMjMwLDggQEAgc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5I
b2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQKIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNoYWRvd1N0eWxlIHNo
YWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBib3JkZXItaW1hZ2UuICBX
b3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWltYWdlIGFzIGEgbWFzay4KLSAgICBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUuYm94U2hhZG93KCkpCisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gaW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUm91
bmRlZFJlY3QgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHN0eWxlLmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKQpAQCAtMjI2OCw4ICsyMjY4LDggQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRSZWMKICAgICAgICAgICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QuaW5mbGF0ZShzaGFk
b3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRTaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKIAotICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CisgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CiAKICAgICAgICAgICAgIC8vIE1vdmUgdGhl
IGZpbGwganVzdCBvdXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcgMSBwaXhlbCBzZXBhcmF0aW9uIHNv
IHRoYXQgdGhlIGZpbGwgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGJsZWVkIGluIChkdWUgdG8g
YW50aWFsaWFzaW5nKSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2Zvcm1lZC4KQEAgLTIyNzgsOSAr
MjI3OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICBmaWxsUmVjdC5t
b3ZlKGV4dHJhT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAgICAgRmxvYXRSb3VuZGVk
UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFp
bnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBw
aXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9y
UGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI5MiwxOCArMjI5MiwxOCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0Lmlu
ZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKC0xKSk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQpOwogCiAgICAg
ICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5mbHVlbmNlUmVjdChMYXlvdXRSZWN0KHBpeGVsU25h
cHBlZFNoYWRvd1JlY3QpLCBib3JkZXIucmFkaWkoKSk7CiAgICAgICAgICAgICAgICAgaW5mbHVl
bmNlUmVjdC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJl
YWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5j
ZVJlY3QsIGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxs
UmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0UmFkaWkoKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xv
cjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5uZWNl
c3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKQEAgLTIz
MTMsMTQgKzIzMTMsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAg
ICBpZiAoaGFzT3BhcXVlQmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogVGhlIGZ1bmN0aW9uIHRvIGRlY2lkZSBvbiB0aGUgcG9saWN5IGJhc2VkIG9uIHRoZSB0cmFu
c2Zvcm0gc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGNoZWNrIGlzIHJpZ2h0LiBXaGF0IGFib3V0
IGludGVncmFsIHNjYWxlIGZhY3RvcnM/Ci0gICAgICAgICAgICAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICAgICAgICAgICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm0uYSgpICE9IDEgfHwgKHRyYW5zZm9ybS5kKCkgIT0gMSAm
JiB0cmFuc2Zvcm0uZCgpICE9IC0xKSB8fCB0cmFuc2Zvcm0uYigpIHx8IHRyYW5zZm9ybS5jKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0LmluZmxhdGUoTGF5b3V0VW5p
dDo6ZnJvbVBpeGVsKC0xKS50b0Zsb2F0KCkpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6
OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxl
LmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzMwLDkgKzIzMzAsOSBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3Qs
IHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBzaGFkb3dDb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgp
LCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSwgc2hhZG93Q29s
b3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAKQEAgLTIzNTcsMjUgKzIzNTcsMjUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRS
ZWMKICAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRPdXRlclJlY3QgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKExheW91dFJlY3QocGl4ZWxT
bmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hhZG93U3By
ZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9h
dFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlID0gRmxvYXRSb3VuZGVkUmVjdChw
aXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yYWRpaSgpKTsKIAot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0
KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAg
ICBQYXRoIHBhdGg7CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRCb3JkZXJSZWN0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBhdGgpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChwYXRoKTsKICAgICAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRSb3VuZGVkSG9sZS5zaHJpbmtSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRCb3Jk
ZXJSZWN0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBl
ZEJvcmRlclJlY3QucmVjdCgpKTsKIAogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgy
ICogcm91bmRUb0ludChwYWludFJlY3Qud2lkdGgoKSkgKyBzdGQ6Om1heCgwLCBzaGFkb3dPZmZz
ZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAtIDIgKiBzaGFkb3dTcHJlYWQgKyAx
LCAwKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9mZnNldC53aWR0aCgp
LCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShl
eHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBz
aGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAgICAgIGlmIChzaGFkb3ctPmlz
V2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1Jh
ZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4
ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFwcGVkT3V0
ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5jb2xvclNw
YWNlKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQ4NCwxMSArMjQ4NCwxMSBAQCBMYXlv
dXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVu
dChMYXlvdXRVbml0IHdpZHRoLAogICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IExheW91dFJlY3QoeCwgeSwgY2FyZXRXaWR0aCwgaGVpZ2h0KSA6IExh
eW91dFJlY3QoeSwgeCwgaGVpZ2h0LCBjYXJldFdpZHRoKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBub3Qg
YW50aWFsaWFzIHdoZW4gc2NhbGVkIGJ5IGFuIGludGVncmFsIHZhbHVlLAogICAgIC8vIGFuZCB3
ZSBtYXkgd2FudCB0byBhbnRpYWxpYXMgd2hlbiB0cmFuc2xhdGVkIGJ5IGEgbm9uLWludGVncmFs
IHZhbHVlLgotICAgIHJldHVybiAhY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKTsKKyAgICByZXR1cm4gIWNvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0
eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGMyMjhhNDg1ZWUzNWZjOTgyMzc3
MThjZTljN2QzOTQwMjE0ZDExNTguLjU4ODA1ZTA4YzI4MjFlNGZkYjZjOGM0OTkyNWMxOTdiOWY2
MjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZEJlY2FtZU5vbklubGluZShSZW5kZXJFbGVtZW50JikgeyB9CiAKICAgICB2b2lkIHBhaW50Qm9y
ZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UgPSB0cnVlKTsKLSAgICBib29sIHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTmluZVBpZWNl
SW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGJv
b2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBT
aGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gq
ID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9i
amVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5k
Q29sb3JVc2UpOwogCkBAIC0yNTEsMTYgKzI1MSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUm91bmRl
ZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb25z
dCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3Q7CiAgICAg
TGF5b3V0UmVjdCBib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGlj
c0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CisgICAg
Ym9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSosIGNv
bnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24oUmVuZGVy
Qm94TW9kZWxPYmplY3QqKTsKIAogICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RGb3JFbXB0
eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0KTsK
IAotICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCop
OworICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCYp
OwogCi0gICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpOwor
ICAgIHN0YXRpYyB2b2lkIGNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGNsaXBSZWN0KTsKIAogICAg
IGJvb2wgaGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25z
dDsKIApAQCAtMzA3LDE4ICszMDcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIGZpeGVk
QmFja2dyb3VuZFBhaW50c0luTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCisgICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29s
IHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElu
bmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IFJvdW5k
ZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgQm9yZGVyRWRnZVtdKTsKLSAgICB2b2lkIHBhaW50T25l
Qm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAor
ICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25z
dCBCb3JkZXJFZGdlW10pOworICAgIHZvaWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRq
YWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAgICAgICBjb25zdCBQYXRoKiwgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciogb3Zl
cnJpZGVDb2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNp
ZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IElu
dFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCisgICAgdm9pZCBwYWludFRyYW5zbHVjZW50
Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBS
b3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwg
Y29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKICAgICAgICAgY29uc3QgQm9y
ZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBi
b29sIGFudGlhbGlhcyA9IGZhbHNlKTsKLSAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2b2lkIHBhaW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAg
ICAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3QgQm9yZGVy
RWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwKICAgICAg
ICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9
IG51bGxwdHIpOwotICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKKyAg
ICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0
UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGZsb2F0IHRo
aWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciosIGNvbnN0
IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IDVlZWY3
NjI1Mjk0MDU5Y2JiMDk3ZTEwZmY5ZDk0ZDhkNTg3ZWJiNzAuLmI1M2YyYWY0ZmVlNWRiZjFmMzkw
OGQ4NDIzYjQzZWE5NTQxNTI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHZvaWQgUmVuZGVy
RGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNv
bGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
LjBmKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwogCiAgICAgYm94T3JpZ2luLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZmlsbFBhdGgoZ2V0UGF0aChib3hPcmlnaW4pKTsKIH0KIAogYm9vbCBSZW5kZXJEZXRh
aWxzTWFya2VyOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IDI1ODIwNGUwYjBiMGJhMDVlNTRjZGNlNDc3NDM2MjgzNTg2Y2U2
MjkuLjBlMTc2YWQxMTUxZmNiZjNhOGNiNThmMDc5YjY2M2MzNGJiNGI0NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTIwNDEsMTcgKzIwNDEsMTcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1Jp
bmdSZWN0cywgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5wYWludENvbnRhaW5lcik7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCB0aGVtZSgpLnBsYXRmb3JtRm9jdXNSaW5n
V2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+Zm9jdXND
b250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKSwgbmVlZHNSZXBhaW50KTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRoZW1lKCku
cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50
KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLCBuZWVk
c1JlcGFpbnQpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIGRvY3VtZW50KCkucGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwog
I2Vsc2UKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0
cywgc3R5bGUub3V0bGluZVdpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgc3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBzdHlsZS5vdXRsaW5l
V2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICNlbmRpZgogfQogCiB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVj
dCYgcGFpbnRSZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0g
KnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAzMTVkYzE0NWRkZmI4NTAxNDVj
YTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0Li4yYjFmMTY1NWQ5OTY0NmEwZmQwNTAxZWVjNWY4MjgzYjcy
NjJkNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAog
ICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIExheW91dFNpemUgY29u
dGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKICAgICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRp
b24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAgY29udGVudExvY2F0aW9uLm1vdmUo
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25h
cHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAjaWYgRU5BQkxF
KENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldElt
YWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgot
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTI2Miw5ICsyNjIsOSBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50TwogICAgIFJlbmRlcldpZGdldDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9m
ZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpZGVSZWN0KQorc3RhdGljIHZvaWQg
ZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGluc2lkZVJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAKICAgICBGbG9hdFJlY3QgcmVjdChpbnNpZGVSZWN0KTsKICAgICByZWN0
LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dQYWRkaW5nKTsKQEAgLTI3Miw5ICsyNzIsOSBAQCBz
dGF0aWMgdm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgaW5zaQogICAgIEZsb2F0UG9pbnQgY2VudGVyKHJlY3QuY2VudGVy
KCkpOwogICAgIEZsb2F0UG9pbnQgYXJyb3dUaXAocmVjdC5tYXhYKCksIGNlbnRlci55KCkpOwog
Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNvbnRleHQtPnNldExp
bmVDYXAoUm91bmRDYXApOwotICAgIGNvbnRleHQtPnNldExpbmVKb2luKFJvdW5kSm9pbik7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zZXRMaW5lQ2Fw
KFJvdW5kQ2FwKTsKKyAgICBjb250ZXh0LnNldExpbmVKb2luKFJvdW5kSm9pbik7CiAKICAgICBQ
YXRoIHBhdGg7CiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChyZWN0LngoKSwgY2VudGVyLnko
KSkpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAgICAgcGF0
aC5hZGRMaW5lVG8oRmxvYXRQb2ludChjZW50ZXIueCgpLCByZWN0LnkoKSkpOwogICAgIHBhdGgu
bW92ZVRvKGFycm93VGlwKTsKICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNlbnRlci54
KCksIHJlY3QubWF4WSgpKSk7Ci0gICAgY29udGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBj
b250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKQEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAog
ICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGNvbnRl
bnRSZWN0OwpAQCAtMzEwLDM2ICszMTAsMzYgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBQYXRoIGJhY2tncm91bmQ7CiAgICAgYmFja2dyb3VuZC5hZGRSb3VuZGVkUmVjdChpbmRpY2F0
b3JSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMsIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJl
Y3QpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKSA6
IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OwotICAgIGNvbnRleHQtPmZpbGxQYXRoKGJhY2tncm91bmQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LmNsaXAoY29udGVu
dFJlY3QpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcigp
IDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgY29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kKTsKIAogICAgIFBhdGggc3Ryb2tl
UGF0aDsKICAgICBGbG9hdFJlY3Qgc3Ryb2tlUmVjdChpbmRpY2F0b3JSZWN0KTsKICAgICBzdHJv
a2VSZWN0LmluZmxhdGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChzdHJva2VS
ZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxLCByZXBs
YWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygyKTsKLSAgICBjb250ZXh0
LT5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5h
dmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zdHJva2VQYXRoKHN0
cm9rZVBhdGgpOwogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5m
b250TWV0cmljcygpOwogICAgIGZsb2F0IGxhYmVsWCA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRS
ZWN0LmxvY2F0aW9uKCkueCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0VGV4dE1h
cmdpbik7CiAgICAgZmxvYXQgbGFiZWxZID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9j
YXRpb24oKS55KCkgKyAocmVwbGFjZW1lbnRUZXh0UmVjdC5zaXplKCkuaGVpZ2h0KCkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyICsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyByZXBsYWNlbWVu
dFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4pOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29u
dGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkp
OworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCBydW4sIEZs
b2F0UG9pbnQobGFiZWxYLCBsYWJlbFkpKTsKIAogICAgIGlmIChzaG91bGRVbmF2YWlsYWJsZVBs
dWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKSkgewogICAgICAgICBhcnJvd1JlY3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJvd0NpcmNs
ZVBhZGRpbmcpOwogCi0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4w
KTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbEVsbGlwc2UoYXJy
b3dSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMCk7Cisg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3Qp
OwogCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVh
cik7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFy
KTsKICAgICAgICAgZHJhd1JlcGxhY2VtZW50QXJyb3coY29udGV4dCwgYXJyb3dSZWN0KTsKLSAg
ICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgY29udGV4dC5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggZDVmZmY5MjAzMjM1NDE4NDgyNWIxMjA0ODYx
ZDZhNjQyZTY1ZDA3ZS4uMDk1MmZkYTM0Yjg4Mjg5MTRjMzlmYWM0YjI4OTk0M2JiMjA0ODk3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICAgICAgcGFpbnRSZWN0LnNl
dFgocGFpbnRSZWN0LngoKSArIHhPZmYpOwogICAgIH0KIAotICAgIGlmICghYm94U2hhZG93U2hv
dWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBkZXRlcm1pbmVC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpKSkKKyAgICBpZiAoIWJv
eFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChwYWludFJlY3QubG9jYXRpb24oKSwg
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KCkpKSkK
ICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIE5v
cm1hbCk7CiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmJhY2tncm91
bmRMYXllcnMoKSwgcGFpbnRSZWN0KTsKICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBh
aW50UmVjdCwgc3R5bGUoKSwgSW5zZXQpOwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgUmVuZGVy
RmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBDcmVhdGUgYSBjbGlw
cGluZyByZWdpb24gYXJvdW5kIHRoZSBsZWdlbmQgYW5kIHBhaW50IHRoZSBib3JkZXIgYXMgbm9y
bWFsCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNz
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihn
cmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gd29yayB3aXRoICJy
bCIgYW5kICJidCIgYmxvY2sgZmxvdyBkaXJlY3Rpb25zLiAgSW4gdGhvc2UKICAgICAvLyBjYXNl
cyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMg
cmVzcGVjdGl2ZWx5LgpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
CiAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0eWxlKCku
Ym9yZGVyTGVmdFdpZHRoKCksIGxlZ2VuZC0+d2lkdGgoKSkpOwogICAgICAgICBjbGlwUmVjdC5z
ZXRIZWlnaHQobGVnZW5kLT5oZWlnaHQoKSk7CiAgICAgfQotICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcE91dChzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsK
IAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCmluZGV4IGM3YWM2NzQ2YTI3NWE5OGVjODZkMDk5OGU2NzZkNmI1YWY1MWFjY2EuLjY0ZWNh
Y2IwNmVjZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTIwLDE0
ICsxMjAsMTQgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIC8vIFB1c2ggYSBjbGlwLgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwgZmFsc2UpOwogICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMpIHsKICAgICAgICAgSW50UmVj
dCBjbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkg
KyBib3JkZXJMZWZ0KCksIHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpLCBo
ZWlnaHQoKSAtIGJvcmRlckJvdHRvbSgpIC0gYm9yZGVyVG9wKCkgKyBidXR0b25TaGFkb3dIZWln
aHQpKTsKICAgICAgICAgaWYgKGNsaXBSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBS
ZWN0KTsKICAgICB9CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKSB7CkBAIC0xNjMsMTAgKzE2MywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJhc2VsaW5lUG9zaXRpb24oQWxwaGFi
ZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRoZSBmaWxlbmFtZQotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJv
dW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBJbnRQb2ludChyb3VuZFRvSW50
KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbnB1
dEVsZW1lbnQoKS5pY29uKCkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0aGUg
aWNvbiBzaG91bGQgYmUgcGxhY2VkCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW4KICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAgICAvLyBEcmF3IHRoZSBm
aWxlIGljb24KLSAgICAgICAgICAgIGlucHV0RWxlbWVudCgpLmljb24oKS0+cGFpbnQoKnBhaW50
SW5mby5jb250ZXh0LCBJbnRSZWN0KHJvdW5kVG9JbnQoaWNvblgpLCByb3VuZFRvSW50KGljb25Z
KSwgaWNvbldpZHRoLCBpY29uSGVpZ2h0KSk7CisgICAgICAgICAgICBpbnB1dEVsZW1lbnQoKS5p
Y29uKCktPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIEludFJlY3Qocm91bmRUb0ludChpY29u
WCksIHJvdW5kVG9JbnQoaWNvblkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKICNlbmRpZgog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHAKaW5kZXggMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYwNC4uMmY4
MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4ZDIyZmE4MGE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MCwxNSArOTAsMTUgQEAgdm9pZCBS
ZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0aGluZyBj
bGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1lZXQgYXQgYSBqb2lu
LgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgpLmNv
bG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVs
ZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3Bh
Y2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCku
aGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNlKTsKICAg
ICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3Vn
aCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0
aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3Qud2lkdGgo
KSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5s
b2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50
KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdo
dCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4
dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSgxLCBoZWln
aHQoKSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9y
ZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigp
LCBjb2xvclNwYWNlKTsKICAgICB9CiB9CiAKQEAgLTExMCwxNSArMTEwLDE1IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OnBhaW50Um93Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiBiCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBzb21ldGhpbmcgY2xl
dmVyIHdoZW4gYm9yZGVycyBmcm9tIGRpc3RpbmN0IGZyYW1lc2V0cyBtZWV0IGF0IGEgam9pbi4K
ICAgICAKICAgICAvLyBGaWxsIGZpcnN0LgotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xv
clNwYWNlKCk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVt
ZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNl
KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhh
c0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JTcGFjZSk7CiAKICAg
ICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29t
IHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmls
bCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3QuaGVpZ2h0KCkgPj0g
MykgewotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRp
b24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9y
U3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRl
clJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwg
Ym9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwg
Ym9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0LngoKSwgYm9yZGVyUmVjdC5tYXhZKCkg
LSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNw
YWNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1M
Q2FudmFzLmNwcAppbmRleCA1YTY1MGFhYzlkZGI0OTc3N2I2M2YzYmQ4ODAzZjA2ZTVlYzZiYzE2
Li5jNjczZDgwZWFkOTgzNjQ3YWZlYjkzMWY0M2Q3NGQ0ZDBmZTViN2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IGJvb2wgUmVuZGVySFRNTENhbnZhczo6cmVxdWlyZXNMYXllcigpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0ID0gdGhp
cy0+Y29udGVudEJveFJlY3QoKTsKICAgICBjb250ZW50Qm94UmVjdC5tb3ZlQnkocGFpbnRPZmZz
ZXQpOwpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogCiAgICAgLy8g
Tm90IGFsbG93ZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnRlbnQgYm94LgogICAgIGJvb2wgY2xpcCA9
ICFjb250ZW50Qm94UmVjdC5jb250YWlucyhyZXBsYWNlZENvbnRlbnRSZWN0KTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBjbGlw
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcChzbmFwcGVkSW50UmVjdChjb250ZW50Qm94UmVjdCkpOwogCiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk4NGQ1N2NhYjdmMzA3ZDk5ZjhmZTAwMDYyNzE3MTA2MjEx
MDNiZC4uNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBMYXlvdXRVbml0IGxlZnRQYWQgPSBwYWRkaW5nTGVm
dCgpOwogICAgIExheW91dFVuaXQgdG9wUGFkID0gcGFkZGluZ1RvcCgpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZSgpLnBhZ2UoKTsKQEAgLTM5MSwxMCArMzkxLDEwIEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gTGF5b3V0VW5p
dCgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgICAgICAgICAvLyBEcmF3IGFuIG91dGxp
bmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgotICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0
UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdo
dCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOworICAgICAgICAgICAgY29udGV4
dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJvcmRlciArIGxlZnRQ
YWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dpZHRoLCBjSGVpZ2h0
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAgICAgICAgIGJvb2wg
ZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VP
ZmZzZXQ7CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lm
IEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExh
eW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFn
ZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
bV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFz
Y2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwpAQCAtNDQzLDkgKzQ0Myw5IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0ZXh0V2lkdGggPSBm
b250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgICAgIGlmIChlcnJvclBpY3R1cmVEcmF3
bikgewogICAgICAgICAgICAgICAgICAgICBpZiAodXNhYmxlV2lkdGggPj0gdGV4dFdpZHRoICYm
IGZvbnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0LmhlaWdodCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRl
eHRSdW4sIGFsdFRleHRPZmZzZXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNhYmxl
V2lkdGggPj0gdGV4dFdpZHRoICYmIHVzYWJsZUhlaWdodCA+PSBmb250TWV0cmljcy5oZWlnaHQo
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwg
YWx0VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYg
Y0hlaWdodCA+IDApIHsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QgPSB0aGlzLT5yZXBsYWNl
ZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7CiAgICAgICAgIHJlcGxhY2VkQ29udGVudFJl
Y3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICAgICAgYm9vbCBjbGlwID0gIWNvbnRlbnRCb3hS
ZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXApOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcCk7CiAgICAgICAgIGlm
IChjbGlwKQotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50Qm94UmVjdCk7CisgICAg
ICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudEJveFJlY3QpOwogCiAgICAgICAgIHBhaW50SW50
b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0
LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lk
IFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJ
bmZvKQogICAgIGlmIChkb2N1bWVudCgpLnByaW50aW5nKCkgfHwgIWZyYW1lKCkuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAo
cGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhcGFpbnRJbmZvLmNvbnRl
eHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8uY29udGV4dCgpLnVwZGF0aW5nQ29udHJv
bFRpbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50
ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludElu
Zm8pCiAgICAgaWYgKCFvdXRsaW5lV2lkdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhaW50
SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIG91dGxpbmVXaWR0aCwKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdpZHRoLAogICAgICAg
ICBhcmVhRWxlbWVudFN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksCiAgICAgICAgIGFyZWFFbGVtZW50
U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwog
I2VuZGlmCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6YXJlYUVsZW1lbnRG
b2N1c0NoYW5nZWQoSFRNTEFyZWFFbGVtZW50KiBlbGVtZW50KQogICAgIHJlcGFpbnQoKTsKIH0K
IAotdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAg
ICAgaWYgKCFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8fCBpbWFnZVJlc291cmNlKCkuZXJy
b3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8IHJlY3QuaGVpZ2h0KCkgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlv
bigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZVJlc291cmNlKCkuaW1h
Z2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCksIHJlY3QsCisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBy
ZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDkwZjNl
MjZiZTQ4MTIwOWJjZmY2Zjg4NzVjMTRlZmQ4NzNiNjYzZDQuLjY3ZGVkMTc2ZDZhMzE3YjZkYmM0
ZjYxYmNmNTgxYzQzYjYxZGU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFn
ZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNDlkNDUyMDVjMGE5YzhiMWQ2MTQ1MDI1NjJlNTViZjBhODM0NjNjNS4uZmU4OGU3NmM4ZTEx
OWJjMjAwZDVkZTgzY2QxZWM1YTBmM2U4YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQgUmVuZGVySW5saW5l
OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mCiAgICAgaWYgKGhhc091dGxpbmVBbm5vdGF0aW9uKCkgJiYgIXN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlSXNBdXRvKCkgJiYgIXRoZW1lKCkuc3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1Vz
ZSkpCiAgICAgICAgIGFkZFBERlVSTFJlY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owot
ICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgaWYg
KGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlKCkgPT0gQk5PTkUpCkBAIC0xNTgxLDcgKzE1ODEsNyBAQCB2b2lkIFJlbmRlcklu
bGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZgogICAgIENvbG9yIG91dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2UudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKICAgICBib29sIHVzZVRyYW5z
cGFyZW5jeUxheWVyID0gb3V0bGluZUNvbG9yLmhhc0FscGhhKCk7CiAgICAgaWYgKHVzZVRyYW5z
cGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgIG91dGxpbmVD
b2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0bGluZUNvbG9yLmdyZWVuKCksIG91
dGxpbmVDb2xvci5ibHVlKCkpOwogICAgIH0KIApAQCAtMTU4OSwxMCArMTU4OSwxMCBAQCB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludE91dGxpbmVGb3JMaW5lKGdyYXBoaWNz
Q29udGV4dCwgcGFpbnRPZmZzZXQsIHJlY3RzLmF0KGkgLSAxKSwgcmVjdHMuYXQoaSksIHJlY3Rz
LmF0KGkgKyAxKSwgb3V0bGluZUNvbG9yKTsKIAogICAgIGlmICh1c2VUcmFuc3BhcmVuY3lMYXll
cikKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKK3ZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBsYXN0bGluZSwgY29uc3QgTGF5b3V0
UmVjdCYgdGhpc2xpbmUsIGNvbnN0IExheW91dFJlY3QmIG5leHRsaW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3Igb3V0bGluZUNvbG9yKQogewpA
QCAtMTYxNCw3ICsxNjE0LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZE5leHRMaW5lID0gc25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsg
bmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAgICAKICAgICAvLyBsZWZ0
IGVkZ2UKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBGbG9hdFJlY3QoRmxvYXRQ
b2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICBwaXhlbFNu
YXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS54KCkgPCBsYXN0
bGluZS54KCkgfHwgKGxhc3RsaW5lLm1heFgoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG91dGxp
bmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpLApA
QCAtMTYyNiw3ICsxNjI2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgYW50
aWFsaWFzKTsKICAgICAKICAgICAvLyByaWdodCBlZGdlCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRl
KCpncmFwaGljc0NvbnRleHQsCisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSwK
ICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIChsYXN0bGluZS5pc0VtcHR5KCkgfHwgbGFz
dGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgpIHx8ICh0aGlzbGluZS5tYXhYKCkgLSAxKSA8
PSBsYXN0bGluZS54KCkgPyBvdXRsaW5lV2lkdGggOiAwKSksCiAgICAgICAgIEZsb2F0UG9pbnQo
cGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2MzgsNyArMTYzOCw3
IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAgIGFudGlhbGlhcyk7CiAgICAgLy8g
dXBwZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkpCi0gICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9p
bnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAgIHBpeGVs
U25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgpLAogICAgICAgICAgICAgRmxvYXRQb2ludChz
dGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAobGFzdGxpbmUu
aXNFbXB0eSgpID8gMTAwMDAwMCA6IHBpeGVsU25hcHBlZExhc3RMaW5lLngoKSkpLApAQCAtMTY0
OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFudGlh
bGlhcyk7CiAgICAgCiAgICAgaWYgKGxhc3RsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgoKSkK
LSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3Qo
RmxvYXRQb2ludChzdGQ6Om1heChsYXN0bGluZS5pc0VtcHR5KCkgPyAtMTAwMDAwMCA6IHBpeGVs
U25hcHBlZExhc3RMaW5lLm1heFgoKSwgcGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0
aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gb3V0bGluZVdpZHRoKSwKICAg
ICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0
aCwKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAg
ICAgICBvdXRsaW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUueCgpID09
IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0Nv
bnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGlu
ZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCks
CiAgICAgICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5l
V2lkdGgsCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogCiAg
ICAgLy8gbG93ZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBuZXh0bGluZS54KCkpCi0g
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZs
b2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAg
IHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChzdGQ6Om1p
bihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAhbmV4dGxpbmUuaXNFbXB0
eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUueCgpICsgMSA6IDEwMDAwMDApLApAQCAtMTY4Miw3
ICsxNjgyLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFudGlhbGlh
cyk7CiAgICAgCiAgICAgaWYgKG5leHRsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgoKSkKLSAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxv
YXRQb2ludChzdGQ6Om1heCghbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExp
bmUubWF4WCgpIDogLTEwMDAwMDAsIHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgp
LAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9h
dFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCkBAIC0xNjkyLDcg
KzE2OTIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgb3V0bGluZVdp
ZHRoLCBhbnRpYWxpYXMpOwogCiAgICAgaWYgKHRoaXNsaW5lLngoKSA9PSB0aGlzbGluZS5tYXhY
KCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAg
ICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChw
aXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCmluZGV4IDkyYmNlYjViNmVlNDcyMTlkNzQ5YTU2MThjYmE4MTQ3
MzBiMjVkZTUuLjQ1MGJiMGY5OTU2ODZmMWVlZmYxM2RlNWM2ZTFkNDc3ZDBhNDg5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+IGNsb25lKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwgY29uc3QgTGF5b3V0UmVj
dCYgdGhpc0xpbmUsCisgICAgdm9pZCBwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgcHJldkxpbmUsIGNvbnN0
IExheW91dFJlY3QmIHRoaXNMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMYXlvdXRSZWN0JiBuZXh0TGluZSwgY29uc3QgQ29sb3IpOwogICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdkZWRlNzFjYzRk
NDM0MTRlODNhOWY4YTcxNzU5NjI5YWI3ZGFkNzMuLjc0MzA5ZmRjMjgxZmY4MmE2MWM5NTUyMWU3
NzA2ODIyYzg1ZjRjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMTc4Nyw5ICsxNzg3LDkgQEAgc3RhdGljIExheW91dFJlY3QgcGFpbnRpbmdFeHRlbnQo
Y29uc3QgUmVuZGVyTGF5ZXImIGN1cnJlbnRMYXllciwgY29uc3QgUmVuZGVyTGEKICAgICByZXR1
cm4gaW50ZXJzZWN0aW9uKHRyYW5zcGFyZW5jeUNsaXBCb3goY3VycmVudExheWVyLCByb290TGF5
ZXIsIFBhaW50aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCwgUm9vdE9mVHJhbnNwYXJlbmN5Q2xpcEJv
eCwgcGFpbnRCZWhhdmlvciksIHBhaW50RGlydHlSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0
eVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQorICAgIGlmIChjb250ZXh0LnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFp
bnRCZWhhdmlvcikgJiYgbV91c2VkVHJhbnNwYXJlbmN5KSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yID0gdHJhbnNwYXJlbnRQYWludGluZ0FuY2VzdG9yKCk7
CkBAIC0xNzk4LDIyICsxNzk4LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQCiAgICAgCiAg
ICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ip
KSB7CiAgICAgICAgIG1fdXNlZFRyYW5zcGFyZW5jeSA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIExheW91dFJlY3QgYWRq
dXN0ZWRDbGlwUmVjdCA9IHBhaW50aW5nRXh0ZW50KCp0aGlzLCBwYWludGluZ0luZm8ucm9vdExh
eWVyLCBkaXJ0eVJlY3QsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAgICAgYWRq
dXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7CiAg
ICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRDbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpOwotICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsK
KyAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsKIAogI2lmIEVOQUJM
RShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3NpdGVPcGVy
YXRpb24oKSwgYmxlbmRNb2RlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKCkpOwogI2Vu
ZGlmCiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5kZXJlcigp
Lm9wYWNpdHkoKSk7CisgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5k
ZXJlcigpLm9wYWNpdHkoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAg
ICBpZiAoaGFzQmxlbmRNb2RlKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7
CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBv
c2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwogI2VuZGlmCiAKICNpZmRlZiBSRVZF
QUxfVFJBTlNQQVJFTkNZX0xBWUVSUwpAQCAtMzU0MSw3ICszNTQxLDcgQEAgYm9vbCBSZW5kZXJM
YXllcjo6c2hvd3NPdmVyZmxvd0NvbnRyb2xzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBh
aW50aW5nT3ZlcmxheUNvbnRyb2xzKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHdl
IGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
KQpAQCAtMzYwNSw3ICszNjA1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0Nv
bnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQKICAgICBwYWlu
dFJlc2l6ZXIoY29udGV4dCwgYWRqdXN0ZWRQYWludE9mZnNldCwgZGFtYWdlUmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NF
UlQoYm94KTsKQEAgLTM2MTUsNyArMzYxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Ny
b2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAg
ICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNv
bnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxDb3Ju
ZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzYyOCwxMCArMzYyOCwxMCBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQg
d2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9sbGJhcnMsIHNpbmNlIHdlIG5lZWQKICAgICAv
LyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAgICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFy
cygpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJv
eC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGFic1Jl
Y3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KQordm9pZCBSZW5kZXJM
YXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCiB7CiAgICAgUmVmUHRyPEltYWdl
PiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7CkBA
IC0zNjQ3LDE4ICszNjQ3LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6
ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgfQogCiAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xs
YmFyT25Mb2dpY2FsTGVmdCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAg
Y29udGV4dC0+dHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNvcm5lclJlc2l6ZXJT
aXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJDb3JuZXJSZWN0Lmhl
aWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShy
ZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKLSAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAgICAgY29udGV4
dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNpemUud2lk
dGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVpZ2h0KCkg
LSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKC0xLjAsIDEuMCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3Ju
ZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKKyAgICAgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhY
TWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQtPmRy
YXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJ
bWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucmVzaXplKCkg
PT0gUkVTSVpFX05PTkUpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NzEsNyArMzY3MSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91dFBvaW50JiBwYWluCiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdl
UmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRy
b2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewog
ICAgICAgICB1cGRhdGVSZXNpemVyU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTM2ODYsMTQgKzM2ODYsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAvLyBEcmF3
IGEgZnJhbWUgYXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3JleSBsaW5lKSBpZiB0aGVyZSBhcmUg
YW55IHNjcm9sbGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlwcGluZyB3aWxsIGV4Y2x1ZGUgdGhl
IHJpZ2h0IGFuZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFtZS4KICAgICBpZiAoIWhhc092ZXJs
YXlTY3JvbGxiYXJzKCkgJiYgKG1fdkJhciB8fCBtX2hCYXIpKSB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQt
PmNsaXAoYWJzUmVjdCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAgICAgICBM
YXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5z
ZXRTaXplKExheW91dFNpemUobGFyZ2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9t
UGl4ZWwoMSksIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgx
KSkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywg
MjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPmRy
YXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxhcmdlckNvcm5lcikpOworICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2Vy
Q29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNzYxLDcgKzM3NjEsNyBAQCBib29sIFJlbmRlckxh
eWVyOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKGRpcmVjdGlvbiwg
Z3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNv
bnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1
YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAg
ICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKQEAgLTM3NzIs
NyArMzc3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwKICAgICAgICAgd2lkZ2V0LT5zZXRP
dmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3Zl
cmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCog
c3VidHJlZVBhaW50Um9vdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdCkKIHsKICAgICBpZiAoIW1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKQogICAg
ICAgICByZXR1cm47CkBAIC0zNzk3LDE4ICszNzk3LDE4IEBAIHN0YXRpYyBib29sIGluQ29udGFp
bmluZ0Jsb2NrQ2hhaW4oUmVuZGVyTGF5ZXIqIHN0YXJ0TGF5ZXIsIFJlbmRlckxheWVyKiBlbmRM
YXllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0
KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0LCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1
bGUgcnVsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGlw
UmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSBydWxlKQogewogICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCk7CiAKICAgICBib29sIG5lZWRzQ2xpcHBpbmcgPSBjbGlwUmVjdC5yZWN0KCkgIT0g
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgIGlmIChuZWVkc0NsaXBwaW5nIHx8IGNs
aXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOworICAg
ICAgICBjb250ZXh0LnNhdmUoKTsKIAogICAgIGlmIChuZWVkc0NsaXBwaW5nKSB7CiAgICAgICAg
IExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBSZWN0LnJlY3QoKTsKICAgICAgICAg
YWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7
Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoc25hcFJlY3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENs
aXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICBjb250ZXh0LmNsaXAoc25hcFJl
Y3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwog
ICAgIH0KIAogICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAgLTM4MTks
NyArMzgxOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250CiAgICAgICAgICAgICBpZiAobGF5
ZXItPnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkuc3R5
bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSAmJiBpbkNvbnRhaW5pbmdCbG9ja0NoYWluKHRoaXMsIGxh
eWVyKSkgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IExh
eW91dFJlY3QodG9MYXlvdXRQb2ludChsYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yKHBhaW50aW5n
SW5mby5yb290TGF5ZXIpKSwgbGF5ZXItPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgYWRqdXN0
ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3QpLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihhZGp1c3RlZENsaXBSZWN0KS5waXhlbFNuYXBwZWRS
b3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXllciA9PSBwYWludGluZ0luZm8ucm9v
dExheWVyKQpAQCAtMzgyOCwxMCArMzgyOCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9S
ZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udAog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xpcFJl
Y3QmIGNsaXBSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xp
cFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChjbGlwUmVjdC5yZWN0KCkgIT0gcGFpbnREaXJ0
eVJlY3QgfHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250ZXh0LT5y
ZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBzdGF0aWMgdm9pZCBw
ZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBUZXN0UmVxdWVzdE1hcCYgb3ZlcmxhcFRlc3RSZXF1
ZXN0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyKQpAQCAtMzg3NSwxMiArMzg3NSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFpbnRGb3JG
aXhlZFJvb3RCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTAogICAg
IHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5pc1Jvb3QoKSAmJiAocGFpbnRGbGFncyAmIFJlbmRl
ckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpOwogfQogCi12b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRo
ZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBv
c2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2Ug
ZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRo
aXMgY2FzZS4KLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgfHwg
KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycykpCisgICAgICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkg
fHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycykpCiAgICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJUZW1w
b3JhcnlDbGlwUmVjdHM7CiAgICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50c0ludG9X
aW5kb3coKQogICAgICAgICAgICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRB
bmNlc3RvcigpCkBAIC0zOTY0LDcgKzM5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mCiAg
ICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCBwYWludGluZ0luZm8s
IHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNB
bmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJl
bmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRM
YXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIo
KSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTM5ODIsOSArMzk4
Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKGNv
bnRleHQsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKIH0KIAotYm9vbCBSZW5kZXJM
YXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKQorYm9vbCBSZW5kZXJMYXllcjo6c2V0dXBGb250
U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBib29sIHNjcm9sbGluZ09uTWFpblRocmVhZCA9IHRydWU7CkBAIC00MDAyLDggKzQw
MDIsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGJvb2wmCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSByZW5k
ZXJlcigpLmZyYW1lKCkucGFnZSgpKQogICAgICAgICBpc1pvb21pbmcgPSAhcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkuaGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaWYgKHNjcm9sbGlu
Z09uTWFpblRocmVhZCB8fCBjb250ZW50c1Njcm9sbEJ5UGFpbnRpbmcgfHwgaXNab29taW5nKSB7
Ci0gICAgICAgIGRpZFF1YW50aXplRm9udHMgPSBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoKTsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKGZhbHNlKTsKKyAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQuc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKCk7CisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQwNzIsOSArNDA3Miw5IEBAIFBhdGggUmVuZGVyTGF5ZXI6OmNvbXB1
dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYK
ICAgICByZXR1cm4gUGF0aCgpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRo
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50
aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJv
b3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCitib29s
IFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpLmhhc0NsaXBQYXRo
KCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghcmVuZGVyZXIoKS5o
YXNDbGlwUGF0aCgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKSB7CkBAIC00
MDg4LDggKzQwODgsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgICAgICBXaW5kUnVs
ZSB3aW5kUnVsZTsKICAgICAgICAgTGF5b3V0U2l6ZSBwYWludGluZ09mZnNldEZyb21Sb290ID0g
TGF5b3V0U2l6ZShzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwob2Zmc2V0RnJvbVJvb3QgKyBwYWludGlu
Z0luZm8uc3VicGl4ZWxBY2N1bXVsYXRpb24sIExheW91dFBvaW50KCksIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIFBhdGggcGF0aCA9IGNvbXB1
dGVDbGlwUGF0aChwYWludGluZ09mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMsIHdp
bmRSdWxlKTsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlw
UGF0aChwYXRoLCB3aW5kUnVsZSk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBj
b250ZXh0LmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC00MDk4LDcgKzQwOTgsNyBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmdldEVsZW1lbnRC
eUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFnbWVudCgpKTsKICAgICAgICAgaWYg
KGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhUYWcpICYm
IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB1c2UgYSBzYWZlciBjYXN0IHN1Y2ggYXMgdG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcigp
LgotICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC0+c2F2ZSgp
IGFuZCByZXR1cm4gdHJ1ZSBzbyB3ZSByZXN0b3JlIHRoZSBjb250ZXh0PworICAgICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC5zYXZlKCkgYW5kIHJldHVybiB0cnVl
IHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5yZW5kZXJlcigpKS0+YXBwbHlDbGlwcGlu
Z1RvQ29udGV4dChyZW5kZXJlcigpLCByb290UmVsYXRpdmVCb3VuZHMsIHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCwgY29udGV4dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MTA2LDkgKzQx
MDYsOSBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwYWludEZsYWdzICYgUGFpbnRMYXllclBh
aW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpCkBAIC00MTI2LDcgKzQxMjYsNyBAQCBib29sIFJlbmRl
ckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFBhaW50TGF5ZXJGbAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3Qs
IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRz
Q29tcHV0ZWQpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJl
bmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJv
dW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7CiAgICAgaWYgKCFoYXNG
aWx0ZXJUaGF0SXNQYWludGluZyhjb250ZXh0LCBwYWludEZsYWdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00MTYzLDcgKzQxNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDbwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyOjph
cHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50ZXIsIEdy
YXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCitHcmFwaGljc0NvbnRleHQm
IFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZp
bHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCiB7
CiAgICAgQVNTRVJUKGZpbHRlclBhaW50ZXItPmhhc1N0YXJ0ZWRGaWx0ZXJFZmZlY3QoKSk7CiAg
ICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgY2xpcHBpbmcgKGllLiBvdmVyZmxvdzogaGlkZGVuKS4K
QEAgLTQxODUsNyArNDE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlWkluZGV4KFJl
bmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIqIHNlY29uZCkKIC8vIFRoZXNlIGxheWVycyBz
aG91bGQgbm90IGJlIHBhaW50ZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgb3RoZXIgZWxlbWVu
dHMgY29sbGVjdGVkIGluCiAvLyBuYW1lZCBmbG93cyAtIHJlZ2lvbnMgLT4gbmFtZWQgZmxvd3Mg
LSBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIGNsaXBwZWQgdG8gdGhlCiAvLyByZWdp
b25zIHZpZXdwb3J0Lgotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRG
bG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzKQogewogICAgIGlmICghaXNSb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDIwNiw3ICs0MjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0lu
TmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEwKICAgICAgICAgZml4
ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExh
eWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNT
RVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRh
bnQoKSk7CiAKQEAgLTQyNDgsMjQgKzQyNDgsMjUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZGlzYWJsZSBzdWJwaXhlbCBxdWFu
dGl6YXRpb24gZm9yIG92ZXJmbG93IGNsaXBzIG9yIHN1YmZyYW1lcyBvbmNlIHdlIHNjcm9sbCB0
aG9zZQogICAgIC8vIHRoaW5ncyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4KICAgICBib29sIGRp
ZFF1YW50aXplRm9udHMgPSB0cnVlOwotICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4ZWxRdWFu
dGl6YXRpb24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LCBkaWRRdWFu
dGl6ZUZvbnRzKTsKKyAgICBib29sIG5lZWRUb0FkanVzdFN1YnBpeGVsUXVhbnRpemF0aW9uID0g
c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24ob3JpZ2luYWxDb250ZXh0LCBkaWRRdWFudGl6
ZUZvbnRzKTsKIAogICAgIC8vIEFwcGx5IGNsaXAtcGF0aCB0byBjb250ZXh0LgogICAgIExheW91
dFNpemUgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IG9mZnNldEZyb21Sb290OwotICAgIGlm
IChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSAmJiAocmVuZGVyZXIoKS5o
YXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50Rmxh
Z3MpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgJiYg
KHJlbmRlcmVyKCkuaGFzQ2xpcFBhdGgoKSB8fCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhvcmln
aW5hbENvbnRleHQsIHBhaW50RmxhZ3MpKSkKICAgICAgICAgY29sdW1uQXdhcmVPZmZzZXRGcm9t
Um9vdCA9IHRvTGF5b3V0U2l6ZShjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9v
dExheWVyLCBMYXlvdXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1bW5zKSk7CiAKICAgICBib29sIGhh
c0NsaXBQYXRoID0gZmFsc2U7CiAgICAgaWYgKHNob3VsZEFwcGx5Q2xpcFBhdGgocGFpbnRpbmdJ
bmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpCi0gICAgICAgIGhhc0NsaXBQYXRo
ID0gc2V0dXBDbGlwUGF0aChjb250ZXh0LCBwYWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0
RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
OworICAgICAgICBoYXNDbGlwUGF0aCA9IHNldHVwQ2xpcFBhdGgob3JpZ2luYWxDb250ZXh0LCBw
YWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5k
cywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogCiAgICAgTGF5ZXJQYWludGluZ0luZm8g
bG9jYWxQYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCog
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0gY29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMo
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIGNvbHVtbkF3YXJlT2Zmc2V0
RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
OworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CisgICAg
R3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBvcmlnaW5hbENvbnRl
eHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBmaWx0
ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFp
bnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCBy
b290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgaWYgKGZpbHRlclBhaW50ZXIpIHsKICAg
ICAgICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXItPmZpbHRlckNvbnRleHQoKTsKLSAgICAgICAg
aWYgKGNvbnRleHQgIT0gdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFuc3BhcmVu
Y3kpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgIT0gJnRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCAm
JiBoYXZlVHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVy
IGFuZCB0cmFuc3BhcmVuY3ksIHdlIGhhdmUgdG8gZWFnZXJseSBzdGFydCBhIHRyYW5zcGFyZW5j
eSBsYXllciBoZXJlLCByYXRoZXIgdGhhbiByaXNrIGEgY2hpbGQgbGF5ZXIgbGF6aWx5IHN0YXJ0
cyBvbmUgd2l0aCB0aGUgd3JvbmcgY29udGV4dC4KICAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdCk7CiAgICAgICAgIH0KQEAgLTQzMTEsNjMgKzQzMTIs
NjMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0
ZWRCYWNrZ3JvdW5kKSB7CiAgICAgICAgIC8vIFBhaW50IG9ubHkgdGhlIGJhY2tncm91bmRzIGZv
ciBhbGwgb2YgdGhlIGZyYWdtZW50cyBvZiB0aGUgbGF5ZXIuCiAgICAgICAgIGlmIChzaG91bGRQ
YWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpCi0gICAgICAgICAgICBwYWludEJhY2tncm91
bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVy
Q29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAor
ICAgICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAq
Y29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgfQog
CiAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggbmVnYXRp
dmUgei1pbmRpY2VzLgogICAgIGlmICgoaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQ
YWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQg
JiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFpbnRMaXN0KG5l
Z1pPcmRlckxpc3QoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CisgICAgICAgIHBhaW50TGlzdChuZWdaT3JkZXJMaXN0KCksICpjb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAKICAgICBpZiAoaXNQYWludGluZ0Nv
bXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQpCi0g
ICAgICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNv
bnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlS
ZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRm9yRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0
LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAg
ICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlciwgc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09u
bHkpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCi0gICAgICAgIHBhaW50
T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CisgICAg
ICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVy
ZXIpOwogCiAgICAgaWYgKGlzUGFpbnRpbmdDb21wb3NpdGVkRm9yZWdyb3VuZCkgewogICAgICAg
ICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2ZSBvdmVyZmxvdy4KLSAgICAgICAg
cGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCksIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWludExpc3QobV9ub3JtYWxGbG93TGlz
dC5nZXQoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwog
ICAgIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0
aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50TGlzdChwb3NaT3JkZXJMaXN0KCks
IGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBw
YWludExpc3QocG9zWk9yZGVyTGlzdCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxv
Y2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGZpeGVkIGVsZW1lbnRzIGZy
b20gZmxvdyB0aHJlYWRzLgotICAgICAgICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKGNv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9j
YWxQYWludEZsYWdzKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSByZWdpb24s
IHBhaW50IGl0cyBjb250ZW50cyB2aWEgdGhlIGZsb3cgdGhyZWFkJ3MgbGF5ZXIuCiAgICAgICAg
IGlmIChzaG91bGRQYWludENvbnRlbnQpCi0gICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJl
Z2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJlZ2lv
bkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
LCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIH0KIAogICAgIGlmIChpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMgJiYgaGFzU2Nyb2xsYmFycygpKQotICAgICAgICBwYWludE92ZXJmbG93Q29udHJv
bHNGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
KTsKKyAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21l
bnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOwogCiAgICAgaWYgKGZpbHRlclBhaW50
ZXIpIHsKLSAgICAgICAgY29udGV4dCA9IGFwcGx5RmlsdGVycyhmaWx0ZXJQYWludGVyLmdldCgp
LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsYXllckZyYWdt
ZW50cyk7CisgICAgICAgIGNvbnRleHQgPSAmYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50ZXIuZ2V0
KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxheWVyRnJh
Z21lbnRzKTsKICAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51bGxwdHI7CiAgICAgfQogICAgIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1c2UgdGhlIG9yaWdpbmFsIHRyYW5zcGFyZW5j
eSBjb250ZXh0LgotICAgIEFTU0VSVCh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4
dCk7CisgICAgQVNTRVJUKCZ0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4dCk7CiAK
ICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rp
b25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFp
bnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAg
IC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAgICAgICAgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50TWFza0Zv
ckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNlKSAmJiAo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSkp
IHsKICAgICAgICAgICAgIC8vIFJlLXVzZSBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzIHRvIHBhaW50IGJsYWNrIGZvciB0aGUgY29tcG9zaXRpbmcgY2xpcHBpbmcgbWFzay4KLSAg
ICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVu
dHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVy
ZXIpOworICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoKGxvY2FsUGFp
bnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2UpKSB7CiAg
ICAgICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyIHJhZGl1cyBtYXNrIGZvciB0aGUgZnJhZ21l
bnRzLgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzODYsNyArNDM4
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUo
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJh
bnNsYXRpb25PZmZzZXQpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRT
aXplJiB0cmFuc2xhdGlvbk9mZnNldCkKIHsKICAgICAvLyBUaGlzIGludm9sdmVzIHN1YnRyYWN0
aW5nIG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVyIGluIG91ciBjdXJyZW50IGNvb3JkaW5h
dGUgc3BhY2UsIGJ1dCBwcmVzZXJ2aW5nCiAgICAgLy8gdGhlIGFjY3VtdWxhdGVkIGVycm9yIGZv
ciBzdWItcGl4ZWwgbGF5b3V0LgpAQCAtNDQwMiw4ICs0NDAzLDggQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ3JhcGhpY3MgY29udGV4dCB0byB0aGUgc25h
cHBpbmcgcG9zaXRpb24gdG8gYXZvaWQgb2ZmLWRldmljZS1waXhlbCBwb3NpdGluZy4KICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xh
eWVyLndpZHRoKCksIGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllci5oZWlnaHQo
KSk7CiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybS4KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFu
c2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuY29uY2F0Q1RNKHRyYW5zZm9ybS50
b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhlIHJv
b3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4
ZWxBY2N1bXVsYXRpb24gPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBp
eGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7CkBAIC00NDEyLDcgKzQ0MTMsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihj
b250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZv
LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlz
dChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1OTcsNyAr
NDU5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50
cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAgICAgfQogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRM
YXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVk
TGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7
CiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50czsKICAgICBM
YXlvdXRTaXplIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CkBAIC00NjI5LDcgKzQ2
MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21l
bnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQq
IHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dy
b3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXll
ckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJl
Y3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CkBAIC00NjU3LDcgKzQ2NTgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQqIHRyYW5z
cGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRl
eHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJv
b2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRp
bmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2JqZWN0KiBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGJvb2wgc2VsZWN0aW9uT25seSkKIHsKQEAgLTQ3
MTQsNyArNDcxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgICAgIHJlc3RvcmVD
bGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBjbGlwcGVkUmVj
dCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dp
dGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBM
YXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
ICAgICBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVu
ZGVyZXIpCiB7CiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRv
RGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA+IDE7CkBAIC00NzM2LDcgKzQ3Mzcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhh
c2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgbG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5m
bywKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewogICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQg
OiBsYXllckZyYWdtZW50cykgewpAQCAtNDc1MSw3ICs0NzUyLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLAor
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21l
bnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVu
dCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzcxLDcgKzQ3NzIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJh
Z21lbnRzLCBHcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBw
aW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvLAogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewog
ICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgewpAQCAtNDc5
MCw3ICs0NzkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXIKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBm
cmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAgIGlmIChmcmFnbWVudC5iYWNrZ3Jv
dW5kUmVjdC5pc0VtcHR5KCkpCkBAIC02OTE4LDcgKzY5MTksNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQogICAgIHJlbmRlcmVyKCkucmVwYWludCgpOwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIExheW91
dFJlY3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9uLCBMYXlvdXRSZWN0IHBh
aW50RGlydHlSZWN0LCBMYXlvdXRQb2ludCBwYWludE9mZnNldCwgUGFpbnRCZWhhdmlvciBwYWlu
dEJlaGF2aW9yLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBMYXlvdXRSZWN0
IHJlZ2lvbkNvbnRlbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlZ2lvbi0+bGF5ZXJPd25l
cigpKS5jb250ZW50Qm94UmVjdCgpOwogICAgIEN1cnJlbnRSZW5kZXJSZWdpb25NYWludGFpbmVy
IHJlZ2lvbk1haW50YWluZXIoKnJlZ2lvbik7CkBAIC02OTI2LDE3ICs2OTI3LDE3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuCiAKICAgICBMYXlvdXRTaXplIG1vdmVPZmZzZXQgPSByZWdpb24t
PmZsb3dUaHJlYWRQb3J0aW9uTG9jYXRpb24oKSAtIChwYWludE9mZnNldCArIHJlZ2lvbkNvbnRl
bnRCb3gubG9jYXRpb24oKSkgKyByZWdpb24tPmZyYWdtZW50Q29udGFpbmVyKCkuc2Nyb2xsZWRD
b250ZW50T2Zmc2V0KCk7CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91
bmRQb2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQobW92ZU9mZnNldCksIHJlbmRlcmVy
KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0LT5zYXZlKCk7
Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgLWFkanVz
dGVkUGFpbnRPZmZzZXQueSgpKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtYWRqdXN0ZWRQYWludE9mZnNldC54KCksIC1hZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSk7CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVsQWNjdW11bGF0aW9uID0gbW92ZU9mZnNldCAt
IHRvTGF5b3V0U2l6ZShMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSk7CiAgICAgcGFp
bnREaXJ0eVJlY3QubW92ZShtb3ZlT2Zmc2V0KTsKICAgICBwYWludChjb250ZXh0LCBwYWludERp
cnR5UmVjdCwgTGF5b3V0U2l6ZSgtc3VicGl4ZWxBY2N1bXVsYXRpb24ud2lkdGgoKSwgLXN1YnBp
eGVsQWNjdW11bGF0aW9uLmhlaWdodCgpKSwgcGFpbnRCZWhhdmlvciwgbnVsbHB0ciwgcGFpbnRG
bGFncyB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwogICAgIHJlZ2lvbi0+cmVzdG9y
ZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKCk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwor
ICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludEZsb3dU
aHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgZnJhZ21lbnRz
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWlu
dGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBp
ZiAoIXJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGI2
YTEyOGNhOGVmOTQ1ZDAwNmUxOGI3OTA5YWM5MTc1YzdjMmFiNDMuLmVkMWI0MDAyNDY3NDgxN2Iy
N2U3YjQ3MTc2YTA2M2UxNmYyZTJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGl0VGVzdE92ZXJm
bG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50KTsK
ICAgICBJbnRTaXplIG9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50UG9pbnQmIGFic29s
dXRlUG9pbnQpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBi
b29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KTsKLSAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZv
aWQgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFBvaW50
JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBwYWludGluZ092ZXJsYXlDb250cm9s
cyA9IGZhbHNlKTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdm9pZCBw
YWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0KCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHB1YmxpYzoKICAgICAvLyBwYWludHMg
dGhlIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZGFtYWdlIHJlY3QgZnJvbSBiYWNrIHRvCiAg
ICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBi
eSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZy
b250IHRvIGJhY2suCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlv
biA9IExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCisg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlvbiA9IExheW91dFNpemUo
KSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCiAgICAgICAgIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFBhaW50TGF5ZXJGbGFncyA9IDApOwog
ICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsK
ICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJz
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVo
YXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOworICAgIHZv
aWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QgPSBudWxscHRyKTsKIAotICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBMYXlvdXRS
ZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFBh
aW50TGF5ZXJGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBMYXlvdXRS
ZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFBh
aW50TGF5ZXJGbGFncyA9IDApOwogCiAgICAgc3RydWN0IENsaXBSZWN0c0NvbnRleHQgewogICAg
ICAgICBDbGlwUmVjdHNDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyKiBpblJvb3RMYXllciwgQ2xp
cFJlY3RzVHlwZSBpbkNsaXBSZWN0c1R5cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5
IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFy
U2l6ZSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCBpblJlc3BlY3RPdmVyZmxvd0NsaXAgPSBS
ZXNwZWN0T3ZlcmZsb3dDbGlwKQpAQCAtNzE3LDggKzcxNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21wdXRlUmVwYWludFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKICAgICB2b2lkIGNs
ZWFyUmVwYWludFJlY3RzKCk7CiAKLSAgICB2b2lkIGNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBDbGlwUmVjdCYsIEJvcmRlclJhZGl1
c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKLSAgICB2b2lkIHJl
c3RvcmVDbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlS
ZWN0LCBjb25zdCBDbGlwUmVjdCYpOworICAgIHZvaWQgY2xpcFRvUmVjdChjb25zdCBMYXllclBh
aW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IENsaXBSZWN0JiwgQm9yZGVyUmFk
aXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOworICAgIHZvaWQg
cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CiAKICAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxh
eW91dCgpIGNvbnN0OwogCkBAIC03NjgsNDIgKzc2OCw0MiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpOwogCi0gICAgYm9vbCBz
ZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQqLCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKTsKKyAgICBib29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgUGF0aCBjb21w
dXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3Qm
IHJvb3RSZWxhdGl2ZUJvdW5kcywgV2luZFJ1bGUmKSBjb25zdDsKIAotICAgIGJvb2wgc2V0dXBD
bGlwUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3Vu
ZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBib29sIHNldHVwQ2xp
cFBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRz
LCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKLSAgICBib29sIGhhc0ZpbHRl
clRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCosIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZp
bHRlcnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVs
YXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLSAgICBHcmFw
aGljc0NvbnRleHQqIGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdy
YXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVy
RnJhZ21lbnRzJik7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0Nv
bnRleHQmLCBQYWludExheWVyRmxhZ3MpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYsIExh
eWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVs
YXRpdmVCb3VuZHNDb21wdXRlZCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBhcHBseUZpbHRlcnMo
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29u
dGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZyYWdtZW50cyYpOwogCi0gICAgdm9pZCBw
YWludExheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3Mp
OwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7Ci0gICAgdm9p
ZCBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJh
bnNsYXRpb25PZmZzZXQgPSBMYXlvdXRTaXplKCkpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXll
ckZsYWdzKTsKLSAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsK
KyAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0luTmFt
ZWRGbG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdz
KTsKKyAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlv
dXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7CisgICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXll
cio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExh
eWVyRmxhZ3MpOwogCiAgICAgdm9pZCBjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
LAogICAgICAgICBQYWdpbmF0aW9uSW5jbHVzaW9uTW9kZSwKICAgICAgICAgQ2xpcFJlY3RzVHlw
ZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJl
bGV2YW5jeSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QqIGxheWVyQm91bmRpbmdCb3gg
PSBudWxscHRyLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyA9IElnbm9yZVJvb3RP
ZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21l
bnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVy
RmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRG
cm9tUm9vdCk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQqIHRyYW5zcGFy
ZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4dCYg
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFu
c3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0KiB0cmFu
c3BhcmVuY3lMYXllckNvbnRleHQsCisgICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVu
dHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRl
eHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYg
dHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5n
Um9vdEZvclJlbmRlcmVyLAogICAgICAgICBib29sIHNlbGVjdGlvbk9ubHkpOwotICAgIHZvaWQg
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UsIGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsK
LSAgICB2b2lkIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlv
ciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwYWlu
dE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYpOwotICAgIHZvaWQgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJl
bmRlcmVyKTsKLSAgICB2b2lkIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQg
cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludEZv
cmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSwgY29uc3QgTGF5ZXJGcmFn
bWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZv
aWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50T3ZlcmZs
b3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7CisgICAgdm9pZCBwYWludE1hc2tGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIp
OworICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CisgICAgdm9pZCBwYWludFRy
YW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFu
c3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKLSAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5
b3V0UmVjdCYgZGlydHlSZWN0KTsKKyAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVj
dCYgZGlydHlSZWN0KTsKIAogICAgIFJlbmRlckxheWVyKiBoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxheWVyLCBjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LAogICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgYm9vbCBhcHBs
aWVkVHJhbnNmb3JtLApAQCAtOTM4LDcgKzkzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzaXplclN0eWxlKCk7CiAK
LSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCk7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1S
ZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNv
cm5lclJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVQYWdpbmF0aW9uKCk7CiAKQEAgLTk4Miw3ICs5
ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwKICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiwgZG91
YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsCiAgICAgICAgIGRvdWJsZSogek9mZnNldCwgY29u
c3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLCBi
b29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKLSAgICB2b2lkIHBhaW50Rmxvd1RocmVhZElmUmVn
aW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFp
bnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFn
cyk7CiAgICAgYm9vbCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKENsaXBS
ZWN0cyYpIGNvbnN0OwogCiAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGN1cnJlbnRSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA1MDY0YzRmOGNmODZlZjNlNzBhM2VlNzdk
YjIyYzEyNTY2ZWI0N2Y5Li4zOTA0MWE3OTk1ZThkNmY2ZjE5ZWExN2Y2NDEzM2M5ZmVlMzgxMWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRl
bnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCit2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3Jh
cGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGNvbnN0IEludFJlY3Qm
IHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9mIHJvb3RMYXllci4KICAgICBQYWlu
dEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIHBhaW50
aW5nUGhhc2UpCiB7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFw
aAogICAgICAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KGNvbXBv
c2l0ZWRCb3VuZHNJbmNsdWRpbmdNYXJnaW4oKSkpOwogCiAgICAgICAgIC8vIFdlIGhhdmUgdG8g
dXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9k
cyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgotICAgICAgICBwYWludEludG9MYXll
cihncmFwaGljc0xheWVyLCAmY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFs
LCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwg
Y29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsK
IAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KCZyZW5kZXJlcigp
LCBkaXJ0eVJlY3QpOwogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvckhv
cml6b250YWxTY3JvbGxiYXIoKSkgewpAQCAtMjM1NCw4ICsyMzU0LDggQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllciwgR3JhcGgKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lckFuZFJl
c2l6ZXIueCgpLCAtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci55KCkpOwogICAgICAgICBMYXlvdXRS
ZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91dFJlY3QoY2xpcCk7CiAgICAgICAgIHRyYW5zZm9y
bWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKTsKLSAgICAg
ICAgbV9vd25pbmdMYXllci5wYWludFNjcm9sbENvcm5lcigmY29udGV4dCwgSW50UG9pbnQoKSwg
c25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIu
cGFpbnRSZXNpemVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOworICAg
ICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIEludFBvaW50KCks
IHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOworICAgICAgICBtX293bmluZ0xheWVy
LnBhaW50UmVzaXplcihjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOwogICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDI0ZWIyYmJkYmIx
NDIxNWYzMjQwZTk3ZjUzZTA1ZGU5ZWI0ODY0OTEuLmQ2NmZiODIxNTQ4MWI1OTVlZWNhMTkzM2Iy
YmViZGYzNDU2YjAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzVGls
ZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gKG1fY2hpbGRDb250YWlu
bWVudExheWVyICYmIG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpOyB9CiAgICAgR3JhcGhpY3NMYXll
ciogdGlsZUNhY2hlRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV91c2luZ1RpbGVk
Q2FjaGVMYXllciA/IG1fY2hpbGRDb250YWlubWVudExheWVyLmdldCgpIDogbnVsbHB0cjsgfQog
Ci0gICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3IsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBwYWludERp
cnR5UmVjdCwgUGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOwogCiAg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB1cGRhdGVHZW9tZXRyeS4KICAgICB2b2lkIGFkanVz
dEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3QmIGFuY2Vz
dG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2Vz
dG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggODk1NTZlMzFjM2ExM2ZhNTc0MzRkNzhjNmUyZjE4Y2EyMzRk
NWY4ZC4uNmY0NWU5Njc4NWVmYzNiZjAxOTYzNjZjZmQwYTJmNzZmZmMwZmZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTI4NjYsNyArMjg2Niw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC50
cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QueCgpLCAtc2Nyb2xsYmFyUmVjdC55KCkpOwogICAgIElu
dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5
KHNjcm9sbGJhclJlY3QubG9jYXRpb24oKSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWludCgmY29udGV4
dCwgdHJhbnNmb3JtZWRDbGlwKTsKKyAgICBzY3JvbGxiYXItPnBhaW50KGNvbnRleHQsIHRyYW5z
Zm9ybWVkQ2xpcCk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKQEAgLTI4ODMsNyArMjg4
Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KC1zY3JvbGxDb3JuZXIueCgpLCAtc2Nyb2xsQ29ybmVyLnkoKSk7CiAgICAgICAgIEludFJlY3Qg
dHJhbnNmb3JtZWRDbGlwID0gcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0
ZW1zOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lci5sb2NhdGlv
bigpKTsKLSAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBhaW50U2Nyb2xsQ29ybmVy
KCZjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDQwZjVlMzJjZjUwMmNiYmRlMGJmNTNjNDBjMzNhMjQx
ZjQ2NWEzNzcuLmUzY2I3OTZiZmY0NzM2ZjQ3ZGM2YTExNjZlOGU0NDJlYjBmNDYwN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0NSw3ICszNDUs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICAgICAgbV92QmFyLT53aWR0aCgp
LAogICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkp
OwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAgICAgbV92
QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJl
Y3QpKTsKKyAgICAgICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVk
SW50UmVjdChwYWludEluZm8ucmVjdCkpOwogICAgIH0KIH0KIApAQCAtMzk3LDcgKzM5Nyw3IEBA
IHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgfQogCiAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0
RmlsbENvbG9yKHRleHRDb2xvciwgY29sb3JTcGFjZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKIAogICAgIFRleHRSdW4gdGV4
dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0eWxlLmRp
cmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSwgVGV4
dFJ1bjo6Tm9Sb3VuZGluZyk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZv
bnRDYXNjYWRlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYK
ICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBpdGVtIHRleHQKLSAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCByb3VuZGVkSW50UG9pbnQoci5sb2Nh
dGlvbigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3QmlkaVRleHQoaXRlbUZvbnQs
IHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChyLmxvY2F0aW9uKCkpKTsKIH0KIAogdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGludCBsaXN0SW5kZXgpCkBAIC00MzUsNyArNDM1
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVtUmVj
dCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAgICAg
IGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwg
YmFja0NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxs
UmVjdChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29sb3JTcGFjZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKaW5kZXggYTg1NWE0OGU1Mjg4MDhiMjRjZjk1YzgxNzIwZTBjOTkxYzRiNTg2MC4uOGJhMGQ2
ZDMyMTRmNGRjNTZhY2IwMTQ4NjQ2MTg2NDA0ZjdlNWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTE5NCwxNCArMTE5NCwxNCBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEZsb2F0UmVjdCBtYXJrZXIgPSBnZXRSZWxhdGl2
ZU1hcmtlclJlY3QoKTsKICAgICBtYXJrZXIubW92ZUJ5KGJveE9yaWdpbik7CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgaWYgKGlzSW1hZ2Uo
KSkgewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywgbWFy
a2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOworICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKS5n
ZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rp
b25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2Vs
UmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnko
Ym94T3JpZ2luKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRS
ZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEyMDksMjYgKzEyMDksMjYgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBpZiAoc2Vs
ZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIExheW91dFJlY3Qgc2Vs
UmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxSZWN0
KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3Qp
LCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBm
KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBz
dHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2Fz
ZSBEaXNjOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdFbGxpcHNlKG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAg
ICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KG1hcmtlcik7
CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzMTcsMjIgKzEzMTcsMjIgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKICAgICBUZXh0UnVuIHRl
eHRSdW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBtX3RleHQs
IHN0eWxlKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpj
b250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGZhbHNlKTsKICAgICBpZiAoIXN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICBtYXJrZXIubW92ZUJ5KC1ib3hPcmlnaW4pOwogICAgICAgICBtYXJr
ZXIgPSBtYXJrZXIudHJhbnNwb3NlZFJlY3QoKTsKICAgICAgICAgbWFya2VyLm1vdmVCeShGbG9h
dFBvaW50KGJveC54KCksIGJveC55KCkgLSBsb2dpY2FsSGVpZ2h0KCkpKTsKICAgICAgICAgc3Rh
dGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShtYXJrZXIueCgpLCBt
YXJrZXIubWF4WSgpKTsKLSAgICAgICAgY29udGV4dC0+cm90YXRlKHN0YXRpY19jYXN0PGZsb2F0
PihkZWcycmFkKDkwLikpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1tYXJrZXIueCgp
LCAtbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG1hcmtlci54KCks
IG1hcmtlci5tYXhZKCkpOworICAgICAgICBjb250ZXh0LnJvdGF0ZShzdGF0aWNfY2FzdDxmbG9h
dD4oZGVnMnJhZCg5MC4pKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1tYXJrZXIueCgp
LCAtbWFya2VyLm1heFkoKSk7CiAgICAgfQogCiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0g
RmxvYXRQb2ludChtYXJrZXIueCgpLCBtYXJrZXIueSgpICsgc3R5bGUoKS5mb250TWV0cmljcygp
LmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKExh
eW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKIAogICAgIGlmICh0eXBlID09IEFzdGVy
aXNrcyB8fCB0eXBlID09IEZvb3Rub3RlcykKLSAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
dGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIHN1
ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKIApAQCAt
MTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgfQogICAg
ICAgICB0ZXh0UnVuLnNldFRleHQoU3RyaW5nVmlldyh0b0RyYXcpKTsKIAotICAgICAgICBjb250
ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAgY29udGV4
dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAppbmRleCAy
MTcxMzg4ZWFmZThhOGMyM2JkMzE1OTZhYzBjZWU5NDgyOGI4YjFhLi5iNTJhNmM5YjRjZGRiNjkw
MTMwY2ZiOTFiZTdmOGRmMmI2NGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCkBAIC05MSw5ICs5MSw5IEBAIHN0YXRpYyBGbG9h
dFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9v
bWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAg
ICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxl
dmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3Qu
eCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVu
em9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0K
ICAgICByZXR1cm4gdW56b29tZWRSZWN0OwogfQpAQCAtMTI4LDc2ICsxMjgsNzYgQEAgdm9pZCBS
ZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHls
ZSYgc3R5bGUpCiAKIGJvb2wgUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xz
UGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBwYXJ0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4
dCgpKTsKIAogICAgIHN3aXRjaCAocGFydCkgewogICAgIGNhc2UgTWVkaWFFbnRlckZ1bGxzY3Jl
ZW5CdXR0b246CiAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uOgogICAgICAgICBp
ZiAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAg
ICAgICAgICBib29sIGVudGVyQnV0dG9uID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhRW50
ZXJGdWxsc2NyZWVuQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoZW50ZXJC
dXR0b24gPyBXS01lZGlhVUlQYXJ0RnVsbHNjcmVlbkJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRFeGl0
RnVsbHNjcmVlbkJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChlbnRl
ckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tNZWRpYVVJUGFydEV4
aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbjoKICAgICBjYXNlIE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50KiBidG4gPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAg
IGJvb2wgY2FwdGlvbnNWaXNpYmxlID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoY2FwdGlv
bnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6IFdLTWVk
aWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0
aW9uc0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvbjoKICAg
ICBjYXNlIE1lZGlhVW5NdXRlQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVt
ZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGF1ZGlvRW5hYmxlZCA9IGJ0bi0+
ZGlzcGxheVR5cGUoKSA9PSBNZWRpYU11dGVCdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdLTWVkaWFV
SVBhcnRVbk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoYXVk
aW9FbmFibGVkID8gV0tNZWRpYVVJUGFydE11dGVCdXR0b24gOiBXS01lZGlhVUlQYXJ0VW5NdXRl
QnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVBh
dXNlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFQbGF5QnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGNhblBsYXkg
PSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFQbGF5QnV0dG9uOwotICAgICAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoY2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDogV0tNZWRp
YVVJUGFydFBhdXNlQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KGNh
blBsYXkgPyBXS01lZGlhVUlQYXJ0UGxheUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRQYXVzZUJ1dHRv
biwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXdpbmRC
dXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRSZXdpbmRCdXR0
b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0UmV3aW5kQnV0
dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla1RvUmVh
bHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0
ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVNlZWtCYWNrQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVNl
ZWtGb3J3YXJkQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVNsaWRlcjogewogICAgICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gcGFyZW50TWVkaWFFbGVtZW50KG8pKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdW56b29t
ZWRSZWN0ID0gZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQobywgcGFpbnRJ
bmZvLCByKTsKLSAgICAgICAgICAgIHdrRHJhd01lZGlhU2xpZGVyVHJhY2socGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykp
OworICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayhwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVyY2VudExv
YWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1cnJlbnRU
aW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1lZGlhU2xpZGVyVGh1bWI6
Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRUaW1lbGluZVNsaWRlclRo
dW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0
YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRpbWVsaW5l
U2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFZv
bHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXJDb250YWluZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRp
YVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVZvbHVtZVNsaWRlclRodW1iOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYjoK
LSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRl
cm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRG
dWxsU2NyZWVuVm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0QmFja2dyb3VuZCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFD
dXJyZW50VGltZURpc3BsYXk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXgg
N2UxZmQ1YjRjNGY2N2Y4MzYxNzZhMjVkMTFkNDk5OWM3ZWY3OGIyYi4uNTljNjNjMGEwYmMyZjVk
MTJiZjFjMjRhMjVjNzY0OGY2NThkMjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Zmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1
bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0g
bXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG8KICAgICBpZiAoY29sQ291bnQgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4
dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8u
Y29udGV4dCgpKTsKIAogICAgIGlmIChmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzSW5saW5lKCkp
IHsKICAgICAgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIF4gZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CkBAIC02MTcsNyAr
NjE3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueSgp
ICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBydWxlTG9n
aWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7CiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBydWxlQm90dG9tID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVU
b3AgKyBjb250ZW50SGVpZ2h0KCkgOiBydWxlVG9wICsgcnVsZVRoaWNrbmVzczsKICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gc25hcHBlZEludFJlY3QocnVs
ZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCAtIHJ1bGVMZWZ0LCBydWxlQm90dG9tIC0gcnVsZVRv
cCk7Ci0gICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29udGV4
dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAw
LCAwLCBhbnRpYWxpYXMpOworICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWlu
dEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9y
LCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCA9IGN1cnJMb2dpY2FsTGVmdE9mZnNldDsK
QEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVt
blJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgY29sQ291bnQ7IGkrKykgewogICAgICAgICAgICAgcnVsZVJl
Y3QubW92ZShzdGVwKTsKICAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3Qg
PSBzbmFwcGVkSW50UmVjdChydWxlUmVjdCk7Ci0gICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoKnBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVs
ZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICBkcmF3TGlu
ZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJv
eFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA5NzllOWNmZjczYzJiZWQ5ZDA5NzM2YjhiYmM2YTE3NzBmZDMyNDdkLi5jODA1MWQ5MWEzZmEx
MmFlYWJhYWFlNmJhYzU2NGE5ZWZlNjYyMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojph
ZGRQREZVUkxSZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gZG93bmNhc3Q8RWxlbWVudD4oKm5v
ZGUpLmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChub2RlLT5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0KSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRVUkxGb3JSZWN0KG5vZGUtPmRvY3VtZW50KCkuY29t
cGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmlu
ZGV4IDhjOThiYmE4NTQ2MzYwZmEwMmVkNWNiNWFhNzdlMjU0YTBhZWYyOWQuLmZkMjA1MDRlYzNk
NWNjZTgxYWI2MTRhYTYyZDU1YmQ3MDcxNDM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc4LDEwICsxNzgsMTAgQEAgdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICAgICAgICAgIGNvbXBsZXRlbHlDbGlwcGVkT3V0ID0gdHJ1ZTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9y
ZGVyIHJhZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50
IHRoYXQgZ2V0cyBwYWludGVkLgotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICAgICAg
RmxvYXRSb3VuZGVkUmVjdCByb3VuZGVkSW5uZXJSZWN0ID0gRmxvYXRSb3VuZGVkUmVjdChzdHls
ZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsCiAgICAgICAgICAgICAgICAg
cGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdCb3R0b20oKSArIGJvcmRlckJvdHRv
bSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBwYWRkaW5nUmlnaHQoKSArIGJvcmRl
clJpZ2h0KCksIHRydWUsIHRydWUpKTsKLSAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0
KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOworICAgICAg
ICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRSZWN0
LCByb3VuZGVkSW5uZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg5LDcgKzE4OSw3
IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIHBhaW50UmVwbGFjZWQocGFpbnRJ
bmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAogICAgICAgICBpZiAoc3R5bGUoKS5oYXNCb3Jk
ZXJSYWRpdXMoKSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAgICAgICAg
IAogICAgIC8vIFRoZSBzZWxlY3Rpb24gdGludCBuZXZlciBnZXRzIGNsaXBwZWQgYnkgYm9yZGVy
LXJhZGl1cyByb3VuZGluZywgc2luY2Ugd2Ugd2FudCBpdCB0byBydW4gcmlnaHQgdXAgdG8gdGhl
IGVkZ2VzIG9mCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICBpZiAoZHJhd1NlbGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25Q
YWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0aW9uUGFp
bnRpbmdSZWN0Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCks
IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9u
UGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcAppbmRleCAzNzcyMGZlMzg5YzE5MzZjOGRlMjY1ZGM2ZWM0YTFmYmNkMjA3MzNmLi42
MWQwYTE3YjM4YTE5OGQyZmNkZjBlMDZkYWI0MjdlMjYyMTJkOWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgUmVu
ZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAgICAgUmVuZGVyTGF5ZXIqIHJvb3RQYWludGluZ0xheWVyID0g
bGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJlbnQoKSA6IGxheWVyKCktPmVuY2xv
c2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKICAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFp
bnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFpbnRpbmdMYXllciwgcGFpbnRJbmZvLnJlY3Qs
IFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNpemUoKSwgMCk7CiAgICAgICAgIFJlbmRlckxh
eWVyOjpQYWludExheWVyRmxhZ3MgZmxhZ3MgPSBSZW5kZXJMYXllcjo6UGFpbnRMYXllckhhdmVU
cmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gfCBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyB8IFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uOwotICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+
cGFpbnRMYXllcihwYWludEluZm8uY29udGV4dCwgcGFpbnRpbmdJbmZvLCBmbGFncyk7CisgICAg
ICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0KCksIHBh
aW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VNYXNrKQogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50
T2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAKaW5kZXggYzM2NDEwZDU3MjA1MjJlMWRiOWYyNGY4MDA4OTM2MDgwNTU5OTg0Ny4uMjc3ZGFj
OGRmYTRjYzNhMzNlZWFkZDI3ZTFmMWU4MzYyYjNjNjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTEwMiw5ICsxMDIsOSBAQCB2b2lkIFJl
bmRlclNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygp
OwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkK
IHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChj
b250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsYmFy
UGFydHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lk
IFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydChTY3JvbGxiYXJQYXJ0IHBhcnRU
eXBlKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcGFydFJlbmRlcmVyID0g
bV9wYXJ0cy5nZXQocGFydFR5cGUpOwogICAgIGlmICghcGFydFJlbmRlcmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGY2Yzg1Yzk3N2MwYjRiZmQz
ZWZiNjk4YWRiYmFjZGQwMDA3OTdkNDYuLmYyN2VjMDNiYmIwOTA3ODBkNDJlMzQ3YjZjMjNhYTRk
NmQ4YzA0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBvd25pbmdSZW5kZXJl
cigpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludFBhcnQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyUGFydCwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRQYXJ0KEdyYXBoaWNzQ29u
dGV4dCYsIFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIEludFJlY3QgYnV0
dG9uUmVjdChTY3JvbGxiYXJQYXJ0KTsKICAgICBJbnRSZWN0IHRyYWNrUmVjdChpbnQgc3RhcnRM
ZW5ndGgsIGludCBlbmRMZW5ndGgpOwpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkUGFydChT
Y3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc3NlZFBhcnQo
U2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWQ3MWE4OWIxY2NkOTg1ZDI2M2ZjMmUyYTBl
NTM4Nzc4OTI1MzkwMy4uMGNiZWMwZmM5MzRmMTZlZGVmMTQ1MGQ4NTA0NzQwNTJhN2RmMDk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cApAQCAtMTU1LDIzICsxNTUsMjMgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWMKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9S
ZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJl
IG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0LgogICAgIHNldExvY2F0aW9uKHJlY3QubG9j
YXRpb24oKSAtIHRvTGF5b3V0U2l6ZShwYWludE9mZnNldCkpOwogICAgIHNldFdpZHRoKHJlY3Qu
d2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpOwogCi0gICAgaWYgKGdyYXBo
aWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZSgpLm9wYWNpdHkoKSkKKyAg
ICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUoKS5vcGFj
aXR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBSZW5kZXJMYXll
cnMgZm9yIHNjcm9sbGJhciBwYXJ0cywgc28gd2UgbmVlZCB0byBoYW5kbGUgb3BhY2l0eSBoZXJl
LgogICAgIC8vIE9wYWNpdHkgZm9yIFNjcm9sbGJhckJHUGFydCBpcyBoYW5kbGVkIGJ5IFJlbmRl
clNjcm9sbGJhclRoZW1lOjp3aWxsUGFpbnRTY3JvbGxiYXIoKS4KICAgICBib29sIG5lZWRzVHJh
bnNwYXJlbmN5TGF5ZXIgPSBtX3BhcnQgIT0gU2Nyb2xsYmFyQkdQYXJ0ICYmIHN0eWxlKCkub3Bh
Y2l0eSgpIDwgMTsKICAgICBpZiAobmVlZHNUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJl
Y3QpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5
bGUoKS5vcGFjaXR5KCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5bGUoKS5vcGFjaXR5KCkpOwogICAgIH0KICAgICAKICAg
ICAvLyBOb3cgZG8gdGhlIHBhaW50LgpAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgUmVuZGVyU2Ny
b2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QKICAgICBwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChu
ZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggN2E3MWZhNzM5ZjhkODUxMWM0
OTRhMDA0YTQzOTMzNzJmMTM0MzFjYS4uODY1OTkxNDJhOWZjYmFlMmM1OGU4NWIwZDBkYjE4Mjdk
YWQ5YWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBw
YWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3Qg
TGF5b3V0UmVjdCYpOwogCiAgICAgLy8gU2Nyb2xsYmFyIHBhcnRzIG5lZWRzIHRvIGJlIHJlbmRl
cmVkIGF0IGRldmljZSBwaXhlbCBib3VuZGFyaWVzLgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBt
YXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdp
bkJveC50b3AoKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gudG9wKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDA5ZDk2NTIx
OGU4NzVlZDY3NGE0YmNhMzcyZjhiOWI1ZWEyODM3OGEuLmRiNTI4OGZkYzVlNTUyNmE0M2YwYWJl
ZmI5N2Q5NmNmZDRkMDg2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI1LDM1ICsxMjUsMzUgQEAgdm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNj
cm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29u
dGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYg
c2Nyb2xsYmFyKQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5w
YWludFBhcnQoJmNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgp
KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNv
bnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgpKTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZj
b250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAK
IHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3Jv
bGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVu
ZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsK
IH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Ny
b2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJl
bmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVjdCk7
CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZj
b250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4o
c2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNDdm
MGY4MDMzZWIwOTRjMDRkMTk0M2FlZjY3ODQxZWY5NjQxODIwOC4uZjdlNDE5ZDA1YTFiNDMxNDc3
Y2Q1NTUyZjhjNmRjMzBkYzllOWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAppbmRleCA0NTVmY2U4OTI5ZDA1ZjJlYTEwMTNmNzNlN2ZlM2ViYjdkOTQ5
OThlLi5iZDFhOWQ1MWQyNWIzZDg5YzQxYTA5MTAyOWE4OTM0ZTFkZDY0NTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
QEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNu
YXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmICghY1dp
ZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShj
V2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IGxvY2F0
aW9uKCkgKyBwYWludE9mZnNldDsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCku
Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRp
b25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykp
OwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNv
cihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBjNzBhNGQxMjAw
N2E4NDI3YzI5YzI1NDYyNTdkMzVhMzA1NzMyMGE2Li40ODU1OTVhMWI4MDY0YTYzMmY5Zjg1MzQ0
ZDljZTFmOGQ2Mzk2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKQEAgLTc0OSw3ICs3NDksNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcAogICAgIExheW91
dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBzdWJ0cmFjdENhcHRpb25SZWN0
KHJlY3QpOwogCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0g
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFib3hT
aGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5sb2NhdGlvbigpLCBibGVlZEF2
b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcmVjdCwgc3R5bGUo
KSwgTm9ybWFsKTsKICAgICBwYWludEJhY2tncm91bmQocGFpbnRJbmZvLCByZWN0LCBibGVlZEF2
b2lkYW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CmluZGV4IDE3ZTVhYzQ1NDBiNDczYmFlNmZhNmY5YjU3NTM2ZTRjNDM0ZDg2NTcuLjExNWZmYzc5
NzQ4NmI3OWE5ZmNjNDhjOGI3YzA4NjljNmM3Y2Q4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjAxLDggKzEyMDEsOCBAQCB2b2lkIFJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChwYWludFJlY3QubWF4WSgpICsgdGFibGUoKS0+b3V0
ZXJCb3JkZXJCb3R0b20oKSA8PSBsb2NhbFJlcGFpbnRSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBpZiAoIXRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNz
Q29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoIXRhYmxlKCktPmN1cnJl
bnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZUZvckNlbGxGbG93
ID0gdGhpcy0+c3R5bGVGb3JDZWxsRmxvdygpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG8KICAgICAKICAgICBmb3IgKENvbGxhcHNlZEJvcmRlciogYm9yZGVy
ID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7IGJvcmRlcjsgYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9y
ZGVyKCkpIHsKICAgICAgICAgaWYgKGJvcmRlci0+Ym9yZGVyVmFsdWUuaXNTYW1lSWdub3JpbmdD
b2xvcigqdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkpKQotICAgICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KGJvcmRl
ci0+eDEsIGJvcmRlci0+eTEpLCBGbG9hdFBvaW50KGJvcmRlci0+eDIsIGJvcmRlci0+eTIpKSwg
Ym9yZGVyLT5zaWRlLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm9yZGVyLT54MSwgYm9yZGVyLT55MSksIEZsb2F0
UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55MikpLCBib3JkZXItPnNpZGUsCiAgICAgICAgICAg
ICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAwLCAwLCBh
bnRpYWxpYXMpOwogICAgIH0KIH0KQEAgLTEyNzUsMTEgKzEyNzUsMTEgQEAgdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXkKICAgICAgICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUg
YmFja2dyb3VuZCB3b3VsZCBwYWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMg
b3RoZXJ3aXNlLiAgVGhpcyBvbmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAg
ICBib29sIHNob3VsZENsaXAgPSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNr
Z3JvdW5kT2JqZWN0ID09IHRoaXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYg
dGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBzaG91bGRDbGlwKTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0
KCksIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQo
KSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSwKICAgICAgICAgICAgICAg
ICB3aWR0aCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKSwgaGVpZ2h0KCkgLSBib3Jk
ZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChj
bGlwUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywg
YywgYmdMYXllciwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzbmFwcGVkSW50UmVj
dChmcmFtZVJlY3QoKSkuc2l6ZSgpKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291
cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBjOTEwYWI2ZjZhYjA2OWJhNGI2
MzI1MjI0ZmVhMDAxMmM0NmY3ZTUzLi4zZTlkOGE1ZmIxY2FiYzkxMGQyODRkYTE1ZjNkZDcwZTRj
NmFjOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBh
aW50Um93R3JvdXBCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGJvb2wgYW4KICAg
ICByZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29u
dGV4dCwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm9yZGVyQ29s
b3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICBkcmF3TGluZUZvckJveFNp
ZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoYm9yZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKIH0K
IAogaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6b2Zmc2V0TGVmdEZvclJvd0dyb3VwQm9yZGVyKFJl
bmRlclRhYmxlQ2VsbCogY2VsbCwgY29uc3QgTGF5b3V0UmVjdCYgcm93R3JvdXBSZWN0LCB1bnNp
Z25lZCByb3cpCkBAIC0xMTY5LDExICsxMTY5LDExIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9u
OjpwYWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5m
CiB7CiAgICAgaWYgKHRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpLT5wcmVjZWRlbmNlKCkg
PiBCUk9XR1JPVVApCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxp
YXNMaW5lcyhwYWludEluZm8uY29udGV4dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRB
bnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCgpKTsKICAgICBMYXlvdXRSZWN0IHJvd0dy
b3VwUmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgcm93R3JvdXBS
ZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQob3V0ZXJCb3JkZXJMZWZ0KCZzdHlsZSksIChib3JkZXJT
aWRlID09IEJTUmlnaHQpID8gMCA6IG91dGVyQm9yZGVyVG9wKCZzdHlsZSkpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggN2EyYjk3NmNkNjk5MmJlNTJi
NjAwZjYwYmRiNDA2ZjVmZTY0YzEwYy4uZGNhYzRmYTczMTZlYzM1YjBlNjFiYzIwMGQ4MjIxZWE2
MDIzZTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0y
NjcsMTIgKzI2NywxMiBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gm
IGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIC8vIElmIHBhaW50
aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJlbid0IHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIHRo
ZW4ganVzdCBiYWlsLgogICAgIC8vIElmIHdlIGFyZSB1cGRhdGluZyBjb250cm9sIHRpbnRzLCBq
dXN0IHNjaGVkdWxlIGEgcmVwYWludCBpZiB0aGUgdGhlbWUgc3VwcG9ydHMgdGludGluZwogICAg
IC8vIGZvciB0aGF0IGNvbnRyb2wuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT51cGRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkudXBkYXRpbmdD
b250cm9sVGludHMoKSkgewogICAgICAgICBpZiAoY29udHJvbFN1cHBvcnRzVGludHMoYm94KSkK
ICAgICAgICAgICAgIGJveC5yZXBhaW50KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgp
OwpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBC
dXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRl
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIG1f
dGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250
ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5
bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwg
Y29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVj
dCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQxMSw3ICs0MTEsNyBAQCBib29s
IFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYg
Y29udHJvbFN0YXRlcywgY29ucwogCiBib29sIFJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHko
Y29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDY1LDcg
KzQ2NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seShjb25zdCBSZW5kZXJC
b3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluCiAKIGJvb2wgUmVuZGVyVGhlbWU6OnBh
aW50RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50UmVjdCBp
bnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7CkBAIC0xMDUzLDggKzEw
NTMsOCBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICB0aWNrUmVnaW9uV2lkdGgg
PSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KICAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBp
KyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwogICAg
ICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50Pigqbm9kZSk7CkBAIC0xMDY5LDcgKzEwNjksNyBAQCB2b2lkIFJlbmRlclRoZW1l
OjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludAogICAgICAgICAgICAgdGlja1JlY3Quc2V0WCh0aWNrUG9zaXRpb24pOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRZKHRpY2tQb3NpdGlvbik7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aWNrUmVjdCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggZDBmY2FkNjk2MjM0
YjNkZGVlNzI0NWNkOTg0ZGIwZTQ2OGFjNzlhYi4uYmFjMWQ2ZjIxMDBhNTk1N2YzMTAwMzRmOTM3
NWM5Y2E2NDY5ZjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVF
ZmwuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVt
ZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGMKICAgICBl
ZGplX29iamVjdF9tZXNzYWdlX3NpZ25hbF9wcm9jZXNzKGVudHJ5LT5lZGplKCkpOwogICAgIGV2
YXNfcmVuZGVyKGVjb3JlX2V2YXNfZ2V0KGVudHJ5LT5jYW52YXMoKSkpOwogCi0gICAgY2Fpcm9f
dCogY2Fpcm8gPSBpbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNh
aXJvX3QqIGNhaXJvID0gaW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgQVNTRVJUKGNhaXJvKTsKIAogICAgIGNhaXJvX3NhdmUoY2Fpcm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMTg2Yjc2MDE0OWU2YWVlNjBj
MGRhY2I3NDIyZTkwNTc0Mjg3NjFiMS4uZmVmYmIyNGI1NjQ4MjRlMzQ2MzljNTE5MDllZDNmMDZj
N2QzOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3Bw
CkBAIC01MjYsMTYgKzUyNiwxNiBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZShjb25zdCBSZW5k
ZXJUaGVtZUd0ayogdGhlbWUsIEdUeXBlIHdpZGdldFR5cGUsIGNvbnN0IFJlbgogICAgIGd0a19z
dHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdz
PihmbGFncykpOwogCiAgICAgaWYgKHdpZGdldFR5cGUgPT0gR1RLX1RZUEVfQ0hFQ0tfQlVUVE9O
KQotICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBlbHNlCi0gICAgICAgIGd0a19y
ZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgICAgICBndGtfcmVuZGVyX29wdGlvbihjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmpl
Y3QpKSB7CiAgICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdChyZWN0KTsKICAgICAgICAgZ2lu
dCBpbmRpY2F0b3JTcGFjaW5nOwogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUo
Y29udGV4dCwgImluZGljYXRvci1zcGFjaW5nIiwgJmluZGljYXRvclNwYWNpbmcsIG51bGxwdHIp
OwogICAgICAgICBpbmRpY2F0b3JSZWN0LmluZmxhdGUoaW5kaWNhdG9yU3BhY2luZyk7Ci0gICAg
ICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5kaWNhdG9yUmVjdC55KCksCisg
ICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaW5kaWNhdG9yUmVjdC54KCksIGluZGljYXRvclJlY3QueSgp
LAogICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC53aWR0aCgpLCBpbmRpY2F0b3JSZWN0LmhlaWdo
dCgpKTsKICAgICB9CiAKQEAgLTU5NCw4ICs1OTQsOCBAQCBzdGF0aWMgdm9pZCByZW5kZXJCdXR0
b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
bgogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxF
X0NMQVNTX0RFRkFVTFQpOwogICAgIH0KIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJl
Y3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgp
LCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5k
ZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lk
dGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0
LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWln
aHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmplY3QpKSB7CiAgICAg
ICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7CkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGlj
IHZvaWQgcmVuZGVyQnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBSZW4KICAgICAgICAgICAgIGJ1dHRvblJlY3QubW92ZShjaGlsZERpc3Bs
YWNlbWVudFgsIGNoaWxkRGlzcGxhY2VtZW50WSk7CiAgICAgICAgIH0KIAotICAgICAgICBndGtf
cmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRo
KCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRl
eHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJl
Y3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKICAgICB9CiB9CiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludEJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC03NDQsNyArNzQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29u
c3QgUGFpbnQKICAgICAvLyBGSVhNRTogYWRvcHQgc3VicGl4ZWwgdGhlbWVzLgogICAgIEludFJl
Y3QgcmVjdCA9IEludFJlY3Qocik7CiAKLSAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fp
cm9Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
ICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PEd0a1RleHREaXJl
Y3Rpb24+KGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkp
KTsKIAogICAgIC8vIFBhaW50IHRoZSBidXR0b24uCkBAIC04ODAsOCArODgwLDggQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJP
YmplY3QsIGNvbnN0IFBhaW4KICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfRk9DVVNF
RDsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8
R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVy
X2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVj
dCkgJiYgaXNFbmFibGVkKHJlbmRlck9iamVjdCkpIHsKICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJp
b3JGb2N1czsKQEAgLTg5MCw3ICs4OTAsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRl
eHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbgogICAg
ICAgICBpZiAoIWludGVyaW9yRm9jdXMpIHsKICAgICAgICAgICAgIEludFJlY3QgZm9jdXNSZWN0
KHJlY3QpOwogICAgICAgICAgICAgZm9jdXNSZWN0LmluZmxhdGUoZm9jdXNXaWR0aCArIGZvY3Vz
UGFkKTsKLSAgICAgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3Qu
eSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAg
IGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgZm9jdXNSZWN0LngoKSwgZm9jdXNSZWN0LnkoKSwgZm9jdXNSZWN0Lndp
ZHRoKCksIGZvY3VzUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkwNCw3
ICs5MDQsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjbwogICAgIHJldHVybiBwYWludFRleHRG
aWVsZChvLCBpLCByKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGlj
b25SZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGljb25SZWN0KQogewog
ICAgIEludFNpemUgaWNvblNpemUoZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgoaWNvbiksIGdka19waXhi
dWZfZ2V0X2hlaWdodChpY29uKSk7CiAgICAgR1JlZlB0cjxHZGtQaXhidWY+IHNjYWxlZEljb247
CkBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnMKICAgICAgICAgaWNv
biA9IHNjYWxlZEljb24uZ2V0KCk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJv
X3NldF9zb3VyY2VfcGl4YnVmKGNyLCBpY29uLCBpY29uUmVjdC54KCksIGljb25SZWN0LnkoKSk7
CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5k
ZXJPYmplY3QmIHIKICAgICAgICAgZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUo
KS5kaXJlY3Rpb24oKSksCiAgICAgICAgIGd0a0ljb25TdGF0ZSh0aGlzLCByZW5kZXJPYmplY3Qp
LAogICAgICAgICBnZXRJY29uU2l6ZUZvclBpeGVsU2l6ZShyZWN0LmhlaWdodCgpKSk7Ci0gICAg
cGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsK
KyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgpLCBpY29u
UmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyT2JqZQogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVj
dC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMsIHJlbmRl
ck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVpZ2h0KCkp
KTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQoKSwgaWNv
blJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGljb24uZ2V0
KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwNDcsNyArMTA0Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiB7CiAgICAgLy8gVGhlIG90aGVyIHBhaW50IG1l
dGhvZHMgZG9uJ3QgbmVlZCB0byBjaGVjayB3aGV0aGVyIHBhaW50aW5nIGlzIGRpc2FibGVkIGJl
Y2F1c2UgUmVuZGVyVGhlbWUgYWxyZWFkeSBjaGVja3MgaXQKICAgICAvLyBiZWZvcmUgY2FsbGlu
ZyB0aGVtLCBidXQgcGFpbnRDYXBzTG9ja0luZGljYXRvcigpIGlzIGNhbGxlZCBieSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUgd2hpY2ggZG9lc24ndCBjaGVjayBpdC4KLSAgICBpZiAocGFp
bnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aW50IGljb25TaXplID0gc3RkOjptaW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKQEAg
LTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRp
Y2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiAgICAgICAgIHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpIC0gaWNvblNpemUsCiAgICAgICAgIHJlY3QueSgpICsgKHJlY3Qu
aGVpZ2h0KCkgLSBpY29uU2l6ZSkgLyAyLAogICAgICAgICBpY29uU2l6ZSwgaWNvblNpemUpOwot
ICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVj
dCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwg
aWNvblJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTAyLDE1ICsxMTAyLDE1IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVyT2JqZWN0
KSkKICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIEdUS19TVEFU
RV9GTEFHX0lOU0VOU0lUSVZFKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2Zy
YW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0
a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVjdCkp
IHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKICAgICAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsICJmb2N1cy1saW5lLXdpZHRoIiwgJmZvY3VzV2lk
dGgsICJmb2N1cy1wYWRkaW5nIiwgJmZvY3VzUGFkLCBudWxscHRyKTsKICAgICAgICAgSW50UmVj
dCBmb2N1c1JlY3QocmVjdCk7CiAgICAgICAgIGZvY3VzUmVjdC5pbmZsYXRlKGZvY3VzV2lkdGgg
KyBmb2N1c1BhZCk7Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1Jl
Y3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAg
Z3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lk
dGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICB9CiAKICAgICBndGtfc3R5bGVfY29udGV4
dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGEKICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOwogICAgIGd0
a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZs
YWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9zbGlkZXIoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAgICBndGtfcmVuZGVyX3NsaWRlcihjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKICAgICAgICAgcGFydCA9PSBT
bGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwgOiBH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9y
ZShjb250ZXh0KTsKQEAgLTExNzQsOCArMTE3NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NM
QVNTX1RST1VHSCk7CiAKLSAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3RrX3JlbmRlcl9mcmFtZShjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVy
X2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsK
IApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVz
c0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBwcm9n
cmVzc1JlY3QgPSBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KHJlbmRlck9i
amVjdCwgcHJvZ3Jlc3NSZWN0KTsKIAogICAgIGlmICghcHJvZ3Jlc3NSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgZ3RrX3JlbmRlcl9hY3Rpdml0eShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55
KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55KCksIHBy
b2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0
eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjU2
LDggKzEyNTYsOCBAQCBzdGF0aWMgdm9pZCBwYWludFNwaW5BcnJvd0J1dHRvbihSZW5kZXJUaGVt
ZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgYwogICAgIGJ1dHRvblJlY3Quc2V0
SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyAyKTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfanVu
Y3Rpb25fc2lkZXMoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrSnVuY3Rpb25TaWRlcz4oanVuY3Rp
b24pKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0
LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKLSAgICBndGtf
cmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRo
KCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25S
ZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55
KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAKICAgICAvLyBQ
YWludCBhcnJvdyBjZW50ZXJlZCBpbnNpZGUgYnV0dG9uLgogICAgIC8vIFRoaXMgY29kZSBpcyBi
YXNlZCBvbiBndGtzcGluYnV0dG9uLmMgY29kZS4KQEAgLTEyODMsNyArMTI4Myw3IEBAIHN0YXRp
YyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVD
b250ZXh0KiBjb250ZXh0LCBjCiAgICAgZ2ludCBoZWlnaHQgPSAod2lkdGggKyAxKSAvIDI7CiAK
ICAgICBhcnJvd1JlY3QubW92ZSgoYXJyb3dSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyLCAoYXJy
b3dSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDIpOwotICAgIGd0a19yZW5kZXJfYXJyb3coY29u
dGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBhbmdsZSwg
YXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgpOworICAgIGd0a19yZW5kZXJfYXJy
b3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
YW5nbGUsIGFycm93UmVjdC54KCksIGFycm93UmVjdC55KCksIHdpZHRoKTsKIAogICAgIGd0a19z
dHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBT
dHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKQogfQogI2Vu
ZGlmCiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgY2hhciogc3ltYm9saWNJY29uTmFtZSwgY29uc3QgY2hhciogZmFs
bGJhY2tTdG9ja0ljb25OYW1lKQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBj
b25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCiB7CiAgICAgSW50UmVjdCBpY29uUmVj
dCgKICAgICAgICAgcmVjdC54KCkgKyAocmVjdC53aWR0aCgpIC0gbV9tZWRpYUljb25TaXplKSAv
IDIsCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpoYXNPd25EaXNh
YmxlZFN0YXRlSGFuZGxpbmdGb3IoQ29udHJvbFBhcnQgcGFydCkgY29uc3QKIAogYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QsICJ2aWV3LWZ1bGxzY3JlZW4tc3ltYm9saWMiLCBHVEtfU1RP
Q0tfRlVMTFNDUkVFTik7CisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0
LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCAidmlldy1mdWxsc2NyZWVuLXN5bWJvbGljIiwg
R1RLX1NUT0NLX0ZVTExTQ1JFRU4pOwogfQogCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1l
ZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xNDQ2LDcgKzE0NDYs
NyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIG11dGVkID0gbWVkaWFFbGVtZW50LT5tdXRlZCgpOwotICAgIHJldHVybiBwYWludE1l
ZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsCisgICAgcmV0
dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCgpLCBy
ZWN0LAogICAgICAgICBtdXRlZCA/ICJhdWRpby12b2x1bWUtbXV0ZWQtc3ltYm9saWMiIDogImF1
ZGlvLXZvbHVtZS1oaWdoLXN5bWJvbGljIiwKICAgICAgICAgbXV0ZWQgPyAiYXVkaW8tdm9sdW1l
LW11dGVkIiA6ICJhdWRpby12b2x1bWUtaGlnaCIpOwogfQpAQCAtMTQ2MSwxOSArMTQ2MSwxOSBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxheUJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9v
bCBzaG93UGxheUJ1dHRvbiA9IG5vZGVIYXNDbGFzcyhub2RlLCAicGF1c2VkIik7CiAKLSAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LAorICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCwKICAgICAgICAgc2hvd1BsYXlCdXR0b24gPyAibWVkaWEtcGxheWJh
Y2stc3RhcnQtc3ltYm9saWMiIDogIm1lZGlhLXBsYXliYWNrLXBhdXNlLXN5bWJvbGljIiwKICAg
ICAgICAgc2hvd1BsYXlCdXR0b24gPyBHVEtfU1RPQ0tfTUVESUFfUExBWSA6IEdUS19TVE9DS19N
RURJQV9QQVVTRSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrQmFj
a0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVk
aWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNl
ZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfUkVXSU5EKTsKKyAgICByZXR1
cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJl
Y3QsICJtZWRpYS1zZWVrLWJhY2t3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElBX1JFV0lO
RCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0
b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNlZWstZm9y
d2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9GT1JXQVJEKTsKKyAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJt
ZWRpYS1zZWVrLWZvcndhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfRk9SV0FSRCk7CiB9
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oY29uc3Qg
UmVuZGVyT2JqZWN0JiByZQogICAgICAgICBpY29uID0gZ2V0U3RvY2tTeW1ib2xpY0ljb25Gb3JX
aWRnZXRUeXBlKEdUS19UWVBFX0NPTlRBSU5FUiwgInVzZXItaW52aXNpYmxlLXN5bWJvbGljIiwg
R1RLX1NUT0NLX0pVU1RJRllfRklMTCwKICAgICAgICAgICAgIGd0a1RleHREaXJlY3Rpb24ocmVu
ZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLCBndGtJY29uU3RhdGUodGhpcywgcmVuZGVy
T2JqZWN0KSwgaWNvblJlY3Qud2lkdGgoKSk7CiAgICAgfQotICAgIHBhaW50R2RrUGl4YnVmKHBh
aW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhi
dWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVy
biB0cnVlOwogfQogI2VuZGlmCkBAIC0xNTA3LDkgKzE1MDcsOSBAQCBib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQ
YWludEluZgogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBj
b250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAg
Y29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAK
ICAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOwogICAg
IGZsb2F0IHRvdGFsVHJhY2tXaWR0aCA9IHIud2lkdGgoKTsKQEAgLTE1MjcsMTcgKzE1MjcsMTcg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmYKICAgICAgICAgcmFuZ2VSZWN0LnNldFdpZHRoKGxl
bmd0aFJhdGlvICogdG90YWxUcmFja1dpZHRoKTsKICAgICAgICAgaWYgKGluZGV4KQogICAgICAg
ICAgICAgcmFuZ2VSZWN0Lm1vdmUoc3RhcnRSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCwgMCk7Ci0g
ICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVj
dCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250
ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFk
aWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAotICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQog
ewogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IG8uc3R5bGUoKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9t
U3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUp
KSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5j
b2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTU1Niw5ICsxNTU2LDkg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICBpZiAoIXZvbHVtZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0KCk7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShO
b1N0cm9rZSk7CiAKICAgICBpbnQgcmVjdEhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CiAgICAgZmxv
YXQgdHJhY2tIZWlnaHQgPSByZWN0SGVpZ2h0ICogdm9sdW1lOwpAQCAtMTU2Nyw5ICsxNTY3LDkg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICB2b2x1bWVSZWN0Lm1vdmUoMCwgcmVjdEhl
aWdodCAtIHRyYWNrSGVpZ2h0KTsKICAgICB2b2x1bWVSZWN0LnNldEhlaWdodChjZWlsKHRyYWNr
SGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLAorICAgIGNvbnRleHQu
ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9sdW1lUmVjdCwgYm9yZGVyUmFkaWlG
cm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggZjliNzEwZjZlY2Qz
NjI0ODFlMzFjOGM2NGE3OGVmM2E1YWI2M2Q2YS4uYjc5NDExNmFkYzlhM2RiOTEyODVkMTI5MGVl
NTVjMzZiNmI3NTdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNldFRleHRJ
bnB1dEJvcmRlcnMoUmVuZGVyU3R5bGUmKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBib29s
IHBhaW50TWVkaWFCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IGNoYXIqIHN5bWJvbGljSWNvbk5hbWUsIGNvbnN0IGNoYXIq
IGZhbGxiYWNrU3RvY2tJY29uTmFtZSk7CisgICAgYm9vbCBwYWludE1lZGlhQnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBj
aGFyKiBzeW1ib2xpY0ljb25OYW1lLCBjb25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUp
OwogI2VuZGlmCiAKICAgICBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVQcm9ncmVzc1JlY3QoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MuaAppbmRleCA0YWNkMGE2ZTRkNTNkYzM5NDQ0MjlhYjgwNTNlMWIx
MmZiNTUxZTU4Li4xYjljMGIzMzhiZDI2YmZlZDFkMDk2N2E2N2M0OTA4OTE5NjkyZWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaApAQCAtMTE1LDcgKzExNSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVJT1MoKSB7IH0KIAogICAgIGNv
bnN0IENvbG9yJiBzaGFkb3dDb2xvcigpIGNvbnN0OwotICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVk
Qm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYpOworICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBS
ZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGVjNzJh
ZTMzOWE2MmU3ZGQ5NTAyMDcyOWExZGIyZGZmNDEwNDM3MGYuLjcwNDdmM2Q0M2JkMWZmNmQ2MjUz
YjUzMjE1ZmM4YWJlOGRhYzBmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBjb25zdCBDb2xvciYgUmVuZGVyVGhlbWVJ
T1M6OnNoYWRvd0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gY29sb3I7CiB9CiAKLUZsb2F0UmVj
dCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0Zs
b2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICAvLyBUbyBmaXggaW5uZXIgYm9yZGVyIGJsZWVkaW5nIGlzc3VlcyA8cmRhcjov
L3Byb2JsZW0vOTgxMjUwNz4sIHdlIGNsaXAgdG8gdGhlIG91dGVyIGJvcmRlciBhbmQgYXNzZXJ0
IHRoYXQKICAgICAvLyB0aGUgYm9yZGVyIGlzIG9wYXF1ZSBvciB0cmFuc3BhcmVudCwgdW5sZXNz
IHdlJ3JlIGNoZWNrZWQgYmVjYXVzZSBjaGVja2VkIHJhZGlvL2NoZWNrYm94ZXMgc2hvdyBubyBi
bGVlZGluZy4KQEAgLTMzMiw5ICszMzIsOSBAQCBGbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljcwogICAg
IFJvdW5kZWRSZWN0IGJvcmRlciA9IGlzQ2hlY2tlZChib3gpID8gc3R5bGUuZ2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKHJlY3QpIDogc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihyZWN0KTsKIAog
ICAgIGlmIChib3JkZXIuaXNSb3VuZGVkKCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikpOworICAgICAgICBjb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikpOwogICAgIGVsc2UKLSAgICAgICAgY29u
dGV4dC0+Y2xpcChib3JkZXIucmVjdCgpKTsKKyAgICAgICAgY29udGV4dC5jbGlwKGJvcmRlci5y
ZWN0KCkpOwogCiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIEFTU0VSVChzdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikuYWxwaGEo
KSAlIDI1NSA9PSAwKTsKQEAgLTM2NywxMyArMzY3LDEzIEBAIHN0YXRpYyBDR1BvaW50IHNob3J0
ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgpCiAKIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29u
dGV4dCk7Ci0gICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBh
aW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRS
b3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogCiAgICAg
ZmxvYXQgd2lkdGggPSBjbGlwLndpZHRoKCk7CiAgICAgZmxvYXQgaGVpZ2h0ID0gY2xpcC5oZWln
aHQoKTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7
CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShD
b25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNs
aXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAKQEAgLTM5OCwxNSArMzk4LDE1IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAgICAgICAgICBzaG9ydGVuZWQobGluZVsyXSwg
bGluZVsxXSwgbGluZVdpZHRoIC8gNC4wZikKICAgICAgICAgfTsKIAotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdm
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Sm9pbmVkTGluZXMo
c2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3Sm9pbmVkTGluZXMoc2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJl
KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6
bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAx
LjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBj
bGlwLmhlaWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0pvaW5lZExpbmVzKGxpbmUsIDMsIHRydWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBG
bG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMGYsIGNs
aXAubWF4WSgpKTsKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVu
dFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xp
cC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC00NTAsMTAgKzQ1
MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbgogCiBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0
UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwg
cmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5m
by5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAo
Ym94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9u
KCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlv
bik7CiAKQEAgLTQ2NSwxMCArNDY1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFk
aW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJCiAgICAg
ICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAg
ICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJhdGlvKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBz
ZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCBy
YWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1
cywgcmFkaXVzKSk7CiAgICAgfQogICAgIEZsb2F0UG9pbnQgYm90dG9tQ2VudGVyKGNsaXAueCgp
ICsgY2xpcC53aWR0aCgpIC8gMi4wLCBjbGlwLm1heFkoKSk7CiAgICAgZHJhd0F4aWFsR3JhZGll
bnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0
aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xh
dGlvbik7CkBAIC00ODEsMTUgKzQ4MSwxNSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRl
eHRGaWVsZERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYQogICAg
IFJlbmRlclN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAgIEZsb2F0UG9pbnQgcG9pbnQo
cmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5ib3Jk
ZXJUb3BXaWR0aCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KHJlY3Qp
KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKExheW91dFJlY3QocmVjdCkpLnBpeGVsU25hcHBl
ZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoYm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOwogCiAgICAgLy8gVGhpcyBncmFkaWVudCBnZXRzIGRyYXduIGJsYWNrIHdoZW4gcHJpbnRp
bmcuCiAgICAgLy8gRG8gbm90IGRyYXcgdGhlIGdyYWRpZW50IGlmIHRoZXJlIGlzIG5vIHZpc2li
bGUgdG9wIGJvcmRlci4KICAgICBib29sIHRvcEJvcmRlcklzSW52aXNpYmxlID0gIXN0eWxlLmhh
c0JvcmRlcigpIHx8ICFzdHlsZS5ib3JkZXJUb3BXaWR0aCgpIHx8IHN0eWxlLmJvcmRlclRvcElz
VHJhbnNwYXJlbnQoKTsKICAgICBpZiAoIWJveC52aWV3KCkucHJpbnRpbmcoKSAmJiAhdG9wQm9y
ZGVySXNJbnZpc2libGUpCi0gICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgZ3JhZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwg
cG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBm
KSksIExpbmVhckludGVycG9sYXRpb24pOworICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBncmFkaWVudFdpdGhOYW1lKEluc2V0
R3JhZGllbnQpLCBwb2ludCwgRmxvYXRQb2ludChDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50
LnkoKSArIDMuMGYpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgIFJlbmRl
clN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoID0g
c3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9hdFJlY3QgY2xpcChyZWN0LngoKSArIHN0
eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCks
IHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIC0gc3R5bGUuYm9yZGVyUmln
aHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSAtIHN0eWxl
LmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBmbG9h
dCBhZGp1c3RMZWZ0ID0gMC41OwogICAgIGZsb2F0IGFkanVzdFJpZ2h0ID0gMC41OwpAQCAtNjI5
LDkgKzYyOSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICB7CiAgICAgICAgIEZsb2F0
UmVjdCB0aXRsZUNsaXAoY2xpcC54KCkgLSBhZGp1c3RMZWZ0LCBjbGlwLnkoKSAtIGFkanVzdFRv
cCwgY2xpcC53aWR0aCgpIC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQgKyBhZGp1c3RMZWZ0
LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsgYWRqdXN0Qm90dG9tKTsKIAotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAsCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVDbGlwLAogICAgICAgICAgICAg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0
aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApLAogICAgICAgICAgICAg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53
aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWln
aHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApKSk7CiAK
QEAgLTY0MywxOSArNjQzLDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RC
dXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKIAogICAgIGZsb2F0
IHNlcGFyYXRvciA9IGNsaXAubWF4WCgpIC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQ7CiAK
LSAgICBib3guZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29udGV4dCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0gYm9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQ
b2ludChzZXBhcmF0b3IsIGNsaXAubWF4WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5
bGUoKSwgMCwgMCk7CisgICAgYm94LmRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4
dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludChzZXBhcmF0b3IgLSBib3JkZXJUb3BXaWR0aCwgY2xp
cC55KCkpLCBGbG9hdFBvaW50KHNlcGFyYXRvciwgY2xpcC5tYXhZKCkpKSwgQlNSaWdodCwgc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHls
ZS5ib3JkZXJUb3BTdHlsZSgpLCAwLCAwKTsKIAogICAgIEZsb2F0UmVjdCBidXR0b25DbGlwKHNl
cGFyYXRvciAtIGFkanVzdFRvcCwgY2xpcC55KCkgLSBhZGp1c3RUb3AsIE1lbnVMaXN0QnV0dG9u
UGFkZGluZ1JpZ2h0ICsgYWRqdXN0VG9wICsgYWRqdXN0UmlnaHQsIGNsaXAuaGVpZ2h0KCkgKyBh
ZGp1c3RUb3AgKyBhZGp1c3RCb3R0b20pOwogCiAgICAgLy8gTm93IHBhaW50IHRoZSBidXR0b24g
cG9ydGlvbi4KICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5i
b3JkZXJUb3BXaWR0aCgpKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXpl
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwg
cmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgo
c3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5maWxsUmVjdChidXR0b25DbGlwLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFk
aWVudCA6IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50
KGJ1dHRvbkNsaXAueCgpLCBidXR0b25DbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24p
OwogICAgIH0KQEAgLTY3MCw3ICs2NzAsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAg
ICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgo
KSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlw
Lm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdSYWlz
ZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xv
cjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAu
NWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgIGVsbGlwc2UubW92ZShzaXpl
ICsgcGFkZGluZywgMCk7CiAgICAgICAgIH0KICAgICB9ICBlbHNlIHsKQEAgLTY4OSwxMyArNjg5
LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQ
b2ludChhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOwogCiAgICAgICAgIGZsb2F0
IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8gMC4yIDogMC41OwotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
b3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5
Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTc1OSwxMyArNzU5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5m
byYKIAogICAgIC8vIERyYXcgdGhlIHRyYWNrIGdyYWRpZW50LgogICAgIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Cisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29u
dGV4dCgpKTsKIAogICAgICAgICBJbnRTaXplIGNvcm5lclNpemUoY29ybmVyV2lkdGgsIGNvcm5l
ckhlaWdodCk7CiAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgaW5uZXJCb3JkZXIodHJhY2tDbGlw
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChpbm5lckJvcmRlcik7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyKTsKIAot
ICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgSU9TR3JhZGllbnRSZWYgZ3Jh
ZGllbnQgPSByZWFkb25seSA/IGdyYWRpZW50V2l0aE5hbWUoUmVhZG9ubHlTbGlkZXJUcmFja0dy
YWRpZW50KSA6IGdyYWRpZW50V2l0aE5hbWUoU2xpZGVyVHJhY2tHcmFkaWVudCk7CiAgICAgICAg
IGlmIChpc0hvcml6b250YWwpCiAgICAgICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRl
eHQsIGdyYWRpZW50LCB0cmFja0NsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludCh0cmFja0NsaXAu
eCgpLCB0cmFja0NsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC03NzUsMTMg
Kzc3NSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJl
bmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mCiAKICAgICAvLyBEcmF3IHRoZSB0cmFj
ayBib3JkZXIuCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgICAgIENHQ29udGV4
dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwogICAgICAgICBpZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRl
ZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1Bh
dGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29y
bmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC04MTIsMTAgKzgxMiwxMCBAQCB2b2lkIFJlbmRl
clRoZW1lSU9TOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29y
YXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
KyAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIEZsb2F0UG9p
bnQgYm90dG9tQ2VudGVyKGNsaXAueCgpICsgY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5tYXhZ
KCkpOwogICAgIGlmIChpc1ByZXNzZWQoYm94KSkKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQo
Y2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNsaWRlclRodW1iT3BhcXVlUHJlc3NlZEdyYWRp
ZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSks
IExpbmVhckludGVycG9sYXRpb24pOwpAQCAtODQ1LDE4ICs4NDUsMTggQEAgYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEkKICAgICBjb25zdCBpbnQgcHJvZ3Jlc3NCYXJIZWlnaHQgPSA5OwogICAgIGNv
bnN0IGZsb2F0IHZlcnRpY2FsT2Zmc2V0ID0gKHJlY3QuaGVpZ2h0KCkgLSBwcm9ncmVzc0Jhckhl
aWdodCkgLyAyLjA7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKHJlY3Qud2lkdGgoKSA8IDEwIHx8
IHJlY3QuaGVpZ2h0KCkgPCA5KSB7CiAgICAgICAgIC8vIFRoZSByZWN0IGlzIHNtYWxsZXIgdGhh
biB0aGUgc3RhbmRhcmQgcHJvZ3Jlc3MgYmFyLiBXZSBjbGlwIHRvIHRoZSBlbGVtZW50J3MgcmVj
dCB0byBhdm9pZAogICAgICAgICAvLyBsZWFraW5nIHBpeGVscyBvdXRzaWRlIHRoZSByZXBhaW50
IHJlY3QuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHJlY3QpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAocmVjdCk7CiAgICAgfQogCiAgICAgLy8gMSkgRHJhdyB0
aGUgcHJvZ3Jlc3MgYmFyIHRyYWNrLgogICAgIC8vIDEuMSkgRHJhdyB0aGUgd2hpdGUgYmFja2dy
b3VuZCB3aXRoIGdyZXkgZ3JhZGllbnQgYm9yZGVyLgotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cygwLjY4KTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBjb250
ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygwLjY4KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxl
KFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zmc2V0OwogICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ry
b2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSk7CkBAIC04NjQsMjggKzg2NCwy
OCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKIAogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0
eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUs
IDI1NSwgMjU1KSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Io
MjU1LCAyNTUsIDI1NSksIGNvbG9yU3BhY2UpOwogCiAgICAgUGF0aCB0cmFja1BhdGg7CiAgICAg
RmxvYXRSZWN0IHRyYWNrUmVjdChyZWN0LngoKSArIDAuMjUsIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyAwLjI1LCByZWN0LndpZHRoKCkgLSAwLjUsIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41
KTsKICAgICBGbG9hdFNpemUgcm91bmRlZENvcm5lclJhZGl1cyg1LCA0KTsKICAgICB0cmFja1Bh
dGguYWRkUm91bmRlZFJlY3QodHJhY2tSZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICBj
b250ZXh0LT5kcmF3UGF0aCh0cmFja1BhdGgpOworICAgIGNvbnRleHQuZHJhd1BhdGgodHJhY2tQ
YXRoKTsKIAogICAgIC8vIDEuMikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYu
IEl0IGlzIHN1cHBvc2VkIHRvIG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBh
bmQgZGFya2VyIHRoZSBzdHJva2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0Lngo
KSwgcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0Jhckhl
aWdodCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywg
cm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyLCByb3Vu
ZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVz
LCByb3VuZGVkQ29ybmVyUmFkaXVzKSk7CiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0
ID0gcHJvZ3Jlc3NCYXJIZWlnaHQgLyAyLjsKICAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkpOwogICAgIHVwcGVyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAg
IHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7
Ci0gICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNl
Tm9uTnVsbCgpKTsKIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwgcmVjdC53aWR0aCgpLCB1cHBlckdyYWRpZW50SGVp
Z2h0KSk7CisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwog
CiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVz
cz4ocmVuZGVyZXIpOwogICAgIGlmIChyZW5kZXJQcm9ncmVzcy5pc0RldGVybWluYXRlKCkpIHsK
QEAgLTg5OSwxMyArODk5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NC
YXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIGJh
ckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7
CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAy
NDQpKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGJhckdyYWRpZW50LnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9r
ZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkpOwogICAgICAgICBiYXJTdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAg
IGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQs
IDI0MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29s
b3IoMzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGJh
clN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAg
ICAgIFBhdGggYmFyUGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTkxMyw3
ICs5MTMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAgICAgbGVmdCA9IHJl
Y3QubWF4WCgpIC0gYmFyV2lkdGg7CiAgICAgICAgIEZsb2F0UmVjdCBiYXJSZWN0KGxlZnQgKyAw
LjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgc3RkOjptYXgoYmFyV2lkdGgg
LSAwLjUsIDAuMCksIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41KTsKICAgICAgICAgYmFyUGF0aC5h
ZGRSb3VuZGVkUmVjdChiYXJSZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICAgICAgY29u
dGV4dC0+ZHJhd1BhdGgoYmFyUGF0aCk7CisgICAgICAgIGNvbnRleHQuZHJhd1BhdGgoYmFyUGF0
aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTg0LDEwICs5ODQsMTAgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmpl
Y3QmIGJveCwgY29uc3QgUGFpbnQKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQdXNoQnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBj
bGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBw
YWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
aWYgKGJveC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikuaXNEYXJrKCkpCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwg
Z3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQ
b2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICBl
bHNlIHsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGNvbnN0IGludCBrTXVsdGlwbGVUaHVtYm5haWxT
aHJpbmtTaXplID0gMjsKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlck9iamVjdCYgYnV0
dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBJY29uKiBpY29uLCBGaWxlVXBsb2FkRGVjb3JhdGlvbnMgZmlsZVVwbG9hZERlY29yYXRp
b25zKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
YWludEluZm8uY29udGV4dCgpKTsKIAogICAgIEludFNpemUgY29ybmVyU2l6ZShrVGh1bWJuYWls
Qm9yZGVyQ29ybmVyUmFkaXVzLCBrVGh1bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzKTsKICAgICBD
b2xvciBwaWN0dXJlRnJhbWVDb2xvciA9IGJ1dHRvblJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpOwpAQCAtMTAzMSwxMiArMTAz
MSwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQg
cGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQg
bWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3Ig
PSBDb2xvcihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1l
UmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBp
Y3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1l
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
LSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHRodW1ibmFpbFJlY3QpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8u
Y29udGV4dCgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwKHRodW1ibmFpbFJlY3QpOwogICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJ
bWFnZUNvbG9yLmlzRGFyaygpKQogICAgICAgICAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCksIHRodW1ibmFpbFJlY3Qu
bG9jYXRpb24oKSwgRmxvYXRQb2ludCh0aHVtYm5haWxSZWN0LngoKSwgdGh1bWJuYWlsUmVjdC5t
YXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTA1
Miw4ICsxMDUyLDggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKICAgICB9CiAKICAgICAvLyBG
b3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgaWNvbi0+cGFpbnQoKnBh
aW50SW5mby5jb250ZXh0LCB0aHVtYm5haWxSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaWNvbi0+cGFpbnQocGFp
bnRJbmZvLmNvbnRleHQoKSwgdGh1bWJuYWlsUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggZGUyMmQw
MGM4NjdlNDQwMGRlNDY4MzEwNmY0ZjQ3NjIyM2UwZmZhMi4uZmI0ZTRjODBjODYyOTBkY2UxNmFj
YWExOWRiZmI3ZDJmYTM2ZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQpAQCAtODUwLDExICs4NTAsMTEgQEAgTlNDb250cm9sU2l6ZSBSZW5kZXJUaGVt
ZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250KFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QK
IAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByKQogewot
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU1RleHRGaWVsZENlbGwgKnRleHRGaWVsZCA9IHRo
aXMtPnRleHRGaWVsZCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgW3RleHRGaWVsZCBzZXRFbmFi
bGVkOihpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKV07CiAgICAgW3RleHRG
aWVsZCBkcmF3V2l0aEZyYW1lOk5TUmVjdChyKSBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsK
QEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RUZXh0RmllbGRT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KgogCiBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0
KCkpOwogICAgIHdrRHJhd0JlemVsZWRUZXh0QXJlYShyLCBpc0VuYWJsZWQobykgJiYgIWlzUmVh
ZE9ubHlDb250cm9sKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC05MDksNyArOTA5LDcg
QEAgY29uc3QgaW50KiBSZW5kZXJUaGVtZU1hYzo6cG9wdXBCdXR0b25QYWRkaW5nKE5TQ29udHJv
bFNpemUgc2l6ZSkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0UG9w
dXBCdXR0b25DZWxsU3RhdGUocmVuZGVyZXIsIEludFNpemUocmVjdC5zaXplKCkpKTsKIAogICAg
IE5TUG9wVXBCdXR0b25DZWxsKiBwb3B1cEJ1dHRvbiA9IHRoaXMtPnBvcHVwQnV0dG9uKCk7CkBA
IC05MjQsMTkgKzkyNCwxOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0KGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChyZWN0
LndpZHRoKCkgPj0gbWluaW11bU1lbnVMaXN0U2l6ZShyZW5kZXJlci5zdHlsZSgpKSkKICAgICAg
ICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QocmVjdCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJn
aW5zKCksIHpvb21MZXZlbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBCZWZvcmUgWW9zZW1p
dGUgd2UgZGlkIG5vdCB3YW50IHRoZSBjZWxsIHRvIGV2ZXIgZHJhdyBvdXRzaWRlIHRoZSBnaXZl
biByZWN0YW5nbGUuCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTAw
MAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGluZmxhdGVkUmVjdCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKGluZmxhdGVkUmVjdCk7CiAjZW5kaWYKIAogICAgIGlmICh6b29t
TGV2ZWwgIT0gMS4wZikgewogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRS
ZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0
KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29t
TGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRS
ZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54
KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBwYWludENlbGxBbmRTZXRGb2N1
c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KHBvcHVwQnV0dG9uLCByZW5kZXJlciwg
cGFpbnRJbmZvLCBpbmZsYXRlZFJlY3QpOwpAQCAtOTY0LDEwICs5NjQsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmYKICAgICBpZiAoIWlzPFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU0xldmVs
SW5kaWNhdG9yQ2VsbCogY2VsbCA9IGxldmVsSW5kaWNhdG9yRm9yKGRvd25jYXN0PFJlbmRlck1l
dGVyPihyZW5kZXJPYmplY3QpKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBbY2VsbCBkcmF3V2l0aEZy
YW1lOnJlY3QgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihyZW5kZXJPYmplY3QpXTsKICAgICBbY2Vs
bCBzZXRDb250cm9sVmlldzpuaWxdOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVj
dCwgY29uc3QgUGEKICAgICB0cmFja0luZm8ucmVzZXJ2ZWQgPSAwOwogICAgIHRyYWNrSW5mby5m
aWxsZXIxID0gMDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNv
bnRleHQsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNv
bnRleHQoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTExNDIsMTQgKzExNDIsMTQgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsK
ICAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVP
cmllbnRhdGlvbk5vcm1hbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBpZiAoIXJlbmRlclByb2dy
ZXNzLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUoMiAqIGluZmxhdGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qu
d2lkdGgoKSwgMCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUo
LTEsIDEpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoMiAqIGluZmxh
dGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qud2lkdGgoKSwgMCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQogCi0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC0xMjEwLDEwICsxMjEwLDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RC
dXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250ZXh0Q29udGFpbmVyIGNnQ29u
dGV4dENvbnRhaW5lcihwYWludEluZm8uY29udGV4dCk7CisgICAgQ29udGV4dENvbnRhaW5lciBj
Z0NvbnRleHRDb250YWluZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBib3JkZXIgPSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUo
KS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLndpZHRoKCk7CkBAIC0xMjM5LDMzICsxMjM5LDMzIEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0g
YWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgp
LCAgci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBj
Z0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGlu
Zyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRp
ZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWkoKS50
b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgp
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIGJvcmRlci5yYWRpaSgpLnRv
cExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkp
KTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAg
ICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAg
IH0KIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9tR3JhZGll
bnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50
U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRv
bVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6
ZSgpLCBJbnRTaXplKCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVy
LmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9t
U2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
ICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRl
eHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250
ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNv
bnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7CkBAIC0xMjkyLDEwICsxMjkyLDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgaWYgKGJvdW5kcy53aWR0aCgpIDwgYXJyb3dXaWR0aCAr
IGFycm93UGFkZGluZ0xlZnQgKiByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAg
IEZsb2F0UG9pbnQgYXJyb3cxWzNdOwogICAgIGFycm93MVswXSA9IEZsb2F0UG9pbnQobGVmdEVk
Z2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cxWzJdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJy
b3dzIC8gMi4wZiAtIGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCBhcnJvdwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdzEsIHRydWUp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cxLCB0
cnVlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cyWzNdOwogICAgIGFycm93MlswXSA9IEZsb2F0
UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAg
LTEzMTEsNyArMTMxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cyWzJd
ID0gRmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZICsgc3Bh
Y2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiArIGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhl
IGJvdHRvbSBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigz
LCBhcnJvdzIsIHRydWUpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHln
b24oMywgYXJyb3cyLCB0cnVlKTsKIAogICAgIENvbG9yIGxlZnRTZXBhcmF0b3JDb2xvcigwLCAw
LCAwLCA0MCk7CiAgICAgQ29sb3IgcmlnaHRTZXBhcmF0b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0
MCk7CkBAIC0xMzIxLDE0ICsxMzIxLDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAg
aW50IGxlZnRFZGdlT2ZTZXBhcmF0b3IgPSBzdGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJy
b3dQYWRkaW5nTGVmdCAqIHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsgLy8gRklY
TUU6IFJvdW5kPwogCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRo
ZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAv
LyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0
YXlzIHRoaW4uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRv
ckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7IC8vIERlbGliZXJhdGVseSBp
Z25vcmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIgaWYgaXQgc3RheXMgdGhpbi4KKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2lu
dChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkp
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9y
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5k
cy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBh
cmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2Us
IGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNDU0LDcgKzE0NTQsNyBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5
KE5TQ2VsbAogICAgIGJvb2wgc2hvdWxkRHJhd0ZvY3VzUmluZyA9IGlzRm9jdXNlZChyZW5kZXJl
cikgJiYgcmVuZGVyZXIuc3R5bGUoKS5vdXRsaW5lU3R5bGVJc0F1dG8oKTsKICAgICBib29sIHNo
b3VsZFVzZUltYWdlQnVmZmVyID0gcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkgIT0g
MSB8fCBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxOwogICAgIGJvb2wgc2hvdWxkRHJhd0Nl
bGwgPSB0cnVlOwotICAgIGlmIChUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRvY3VtZW50Vmlld0Zv
cihyZW5kZXJlciksIHNob3VsZERyYXdDZWxsLCBzaG91bGREcmF3Rm9jdXNSaW5nLCBzaG91bGRV
c2VJbWFnZUJ1ZmZlciwgcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkpCisgICAgaWYgKFRoZW1l
TWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChjZWxsLCBwYWludElu
Zm8uY29udGV4dCgpLCByZWN0LCBkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpLCBzaG91bGREcmF3
Q2VsbCwgc2hvdWxkRHJhd0ZvY3VzUmluZywgc2hvdWxkVXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpKQogICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRG
b2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogfQogCkBAIC0xNDkxLDcgKzE0OTEsNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICBib3VuZHMuc2V0WChyLngoKSArIHIud2lk
dGgoKSAvIDIgLSB6b29tZWRUcmFja1dpZHRoIC8gMik7CiAgICAgfQogCi0gICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4
dCgpKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQo
KTsKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwogCkBAIC0xNDk5LDcgKzE0OTksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRl
clRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIHBh
aW50U2xpZGVyVGlja3MobywgcGFpbnRJbmZvLCByKTsKICNlbmRpZgogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzKTsKIAogICAgIHN0cnVjdCBD
R0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRl
cnBvbGF0ZSwgTlVMTCB9OwpAQCAtMTUxMSw3ICsxNTExLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGEKICAgICAgICAgbWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFs
KGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFr
ZShib3VuZHMueCgpLCBib3VuZHMubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKIAogICAgIEludFNpemUgcmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJhZGl1
cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIGNvbnRleHQgPSBsb2NhbENvbnRleHQu
Y2dDb250ZXh0KCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRp
bmcuZ2V0KCkpOwogCkBAIC0xNTMyLDcgKzE1MzIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBw
YQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwoKQogICAgICAgICA6IHNsaWRlclRodW1i
SG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUg
dmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2xp
ZGVyVGh1bWJDZWxsLCBvKTsKQEAgLTE1NjgsMTYgKzE1NjgsMTYgQEAgYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGEKICAgICBpZiAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZl
cnRpY2FsUGFydCkKICAgICAgICAgYm91bmRzLnNldEhlaWdodChib3VuZHMuaGVpZ2h0KCkgKyB2
ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgKiBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludElu
Zm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVjdCA9IGJvdW5kczsKICAgICBpZiAo
em9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9v
bWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhl
aWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwg
em9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9v
bWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxl
dmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJl
Y3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgW3NsaWRlclRodW1iQ2Vs
bCBkcmF3S25vYjp1bnpvb21lZFJlY3RdOwpAQCAtMTU4OCwxMiArMTU4OCwxMiBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QgUGFpbnRJbmZvJiBwYQogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxk
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBOU1NlYXJjaEZpZWxkQ2Vs
bCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUobywg
cik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpOwogCkBAIC0xNjAyLDkgKzE2MDIsOSBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYQogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Qu
c2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56
b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRy
YW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJl
Y3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9v
bUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xh
dGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICAv
LyBTZXQgdGhlIHNlYXJjaCBidXR0b24gdG8gbmlsIGJlZm9yZSBkcmF3aW5nLiAgVGhlbiByZXNl
dCBpdCBzbyB3ZSBjYW4gZHJhdyBpdCBsYXRlci4KQEAgLTE2ODUsNyArMTY4NSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKCFpbnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFy
Y2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRD
ZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKQEAgLTE2OTUsNyArMTY5NSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgZWxzZSBpZiAoW1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2Vs
bF0gaXNIaWdobGlnaHRlZF0pCiAgICAgICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIHNl
dEhpZ2hsaWdodGVkOk5PXTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIGZsb2F0IHpvb21MZXZlbCA9
IG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CiAKQEAgLTE3MDYsOSArMTcwNiw5IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAg
IHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7
CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8g
em9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21l
ZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54
KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwog
ICAgIH0KIAogICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56
b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOwpAQCAtMTc2Niw3ICsxNzY2LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
UGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5p
c0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
IHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRlcmVyKCksIHIpOwogCiAgICAgTlNTZWFy
Y2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwpAQCAtMTc5OSw3ICsxNzk5LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlz
Qm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
c2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVuZGVyZXIoKSwgcik7CiAKICAgICBOU1NlYXJj
aEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CkBAIC0xODA3LDcgKzE4MDcsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKCFbc2VhcmNoIHNlYXJjaE1lbnVUZW1w
bGF0ZV0pCiAgICAgICAgIFtzZWFyY2ggc2V0U2VhcmNoTWVudVRlbXBsYXRlOnNlYXJjaE1lbnVU
ZW1wbGF0ZSgpXTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJj
aCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChpbnB1dC0+
cmVuZGVyQm94KCktPmNvbnRlbnRCb3hSZWN0KCkpKV07CkBAIC0xODE3LDkgKzE4MTcsOSBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAg
ICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZl
bCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgp
IC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpv
b21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0
LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVj
dC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNj
YWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkp
OwogICAgIH0KIAogICAgIFtbc2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6
dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOwpAQCAtMTg0Myw3ICsxODQz
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXko
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoIWNvbnRlbnRXaWR0aCB8fCAh
Y29udGVudEhlaWdodCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6
ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRM
b2NhdGlvbiA9IHJlbmRlckJsb2NrLmxvY2F0aW9uKCk7CkBAIC0xODk5LDcgKzE4OTksNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgp
IDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVy
LnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0
eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMDYzLDEwICsyMDYzLDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50SW1hZ2VDb250cm9sc0J1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zCiAjaWYgSEFWRShBUFBLSVRfU0VSVklDRV9DT05UUk9MU19TVVBQ
T1JUKQogICAgIE5TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwgKmNlbGwgPSBzZXJ2aWNlc1Jv
bGxvdmVyQnV0dG9uQ2VsbCgpOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxv
Y2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAK
LSAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKIAog
ICAgIEludFJlY3QgaW5uZXJGcmFtZShJbnRQb2ludCgpLCByZWN0LnNpemUoKSk7CiAgICAgW2Nl
bGwgZHJhd1dpdGhGcmFtZTppbm5lckZyYW1lIGluVmlldzpkb2N1bWVudFZpZXdGb3IocmVuZGVy
ZXIpXTsKQEAgLTI0NjIsOCArMjQ2Miw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0
YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAKICAg
ICBBdHRhY2htZW50TGF5b3V0IGxheW91dChhdHRhY2htZW50KTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9ICpwYWludEluZm8uY29udGV4dDsKLSAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzYXZlcihjb250ZXh0KTsKIAogICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXpl
KHBhaW50UmVjdC5sb2NhdGlvbigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCA1NWMwOGQ1NjUyM2U5NWZkZTcyNTYzZWNlMjQ4ODFh
ZjEwMDkwM2NhLi40NzcxOTNjMTNlZTVmYTk2M2E5NmQxNWE4ZmIyMDQ4ODc4ZGQ1MTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTM5
Miw3ICszOTIsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIE5TQ29udHJvbFNpemUg
Y29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoby5zdHlsZSgpKTsKIAogICAgIEludFJl
Y3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QociwgY2hlY2tib3hTaXplcygpW2NvbnRyb2xT
aXplXSwgY2hlY2tib3hNYXJnaW5zKGNvbnRyb2xTaXplKSk7ICAKLSAgICBwYWludFRoZW1lUGFy
dChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsK
KyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC00MzEsNyArNDMx
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xT
aXplID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5bGUoKSk7CiAgCiAgICAgSW50UmVjdCBpbmZs
YXRlZFJlY3QgPSBpbmZsYXRlUmVjdChyLCByYWRpb1NpemVzKClbY29udHJvbFNpemVdLCByYWRp
b01hcmdpbnMoY29udHJvbFNpemUpKTsgICAgCi0gICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0
b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVj
dCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChS
YWRpb0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIGlu
ZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgog
ICAgIH0gZWxzZQogICAgICAgICBwYXJ0ID0gU2FmYXJpVGhlbWU6OlNxdWFyZUJ1dHRvblBhcnQ7
CiAKLSAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsK
KyAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01ODUsNyArNTg1LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHAKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFp
bnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUo
bykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4
dEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5T
Q29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU5OCwxMCArNTk4LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVT
YWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWluCiAjaWYgZGVmaW5lZChTQUZBUklfVEhFTUVfVkVSU0lPTikgJiYgU0FGQVJJX1RIRU1F
X1ZFUlNJT04gPj0gMQogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcGFpbnRUaGVtZVBhcnQoQ2Fwc0xvY2tQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkw
KTsKKyAgICBwYWludFRoZW1lUGFydChDYXBzTG9ja1BhcnQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0
ZSkwKTsKIAogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCkBAIC02MTMsNyArNjEzLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGEKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
OwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRBcmVhUGFydCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRl
cm1pbmVTdGF0ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFy
aVRoZW1lOjpUZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0
ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02NjIsNyArNjYyLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYgaW4KICAgICBpZiAoci53aWR0aCgpID49IG1pbmltdW1NZW51TGlzdFNpemUo
by5zdHlsZSgpKSkKICAgICAgICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QoaW5mbGF0ZWRS
ZWN0LCBzaXplLCBwb3B1cEJ1dHRvbk1hcmdpbnMoY29udHJvbFNpemUpKTsKIAotICAgIHBhaW50
VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAg
IHBhaW50VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8p
KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTcyMyw5ICs3MjMsOSBAQCB2b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29ucwogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmQg
PSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAg
ICBpbnQgcmFkaXVzID0gYm91bmQucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKQEAgLTc0OSwz
NCArNzQ5LDM0IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25H
cmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zCiAgICAgUmV0YWluUHRyPENHU2hh
ZGluZ1JlZj4gbGVmdFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVz
LCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0
ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5tYXhYKCksICByLnkoKSksIENHUG9pbnRNYWtl
KHIubWF4WCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZh
bHNlKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmQpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7
CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFk
aWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVj
dCh0b3BHcmFkaWVudCksIGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLCBib3VuZC5yYWRpaSgpLnRv
cFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAogICAgIGlmICgh
Ym90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWko
KS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xv
c2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQu
cmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAg
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoYm91bmQpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5k
KTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7
CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsK
LSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkucmVzdG9yZSgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CkBAIC03OTgsMTAgKzc5OCwxMCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZQogICAgIGlmIChi
b3VuZHMud2lkdGgoKSA8IGFycm93V2lkdGggKyBhcnJvd1BhZGRpbmdMZWZ0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxD
b2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKE5vU3Ryb2tlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAKICAgICBGbG9hdFBvaW50IGFycm93WzNdOwogICAgIGFycm93WzBdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSwgY2VudGVyWSAtIGFycm93SGVpZ2h0IC8gMi4wZik7CkBAIC04MDksNyArODA5
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICBhcnJvd1syXSA9IEZsb2F0UG9pbnQo
bGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIGFycm93SGVpZ2h0IC8gMi4w
Zik7CiAKICAgICAvLyBEcmF3IHRoZSBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CiAKICAgICBDb2xvciBsZWZ0U2VwYXJh
dG9yQ29sb3IoMCwgMCwgMCwgNDApOwogICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1
LCAyNTUsIDI1NSwgNDApOwpAQCAtODE5LDE3ICs4MTksMTcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGUKICAgICBpbnQgbGVmdEVkZ2VPZlNlcGFyYXRvciA9IHN0YXRpY19jYXN0PGludD4obGVm
dEVkZ2UgLSBhcnJvd1BhZGRpbmdMZWZ0KTsgLy8gRklYTUU6IFJvdW5kPwogCiAgICAgLy8gRHJh
dyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3Is
IGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KDEpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2Up
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3Vu
ZHMubWF4WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iocmln
aHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JT
cGFjZSwgYm91bmRzLnkoKSksCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xv
cihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBh
cmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLm1h
eFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkzNSwx
MCArOTM1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgZWxzZSBpZiAoby5zdHls
ZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCiAgICAgICAgIGJvdW5kcy5z
ZXRSZWN0KEludFJlY3Qoci54KCkgKyByLndpZHRoKCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIsIHIu
eSgpLCB0cmFja1dpZHRoLCByLmhlaWdodCgpKSk7CiAKLSAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
Q0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZl
KCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMucmVjdCgpKTsKIAog
ICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNr
R3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwpAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mCiAgICAgZWxzZQogICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0Q0Yo
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngo
KSwgIGJvdW5kcy5yZWN0KCkueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksIGJv
dW5kcy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsK
IAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmRzKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3VuZHMpOwogICAgIENHQ29udGV4
dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwog
ICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTk2Nyw3ICs5NjcsNyBAQCBjb25zdCBmbG9h
dCB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgPSAwLjFmOwogYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIEFTU0VSVChTYWZhcmlU
aGVtZUxpYnJhcnkoKSk7Ci0gICAgcGFpbnRUaGVtZVBhcnQoU2xpZGVyVGh1bWJQYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIE5TU21hbGxDb250cm9sU2l6ZSwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNsaWRlclRodW1iUGFydCwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNTbWFsbENvbnRyb2xT
aXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05OTAs
NyArOTkwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYKIHsKICAgICBBU1NFUlQoU2FmYXJp
VGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJj
aEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250
cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8p
KTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRQYXJ0LCBwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250cm9sU2l6ZUZyb21SZWN0
KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTEwNTEsNyArMTA1MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
CiAKICAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0
LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVt
ZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0
IFJlbmRlck9iamVjdAogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1l
UGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVG
cm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBzZWFy
Y2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMo
KSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzAs
NyArMTEzMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uCiAKICAgICBJbnRSZWN0IHNlYXJj
aFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9y
bXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJj
aFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygp
KSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNl
YXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IDE2MzVhNzRlNTg4YjU4Y2Q5ZDQ5MTQxNGYxY2ZjODdiM2VlYmJjYTUuLjk3ZGVmNjliYjk3NzE2
Mjg4NTdlM2QxZGRkYjA4NTUzMTg1MWNiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcApAQCAtNjIyLDcgKzYyMiw3IEBAIFRoZW1lRGF0YSBSZW5kZXJU
aGVtZVdpbjo6Z2V0VGhlbWVEYXRhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgQ29udHJvbFN1YlBh
cnQgc3ViCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0NvbnRyb2wo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0
aGVtZSwgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEsIGNvbnN0IEludFJlY3QmIHIpCitzdGF0
aWMgdm9pZCBkcmF3Q29udHJvbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgSEFORExFIHRoZW1lLCBjb25zdCBUaGVtZURhdGEmIHRoZW1lRGF0YSwgY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICBib29sIGFscGhhQmxlbmQgPSBmYWxzZTsKICAgICBpZiAo
dGhlbWUpCkBAIC02NzcsMTMgKzY3NywxMyBAQCBzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgSEFORExFCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWFscGhhQmxlbmQgJiYgIWNvbnRleHQtPmlzSW5UcmFu
c3BhcmVuY3lMYXllcigpKQorICAgIGlmICghYWxwaGFCbGVuZCAmJiAhY29udGV4dC5pc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSkKICAgICAgICAgRElCUGl4ZWxEYXRhOjpzZXRSR0JBQml0bWFwQWxw
aGEod2luZG93c0NvbnRleHQuaGRjKCksIHIsIDI1NSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVX
aW46OnBhaW50QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKQogeyAgCi0gICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywg
YnV0dG9uVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKKyAgICBkcmF3Q29udHJvbChpLmNv
bnRleHQoKSwgIG8sIGJ1dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC03MDcsOCArNzA3LDggQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRJbm5lclNwaW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludElu
Zm8KICAgICBJbnRSZWN0IGRvd25SZWN0KHIpOwogICAgIGRvd25SZWN0LnNldFkodXBSZWN0Lm1h
eFkoKSk7CiAgICAgZG93blJlY3Quc2V0SGVpZ2h0KHIuaGVpZ2h0KCkgLSB1cFJlY3QuaGVpZ2h0
KCkpOwotICAgIGRyYXdDb250cm9sKGkuY29udGV4dCwgbywgc3BpbkJ1dHRvblRoZW1lKCksIGdl
dFRoZW1lRGF0YShvLCBTcGluQnV0dG9uVXApLCB1cFJlY3QpOwotICAgIGRyYXdDb250cm9sKGku
Y29udGV4dCwgbywgc3BpbkJ1dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvLCBTcGluQnV0dG9u
RG93biksIGRvd25SZWN0KTsKKyAgICBkcmF3Q29udHJvbChpLmNvbnRleHQoKSwgbywgc3BpbkJ1
dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvLCBTcGluQnV0dG9uVXApLCB1cFJlY3QpOworICAg
IGRyYXdDb250cm9sKGkuY29udGV4dCgpLCBvLCBzcGluQnV0dG9uVGhlbWUoKSwgZ2V0VGhlbWVE
YXRhKG8sIFNwaW5CdXR0b25Eb3duKSwgZG93blJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OnNldENoZWNrYm94U2l6
ZShSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50
VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBGbG9hdFJlY3QmIHIpCiB7Ci0gICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywgdGV4dEZp
ZWxkVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCBJbnRSZWN0KHIpKTsKKyAgICBkcmF3Q29udHJv
bChpLmNvbnRleHQoKSwgIG8sIHRleHRGaWVsZFRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgSW50
UmVjdChyKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC03NDYsNyArNzQ2LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEluZm8KICAgICAgICAgcGFydCA9IFRGUF9URVhURklFTEQ7CiAgICAg
fQogCi0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRlcmVyLCB0aGVtZSwg
VGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkp
OworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRlcmVyLCB0aGVtZSwg
VGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkp
OwogICAgIAogICAgIHJldHVybiBwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoZG93bmNh
c3Q8UmVuZGVyQm94PihyZW5kZXJlciksIHBhaW50SW5mbywgRmxvYXRSZWN0KHJlY3QpKTsKIH0K
QEAgLTgwOCw3ICs4MDgsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgICAgICBidXR0
b25SZWN0LnNldFdpZHRoKGJ1dHRvblJlY3Qud2lkdGgoKSArIHZpc3RhTWVudUxpc3RCdXR0b25P
dXRzZXQpOwogICAgIH0KIAotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5k
ZXJlciwgbWVudUxpc3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0
KTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgpLCByZW5kZXJlciwgbWVudUxp
c3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0KTsKIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTgyNywxMyArODI3LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8m
IGksCiAgICAgICAgIGJvdW5kcy5zZXRYKHIueCgpICsgci53aWR0aCgpIC8gMiAtIHRyYWNrV2lk
dGggLyAyKTsKICAgICB9CiAgICAgCi0gICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywgc2xp
ZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCBib3VuZHMpOworICAgIGRyYXdDb250cm9sKGku
Y29udGV4dCgpLCAgbywgc2xpZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCBib3VuZHMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTbGlkZXJU
aHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcikKIHsgICAKLSAgICBkcmF3Q29udHJvbChpLmNvbnRleHQsICBvLCBzbGlkZXJUaGVt
ZSgpLCBnZXRUaGVtZURhdGEobyksIHIpOworICAgIGRyYXdDb250cm9sKGkuY29udGV4dCgpLCAg
bywgc2xpZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogCiAgICAg
c3RhdGljIEltYWdlKiBjYW5jZWxJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
c2VhcmNoQ2FuY2VsIikubGVha1JlZigpOwogICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsUHJlc3Nl
ZEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxQcmVzc2Vk
IikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaXNQcmVzc2Vk
KG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNw
YWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoaXNQcmVz
c2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xv
clNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05NDAsNyArOTQw
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gu
eSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAg
ICAgCiAgICAgc3RhdGljIEltYWdlKiBtYWduaWZpZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgic2VhcmNoTWFnbmlmaWVyIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCks
IGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1h
Z2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC05NzUsNyArOTc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGJvdW5k
cy5zZXRZKHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdo
dCgpICsgMSkgLyAyKTsKIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllclJlc3VsdHMiKS5sZWFrUmVm
KCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzksMTQgKzExMzksMTQgQEAgYm9vbCBSZW5k
ZXJUaGVtZVdpbjo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmYKICAgICBpbnQgcmVtYWluaW5nID0gc3RhdGljX2Nhc3Q8aW50PigoMS4w
IC0gZWxlbWVudC0+dmFsdWVSYXRpbygpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5zaXpl
KCkud2lkdGgoKSkpOwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZAotICAgIGRyYXdDb250
cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwg
dGhlbWUsIHJlY3QpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRl
ck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgcmVjdCk7CiAKICAgICAvLyBEcmF3
IHRoZSBwcm9ncmVzcyBwb3J0aW9uCiAgICAgSW50UmVjdCBjb21wbGV0ZWRSZWN0KHJlY3QpOwog
ICAgIGNvbXBsZXRlZFJlY3QuY29udHJhY3QocmVtYWluaW5nLCAwKTsKIAogICAgIHRoZW1lLm1f
cGFydCA9IFBQX0ZJTEw7Ci0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRl
ck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgY29tcGxldGVkUmVjdCk7CisgICAg
ZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVuZGVyT2JqZWN0LCBwcm9ncmVzc0Jh
clRoZW1lKCksIHRoZW1lLCBjb21wbGV0ZWRSZWN0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggNWY3Y2UxY2U3Njlk
YzE3NmU3NGJhNzA2NjQyMzlhNmY4YWI5NGE4Ny4uZTkzNTVhYTljMTVmOTllMGZjMzE4MWU2ZDFm
YjQ1NGI5NmM4NzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3Bw
CkBAIC0xODAsMTEgKzE4MCwxMSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogCiAgICAgTGF5
b3V0UmVjdCBjb250ZW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29udGVudFJlY3Qu
bW92ZUJ5KHBhaW50T2Zmc2V0KTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpOwogICAgIGJvb2wgY2xpcCA9ICFjb250ZW50UmVjdC5jb250YWlucyhyZWN0KTsK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXAp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlw
KTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50UmVjdCk7Cisg
ICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50UmVjdCk7CiAKICAgICBpZiAoZGlzcGxheWluZ1Bv
c3RlcikKICAgICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCByZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA4ZjBiNmU2MTk0ZTA3NTJkNjY3M2M5MjFl
OWRjMmZiNjA3M2RiM2YzLi4wNGEwOGQ1ZGVkMDNiZDNlNWQzN2Q5N2FhYzFlNjM2MmQ5MDNlNWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3
LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcg
Z2FyYmFnZSBiZXR3ZWVuIGNvbHVtbnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlm
IChmcmFtZVZpZXcoKS5wYWdpbmF0aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRl
ZCAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNl
QmFja2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFj
a2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgcGFpbnRPYmplY3Qo
cGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CkBAIC02MTMsMTIgKzYxMywxMiBAQCB2b2lkIFJl
bmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKICAgICAgICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBm
cmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IgPSAoYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgJiYgZG9jdW1l
bnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDog
ZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoYmFja2dyb3Vu
ZENvbG9yLmFscGhhKCkpIHsKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3Vz
T3BlcmF0b3IgPSBwYWludEluZm8uY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZUNvcHkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5m
by5yZWN0LCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwor
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwg
YmFja2dyb3VuZENvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xlYXJSZWN0
KHBhaW50SW5mby5yZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xlYXJS
ZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKaW5kZXggYWM3Yzg4ODJjZmM1ODIzNjEzNTBhY2NjOTg3MTNmMTE4
YmMxYjI1My4uOTk0Y2IwYzJjZjZmZmU3ODI4NjdmNTJkMWYyY2E5MzQ3MDQyZWNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIyOCwxNCArMjI4LDE0
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRz
IGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBl
bmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIsCiAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlz
IGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3Qt
cmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KICAgICBpZiAoIXdpZGdldFBhaW50T2Zm
c2V0LmlzWmVybygpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lk
Z2V0UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh3
aWRnZXRQYWludE9mZnNldCk7CiAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9m
ZnNldCk7CiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jb2xzaW5n
L2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVs
IHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVk
SW50UmVjdChwYWludFJlY3QpKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRl
eHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50
T2Zmc2V0LmlzWmVybygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13
aWRnZXRQYWludE9mZnNldCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRl
KC13aWRnZXRQYWludE9mZnNldCk7CiAKICAgICBpZiAoaXM8RnJhbWVWaWV3PigqbV93aWRnZXQp
KSB7CiAgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigq
bV93aWRnZXQpOwpAQCAtMjc1LDI2ICsyNzUsMjYgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUHVzaCBhIGNsaXAgaWYgd2UgaGF2ZSBh
IGJvcmRlciByYWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhlIGZvcmVncm91bmQgY29u
dGVudCB0aGF0IGdldHMgcGFpbnRlZC4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIEZsb2F0Um91
bmRlZFJlY3Qgcm91bmRlZElubmVyUmVjdCA9IEZsb2F0Um91bmRlZFJlY3Qoc3R5bGUoKS5nZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAgIHBhZGRpbmdUb3Ao
KSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSwgcGFkZGlu
Z0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpLCB0
cnVlLCB0cnVlKSk7Ci0gICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5jb250
ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKKyAgICAgICAgY2xpcFJvdW5kZWRJ
bm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgYm9yZGVyUmVjdCwgcm91bmRlZElubmVyUmVj
dCk7CiAgICAgfQogCiAgICAgaWYgKG1fd2lkZ2V0KQogICAgICAgICBwYWludENvbnRlbnRzKHBh
aW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVz
KCkpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJh
bnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQo
KSAmJiAhZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rp
b25SZWN0KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJl
Y3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2Vs
ZWN0aW9uUmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICB9CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5SZXNp
emUoKSkKLSAgICAgICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0LCBy
b3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBhaW50SW5mby5yZWN0KTsKKyAg
ICAgICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0KCksIHJvdW5kZWRJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgcGFpbnRJbmZvLnJlY3QpOwogfQogCiB2b2lk
IFJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggMzlmOTc5ZDYz
MzVmMzk4YzlkNzhiNDEzNGY4M2FmZWJlZWIwN2NhMS4uYzlmMGEwODI1ODUyYTQ1YTQ0OTNhZmU3
MzJjYTZhZDM3YzIxZjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVT
ZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pCiAgICAg
ICAgICAgICAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9Q
aHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAg
ICAgICAgICAgICAgIGlmIChpc1ByZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2FwUmVjdC53aWR0aCgp
ID4gMCAmJiBnYXBSZWN0LmhlaWdodCgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
cGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4
dC0+ZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5m
aWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbiBtYXkgYmUgbm9u
LWNvbnRpZ3VvdXMsIHNlZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAgICAgICAgICByZXN1
bHQudW5pdGVDZW50ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmlu
ZGV4IDU5ZDFhN2RlNTY3NDcxMjdiMzAzNDU3NThhYzI2YTZmMWNjMTYxYTIuLmYxYzZiMTBlN2Jk
ZGMyMzAxNmFjMDY1MjVhZmEyNGY5MzkxM2EzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBM
YXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIGJvb2wgZGVidWdCb3JkZXJzRW5h
YmxlZCA9IGZsb3cuZnJhbWUoKS5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRl
cnNFbmFibGVkKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZv
LmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQoKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7
CiAgICAgVGV4dFBhaW50U3R5bGUgdGV4dFBhaW50U3R5bGUgPSBjb21wdXRlVGV4dFBhaW50U3R5
bGUoZmxvdy5mcmFtZSgpLCBzdHlsZSwgcGFpbnRJbmZvKTsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGgg
PiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAKaW5kZXggN2FhNTRmYjhjMjEzZDAzOGUxOTgzMWJkOTI1MTEwYTE4N2Nl
NGU0Zi4uYjZkZTc5ZThiMjQ2NTk5ZmQyYTQ1OTI0Yzc2OTRhMjE3YTg4YjE5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKQEAgLTk1LDMzICs5NSwzMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5k
ZXJGbGV4aWJsZUJveDo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmIChp
bmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhh
c2VGb3JlZ3JvdW5kKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkg
fHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWlu
dE9mZnNldCArIGxvY2F0aW9uKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAw
LCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhp
Y2tuZXNzKDEuMGYpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
LCBDb2xvclNwYWNlU1JHQik7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShhZGp1
c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVs
U25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7Ci0gICAgaW5m
by5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSwgSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7Ci0g
ICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSks
IEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lk
dGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQo
KSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsg
cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSAr
IHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54
KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSks
IEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lk
dGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQo
KSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNl
dEhlaWdodCgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9m
ZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKICAgICAKICAgICBpbnQgdG9w
U3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOwogICAg
IAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1
c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVk
UGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyB0b3BTdGFydCksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCkp
OwogICAgIAogICAgIGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbihB
bHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAgICAgCi0gICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlU1JH
Qik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwg
Q29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFz
ZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9m
ZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwg
YWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFp
bnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9m
ZnNldC55KCkgKyBiYXNlbGluZSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShERUJVR19NQVRIX0xB
WU9VVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1MWYxNjhlYWViZjZhMmQ4YjNkZGZiN2EwNDE1
YTc3NDI0ODJkMzA1Li41MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3ZjA2NWQyZDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJh
Y3Rpb246OmxheW91dCgpCiB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJN
YXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwotICAgIGlmIChpbmZvLmNvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29u
dGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBSZW5kZXJCb3gqIGRlbm9taW5hdG9yV3JhcHBlciA9IGxhc3RDaGlsZEJv
eCgpOwpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKIAogICAg
IEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZz
ZXQgKyBsb2NhdGlvbigpICsgZGVub21pbmF0b3JXcmFwcGVyLT5sb2NhdGlvbigpICsgTGF5b3V0
UG9pbnQoMCwgbV9saW5lVGhpY2tuZXNzIC8gMikpOwogICAgIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIAotICAgIGluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7Ci0gICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgQ29sb3JTcGFjZVNSR0IpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0
ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpICsgZGVub21pbmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
bV9saW5lVGhpY2tuZXNzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdCKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50
UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBkZW5vbWluYXRvcldy
YXBwZXItPm9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBP
cHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IDE3NDY4YzExOTkzMDRhNzBkNjdiNzUwMGJlMmRiNzQw
NzVkNDJlNzUuLmI4NmUzNjI5YTZiNzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1NDc2OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6
OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiB7
CiAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAg
IGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9
IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBNYXRoTUxNZW5jbG9zZUVsZW1lbnQqIG1lbmNs
b3NlID0gZG93bmNhc3Q8TWF0aE1MTWVuY2xvc2VFbGVtZW50PihlbGVtZW50KCkpOwpAQCAtMTE0
LDIzICsxMTQsMjMgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgaW50IGhhbGZi
b3hXaWR0aCA9IHJlY3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIGludCBoYWxmYm94SGVpZ2h0ID0g
cmVjdC5oZWlnaHQoKSAvIDI7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9r
ZVRoaWNrbmVzcygxKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5j
b250ZXh0KCkpOworICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7
CisgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAg
ICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAg
ICAvLyBUT0RPIGFkZCBzdXBwb3J0IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAg
ICAgICAgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKLSAgICAg
ICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGJv
eEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wKSk7CisgICAgICAgICAgICAg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgYm94SGVpZ2h0
KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KG5vdGF0aW9uVmFsdWVzW2ldID09ICJkb3duZGlhZ29uYWxzdHJpa2UiKQotICAgICAgICAgICAg
ICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQo
bGVmdCArIGJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsg
Ym94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRp
b25WYWx1ZXNbaV0gPT0gInZlcnRpY2Fsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNv
bnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCksIEludFBv
aW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOworICAgICAgICAgICAg
ICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgs
IHRvcCksIEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwog
ICAgICAgICAgICAgZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImhvcml6b250YWxzdHJp
a2UiKQotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVm
dCwgdG9wICsgaGFsZmJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wICsg
aGFsZmJveEhlaWdodCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5l
KEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94
V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0
aW9uVmFsdWVzW2ldID09ICJjaXJjbGUiKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0
LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNlKHJlY3QpOworICAgICAg
ICAgICAgICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRy
YXdFbGxpcHNlKHJlY3QpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tp
XSA9PSAibG9uZ2RpdiIpCiAgICAgICAgICAgICAgICAgaXNEZWZhdWx0TG9uZ0RpdiA9IHRydWU7
CiAgICAgICAgIH0KQEAgLTE0NCw5ICsxNDQsOSBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3Nl
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1pZHhQb2ludCA9IHN0eWxlKCkucGFk
ZGluZ0xlZnQoKS52YWx1ZSgpOwogICAgICAgICAgICAgcm9vdC5hZGRCZXppZXJDdXJ2ZVRvKEZs
b2F0UG9pbnQobGVmdCwgdG9wKSwgRmxvYXRQb2ludChsZWZ0ICsgbWlkeFBvaW50LCB0b3AgKyBo
YWxmYm94SGVpZ2h0KSwgRmxvYXRQb2ludChsZWZ0LCB0b3AgKyBib3hIZWlnaHQpKTsKLSAgICAg
ICAgICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChyb290KTsKKyAgICAgICAgICAgIGluZm8u
Y29udGV4dCgpLnN0cm9rZVBhdGgocm9vdCk7CiAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0TG9u
Z0RpdikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCArIG1pZHhQb2ludCwgdG9wKSk7Cisg
ICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9w
KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoICsgbWlkeFBvaW50LCB0b3ApKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggOTM4ZjZiYzhlMGQwZjU5YzQ3MzJjOTkz
MWM4NTgyMzIxY2VjZTdkYS4uM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTljZGMxN2U0OTIyYzFh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE3OTcsMTIgKzE3OTcsMTIgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnRHbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0IEds
eXBoRGF0YSYgZGEKICAgICB9CiAKICAgICAvLyBDbGlwcGluZyB0aGUgZW5jbG9zaW5nIEludFJl
Y3QgYXZvaWRzIGFueSBwb3RlbnRpYWwgaXNzdWVzIGF0IGpvaW5lZCBlZGdlcy4KLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5m
by5jb250ZXh0LT5jbGlwKGNsaXBCb3VuZHMpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChj
bGlwQm91bmRzKTsKIAogICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKICAgICBidWZmZXIuYWRkKGRh
dGEuZ2x5cGgsIGRhdGEuZm9udCwgYWR2YW5jZUZvckdseXBoKGRhdGEpKTsKLSAgICBpbmZvLmNv
bnRleHQtPmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZm
ZXIsIDAsIDEsIG9yaWdpbik7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgp
LmZvbnRDYXNjYWRlKCksICpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luKTsKIAogICAg
IHJldHVybiBnbHlwaFBhaW50UmVjdDsKIH0KQEAgLTE4MTgsNyArMTgxOCw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWludElu
Zm8mIGluZm8sIGNvbnN0CiAgICAgaWYgKGZyb20ueSgpID09IHRvLnkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNv
bnRleHQoKSk7CiAKICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaCht
X3N0cmV0Y2h5RGF0YS5leHRlbnNpb24oKSk7CiAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWlu
dEluZm8mIGluZm8sIGNvbnN0CiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0
OwogICAgIGNsaXBCb3VuZHMuc2hpZnRZRWRnZVRvKGZyb20ueSgpKTsKICAgICBjbGlwQm91bmRz
LnNoaWZ0TWF4WUVkZ2VUbyh0by55KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91
bmRzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJp
bW1pbmcgbWF5IHJlbW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIHRvcCBvZiB0aGUgZXh0
ZW5kZXIgZ2x5cGgsIHNvIHdlIG1vdmUgaXQgdXAgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBv
ZmZzZXRUb0dseXBoVG9wID0gZ2x5cGhCb3VuZHMueSgpICsgMjsKQEAgLTE4NTYsMTQgKzE4NTYs
MTQgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5z
aW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb24KICAgICBpZiAoZnJvbS54KCkgPT0gdG8ueCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIENsaXBwaW5nIHRoZSBleHRlbmRlciBy
ZWdpb24gaGVyZSBhbGxvd3MgdXMgdG8gZHJhdyB0aGUgYm90dG9tIGV4dGVuZGVyIGdseXBoIGlu
dG8gdGhlCiAgICAgLy8gcmVnaW9ucyBvZiB0aGUgYm90dG9tIGdseXBoIHdpdGhvdXQgd29ycnlp
bmcgYWJvdXQgb3ZlcmRyYXcgKGhhaXJ5IHBpeGVscykgYW5kIHNpbXBsaWZpZXMgbGF0ZXIgY2xp
cHBpbmcuCiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0OwogICAgIGNsaXBC
b3VuZHMuc2hpZnRYRWRnZVRvKGZyb20ueCgpKTsKICAgICBjbGlwQm91bmRzLnNoaWZ0TWF4WEVk
Z2VUbyh0by54KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJpbW1pbmcgbWF5IHJl
bW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIGxlZnQgb2YgdGhlIGV4dGVuZGVyIGdseXBo
LCBzbyB3ZSBtb3ZlIGl0IGxlZnQgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBvZmZzZXRUb0ds
eXBoTGVmdCA9IC0yOwpAQCAtMTg4NSwxMSArMTg4NSwxMSBAQCB2b2lkIFJlbmRlck1hdGhNTE9w
ZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldAogewogICAgIFJlbmRlck1hdGhNTFRva2VuOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7
CiAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFIHx8IG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQorICAgIGlmIChpbmZv
LmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IG1fc3RyZXRj
aHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgIGluZm8uY29udGV4
dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRh
Lm1vZGUoKSA9PSBEcmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlE
YXRhLnZhcmlhbnQoKS5nbHlwaCk7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldAogICAgICAgICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBjZWlsZWRJ
bnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkpOwogICAgICAgICBGbG9hdFJlY3QgZ2x5
cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogICAg
ICAgICBMYXlvdXRQb2ludCBvcGVyYXRvck9yaWdpbihvcGVyYXRvclRvcExlZnQueCgpLCBvcGVy
YXRvclRvcExlZnQueSgpIC0gZ2x5cGhCb3VuZHMueSgpKTsKLSAgICAgICAgaW5mby5jb250ZXh0
LT5kcmF3R2x5cGhzKHN0eWxlKCkuZm9udENhc2NhZGUoKSwgKm1fc3RyZXRjaHlEYXRhLnZhcmlh
bnQoKS5mb250LCBidWZmZXIsIDAsIDEsIG9wZXJhdG9yT3JpZ2luKTsKKyAgICAgICAgaW5mby5j
b250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICptX3N0cmV0Y2h5RGF0
YS52YXJpYW50KCkuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAppbmRleCBkZjE0
YTg5OGQ2NWNjODlkY2NjMmQ2MWZhNWEwYmQ5MDdmZWQyMTJhLi5iNjkyZjc0NjllZjY2MzkzOWFh
MzYyODk0Yzg2NTYzZWEwMGI0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCkBA
IC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwKIAogdm9pZCBSZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChz
dHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpKSB7CkBAIC0xMjks
MTMgKzEyOSwxMyBAQCB2b2lkIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6cGFpbnQoUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIEZsb2F0UG9pbnQgZGlw
TGVmdFBvaW50KHN0YXJ0WCAtIGdSYWRpY2FsRGlwTGVmdFBvaW50WEZyb250ICogZnJvbnRXaWR0
aCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyByYWRpY2FsRGlwTGVmdFBvaW50WVBvcyk7CiAg
ICAgRmxvYXRQb2ludCBsZWZ0RW5kKHN0YXJ0WCAtIGZyb250V2lkdGgsIGRpcExlZnRQb2ludC55
KCkgKyBnUmFkaWNhbExlZnRFbmRZU2hpZnRFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7
CiAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbExpbmVUaGlj
a25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ry
b2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgIGluZm8uY29udGV4dC0+c2V0TGluZUpvaW4oTWl0ZXJKb2luKTsK
LSAgICBpbmZvLmNvbnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNz
RW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldExpbmVKb2luKE1pdGVySm9pbik7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0TWl0ZXJMaW1pdChzdHlsZSgpLmZvbnRTaXplKCkpOwogCiAg
ICAgUGF0aCByb290OwogCkBAIC0xNDcsOSArMTQ3LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW4KICAgICAvLyBkcmF3IHRvIGVuZAogICAgIHJvb3QuYWRkTGluZVRvKGxlZnRFbmQpOwogCi0g
ICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRoKHJvb3QpOworICAgIGluZm8uY29udGV4dCgpLnN0
cm9rZVBhdGgocm9vdCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIG1hc2tTdGF0
ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgbWFz
a1N0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCiAgICAgLy8gQnVpbGQgYSBtYXNrIHRvIGRy
YXcgdGhlIHRoaWNrIHBhcnQgb2YgdGhlIHJvb3QuCiAgICAgUGF0aCBtYXNrOwpAQCAtMTU5LDE3
ICsxNTksMTcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBtYXNrLmFkZExpbmVUbyhk
aXBMZWZ0UG9pbnQpOwogICAgIG1hc2suYWRkTGluZVRvKEZsb2F0UG9pbnQoMiAqIGRpcExlZnRQ
b2ludC54KCkgLSBsZWZ0RW5kLngoKSwgMiAqIGRpcExlZnRQb2ludC55KCkgLSBsZWZ0RW5kLnko
KSkpOwogCi0gICAgaW5mby5jb250ZXh0LT5jbGlwKG1hc2spOworICAgIGluZm8uY29udGV4dCgp
LmNsaXAobWFzayk7CiAKICAgICAvLyBEcmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSByb290Lgot
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tMaW5lVGhp
Y2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldExp
bmVDYXAoU3F1YXJlQ2FwKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
Z1JhZGljYWxUaGlja0xpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOworICAg
IGluZm8uY29udGV4dCgpLnNldExpbmVDYXAoU3F1YXJlQ2FwKTsKIAogICAgIFBhdGggbGluZTsK
ICAgICBsaW5lLm1vdmVUbyhib3R0b21Qb2ludCk7CiAgICAgbGluZS5hZGRMaW5lVG8oZGlwTGVm
dFBvaW50KTsKIAotICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChsaW5lKTsKKyAgICBpbmZv
LmNvbnRleHQoKS5zdHJva2VQYXRoKGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCBlYmUyZDM3
MzU3Y2QxZTg2OWIxYzllYzNiZWMxMDFkYzExYjliMmFlLi5hYzRhMTVkZDg0YTQ5MzQ0MmYzNDU5
YzVhNDUwMjEzMTRhMDE3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFJl
bmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgCi0gICAgaWYgKGlzRW1wdHkoKSB8fCBpbmZvLmNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlm
IChpc0VtcHR5KCkgfHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
YmFzZSA9IGJhc2VXcmFwcGVyKCk7CkBAIC0zMjgsMTYgKzMyOCwxNiBAQCB2b2lkIFJlbmRlck1h
dGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkcmF3IHRoZSByYWRpY2FsIGxp
bmUuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRl
eHQoKSk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlj
a25lc3MpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8u
Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOworICAgIGluZm8u
Y29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBUaGUgcHJlZmVycmVkIHdp
ZHRoIG9mIHRoZSByYWRpY2FsIGlzIHNvbWV0aW1lcyBpbmNvcnJlY3QsIHNvIHdlIGRyYXcgYSBz
bGlnaHRseSBsb25nZXIgbGluZSB0byBlbnN1cmUgaXQgdG91Y2hlcyB0aGUgcmFkaWNhbCBzeW1i
b2wgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjYpLgogICAg
IExheW91dFVuaXQgc2l6ZUVycm9yID0gcmFkaWNhbC0+dHJhaWxpbmdTcGFjZUVycm9yKCk7CiAg
ICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9m
ZnNldCArIGxvY2F0aW9uKCkgKyBiYXNlLT5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoLXNpemVF
cnJvciwgLShtX3ZlcnRpY2FsR2FwICsgbV9ydWxlVGhpY2tuZXNzIC8gMikpKTsKLSAgICBpbmZv
LmNvbnRleHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChM
YXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkg
KyBzaXplRXJyb3IsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOworICAgIGluZm8uY29udGV4
dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkgKyBzaXpl
RXJyb3IsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVy
TWF0aE1MUm9vdFdyYXBwZXI+IFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyOjpjcmVhdGVBbm9ueW1v
dXNXcmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNThlYjllMjQwNjc2YTExNGRjMWI5NzY4
Nzc1NjM0MmIzOTJmYjk2OS4uNjkyMjI4MTkxOGM0ODMxZTcyOTk1M2I2MjAyOTEyODgyOGQ1MThm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4Miw4
ICsxODIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5z
aXplKCkpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAg
IHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5ndGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4
IGExZjEwMzAwNGFiNzhiYzMyNzE1NzdjMGYxMGVkNDYzYjg4NTNkYTUuLmIxMzc0ZTA4YjEwODQz
NGRhZGU1MzJkNGRmMTIwZGY3NzM0MWQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFZlY3Rv
cjxGbG9hdFNpemU+IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlTm9uSW50cmluc2ljVGlsZVNjYWxl
cygpCiAgICAgcmV0dXJuIFZlY3RvcjxGbG9hdFNpemU+KE1heFBpZWNlLCBGbG9hdFNpemUoMSwg
MSkpOwogfQogCi12b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUm
IHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvciwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0Cit2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0CiB7CiAgICAgU3R5
bGVJbWFnZSogc3R5bGVJbWFnZSA9IGltYWdlKCk7CiAgICAgQVNTRVJUKHN0eWxlSW1hZ2UgJiYg
c3R5bGVJbWFnZS0+aXNMb2FkZWQoKSk7CkBAIC0yMzgsMTMgKzIzOCwxMyBAQCB2b2lkIE5pbmVQ
aWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVy
RWxlbWVudCogcmVuZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29y
bmVyUGllY2UocGllY2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJj
ZVJlY3RzW3BpZWNlXSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJj
ZVJlY3RzW3BpZWNlXSwgb3ApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAog
ICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkg
PyBzdGF0aWNfY2FzdDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6
OlN0cmV0Y2hUaWxlOwogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2Fs
UGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUo
KSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2Vd
LCBzb3VyY2VSZWN0c1twaWVjZV0sIHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9w
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0
aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IDRiZWYx
YWY4N2NlNGQ1MzMyOTNkMDBlMzE4NTQ1MzQ5ZGFkMWQwN2YuLjljMzJlNWNhYTQyMWVjN2ZiMmE0
OTljMzZhNzk4NTI0NmRjZWI1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBWZWN0b3I8RmxvYXRTaXplPiBjb21wdXRlSW50cmluc2ljVGlsZVNjYWxlcyhjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYgZGVzdGluYXRpb25SZWN0cywgY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mIHNvdXJjZVJlY3RzLCBFTmluZVBpZWNlSW1hZ2VSdWxlIGhSdWxlLCBFTmluZVBpZWNlSW1h
Z2VSdWxlIHZSdWxlKTsKICAgICBzdGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4gY29tcHV0ZU5vbklu
dHJpbnNpY1RpbGVTY2FsZXMoKTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Kiwg
UmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5b3V0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRyaW5zaWNTb3VyY2Us
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBDb21wb3NpdGVPcGVyYXRvcikgY29uc3Q7CisgICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBMYXlvdXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYg
c291cmNlLCBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENv
bXBvc2l0ZU9wZXJhdG9yKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRhUmVmPE5pbmVQaWVj
ZUltYWdlRGF0YT4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IDgyMDdkZjQxOWJmMmFjMWIxODBmZDk4ZmNi
MWI4MGM1MmU5Zjc1MTQuLjM4ZWZiMmM5OTRjNmNlMzlkMmJiMGUyOTkwODY2N2Q1NGY5ZTBjOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6c2Vs
ZldpbGxQYWludCgpCiAKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlYzogZ3JvdXBz
IHcvbyBjaGlsZHJlbiBzdGlsbCBtYXkgcmVuZGVyIGZpbHRlciBjb250ZW50LgpAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZv
KHBhaW50SW5mbyk7CiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY2hpbGRQYWludEluZm8uY29udGV4dCgpKTsKIAogICAg
ICAgICAvLyBMZXQgdGhlIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIHN1YmNsYXNzIGNsaXAg
aWYgbmVjZXNzYXJ5CiAgICAgICAgIGFwcGx5Vmlld3BvcnRDbGlwKGNoaWxkUGFpbnRJbmZvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3Bw
CmluZGV4IGNiNmQ5YzM3Yzg2M2I3M2VkZjNmOTUwZmUwOGJlYjgxM2MwNjFjMzUuLmZhZTM3MWFl
Y2ZkZTgxZWFiNzdiZTQ5NGYxMzk5ODY1NGViYTcwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcApAQCAtOTMsMTYgKzkzLDE2IEBA
IHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKQogICAgICAg
ICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgpLCBM
ZW5ndGhNb2RlSGVpZ2h0KSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV91
c2VQYXRoRmFsbGJhY2spIHsKICAgICAgICAgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb250
ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5maWxsRWxsaXBzZSht
X2ZpbGxCb3VuZGluZ0JveCk7CisgICAgY29udGV4dC5maWxsRWxsaXBzZShtX2ZpbGxCb3VuZGlu
Z0JveCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFw
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2
Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShj
b250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5zdHJva2VFbGxp
cHNlKG1fZmlsbEJvdW5kaW5nQm94KTsKKyAgICBjb250ZXh0LnN0cm9rZUVsbGlwc2UobV9maWxs
Qm91bmRpbmdCb3gpOwogfQogCiBib29sIFJlbmRlclNWR0VsbGlwc2U6OnNoYXBlRGVwZW5kZW50
U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IGI1ODdkMWFiMzMxNDcw
MzIzMmY1ZDBlMDljMTc4Y2I1NWE5Y2I1MjYuLjlhNmZjMTJjZGVkYWJhMTU1MjVjNDRkYmE4OTNl
OGNmNTllNmI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRWxsaXBzZS5oCkBAIC00Miw4ICs0Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVy
U1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tl
Q29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBz
aGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1
bGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCmluZGV4IDQ2OTg5MDdkZjk4ZTY5MjMxNTY0MjZkMTYyNTI0ZDAwYTdiNDBm
ZjUuLmI4NzkxYWU0MDIzNDA0ZTJjYmMxMzJmNWRkYTE0MjY5ZTBkMmE3OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0Ojpmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZv
cmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8u
Y29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxk
UGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0o
bG9jYWxUcmFuc2Zvcm0oKSk7CiAKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxv
d0hpZGRlbigqdGhpcykpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92
aWV3cG9ydCk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKG1fdmlld3Bv
cnQpOwogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwogICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTAyMTY3OTgx
MTMzZGNmY2E2ZTFlNmUyNTQ4N2EzOTVlM2FhZDVjZi4uYjhhMTk2ZTk1MTM3MDFkNTZhYmVhNmI5
MmNmYWQ0ZWQzMDNhYzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdl
OjpsYXlvdXQoKQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZAorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKICAgICAgICAgfHwgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDAsMTQgKzE0MCwxNCBAQCB2b2lkIFJlbmRlclNWR0lt
YWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAg
ICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGls
ZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3Jt
KG1fbG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVy
aW5nQ29udGV4dCgqdGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAgIGlmIChyZW5kZXJp
bmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgaWYgKHN0eWxl
KCkuc3ZnU3R5bGUoKS5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NUQVRJQyAgJiYgcmVuZGVy
aW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKKyAgICAg
ICAgICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJpbmcoKSA9PSBCUl9T
VEFUSUMgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3Jl
Z3JvdW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHBhaW50Rm9y
ZWdyb3VuZChjaGlsZFBhaW50SW5mbyk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW5kZXJT
VkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiAgICAgaW1h
Z2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3Qs
IHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVC
dWZmZXJlZEZvcmVncm91bmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5jcHAKaW5kZXggOGU0MGQ4YmU5NTI3OGYyOWU2NmU3NmI2MTY3ZTY0YzBkYzQ5
MjVkNi4uMWQwMTNhZDdjMWUwZThjNDAxNDAwODY4YTI3MjU5M2FiYWNhMmQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02NCwxNyAr
NjQsMTcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VC
b3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0cm9rZUJvdW5kaW5nQm94OwogfQogCi1z
dGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
CitzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgaWYgKEdyYWRpZW50KiBncmFkaWVudCA9IGNvbnRleHQtPnN0cm9rZUdyYWRp
ZW50KCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOwotICAg
IGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0g
ICAgICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKKyAgICBpZiAoR3JhZGll
bnQqIGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQorICAgICAgICBjb250ZXh0
LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOworICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRl
cm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0
dGVybigqcGF0dGVybik7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Y29udGV4dC0+c3Ryb2tlQ29sb3IoKSwgY29udGV4dC0+c3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29udGV4dC5zdHJva2VDb2xvcigpLCBjb250ZXh0
LnN0cm9rZUNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdQYXRoOjpz
dHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFz
dHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBA
IC05MCwxMyArOTAsMTMgQEAgdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkK
ICAgICAgICAgbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0o
KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwg
dHJ1ZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQs
IHRydWUpOwogICAgIHVzZVN0cm9rZVN0eWxlVG9GaWxsKGNvbnRleHQpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV96ZXJvTGVuZ3RoTGluZWNhcExvY2F0aW9ucy5zaXplKCk7ICsraSkg
ewogICAgICAgICB1c2VQYXRoID0gemVyb0xlbmd0aExpbmVjYXBQYXRoKG1femVyb0xlbmd0aExp
bmVjYXBMb2NhdGlvbnNbaV0pOwogICAgICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgpKQog
ICAgICAgICAgICAgdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKHVzZVBhdGgsIG5vblNj
YWxpbmdUcmFuc2Zvcm0pOwotICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqdXNlUGF0aCk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFBhdGgoKnVzZVBhdGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCAwOGQ4OTExOWViYmFj
MTliMTVlMDZhZmVjYzdjNWVlMzQyYzA0OTI5Li5iYmQyMmRjNWIwY2I5Yjg1YzEyZTgxMGJlYjA0
NDQxYzI5ZDg3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVw
ZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHN0cm9r
ZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcApp
bmRleCAwM2ZiYmI5ZDUwODkzYzI1Njc4NTVjYmUxYTIzYjI2YTYyMWEyODg3Li5jYmM4OGY3ZjY2
OTBhOTVjZWU5YjM2MzE3MWQyOTU2ZTc4ZjA2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKICNlbmRpZgogfQogCi12b2lkIFJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2
b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgaWYgKG1fdXNlUGF0aEZhbGxiYWNrKSB7CiAgICAgICAgIFJlbmRlclNWR1No
YXBlOjpmaWxsU2hhcGUoY29udGV4dCk7CkBAIC0xMDksMTggKzEwOSwxOCBAQCB2b2lkIFJlbmRl
clNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAg
Ly8gc2hhZG93IGRyYXdpbmcgbWV0aG9kLCB3aGljaCBkcmF3cyBhbiBleHRyYSBzaGFkb3cuCiAg
ICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHN3aXRjaGluZyBvZmYgdGhlIGV4dHJhIHNo
YWRvdy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4
OTkKLSAgICBpZiAoY29udGV4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xl
YXJTaGFkb3coKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gp
OworICAgIGlmIChjb250ZXh0Lmhhc1NoYWRvdygpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGVhclNo
YWRvdygpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgY29udGV4dC0+ZmlsbFJlY3QobV9m
aWxsQm91bmRpbmdCb3gpOworICAgIGNvbnRleHQuZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gp
OwogfQogCi12b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhh
c1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC0+c3Ryb2tlUmVjdCht
X2ZpbGxCb3VuZGluZ0JveCwgc3Ryb2tlV2lkdGgoKSk7CisgICAgY29udGV4dC5zdHJva2VSZWN0
KG1fZmlsbEJvdW5kaW5nQm94LCBzdHJva2VXaWR0aCgpKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdS
ZWN0OjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCA5
NzAzMDFhYTc5ZjVjM2RlMmViMzI4NmQzMGQxM2Y1ZGViNDE0ODlmLi4wMjZlZTYzMDliNTkxZWMx
ZjBjMzVjZDYzMjE1Nzk1Mjc5MmU0ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDgsOCArNDgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/
IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVu
dFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDhiOWE2
Mjg5ZTI4MjA1YzkwYjFlMDRlM2M3ZDQ4YmQ1YTE4NWZhNTguLjVlNDc3NWJlMGI2YTAwNGM2ZjVj
NjI2YWMzNDFhMzJiOTFlNTdlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTY5LDEwICs2OSwx
MCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0
TW9kZSk7CiAKLSAgICByZXR1cm4gYXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlciwgcmVu
ZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKSwgcmVuZGVyZXIucmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKSwgY29udGV4dCk7CisgICAgcmV0dXJuIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQo
cmVuZGVyZXIsIHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCksIHJlbmRlcmVyLnJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCksICpjb250ZXh0KTsKIH0KIAotYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gpCitib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
cjo6cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBvYmpl
Y3RCb3VuZGluZ0JveCkKIHsKICAgICAvLyBJZiB0aGUgY3VycmVudCBjbGlwLXBhdGggZ2V0cyBj
bGlwcGVkIGl0c2VsZiwgd2UgaGF2ZSB0byBmYWxsYmFjayB0byBtYXNraW5nLgogICAgIGlmICgh
c3R5bGUoKS5zdmdTdHlsZSgpLmNsaXBwZXJSZXNvdXJjZSgpLmlzRW1wdHkoKSkKQEAgLTEyMywx
MiArMTIzLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBw
aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAvLyBUaGUgU1ZHIHNwZWNp
ZmljYXRpb24gd2FudHMgdXMgdG8gY2xpcCBldmVyeXRoaW5nLCBpZiBjbGlwLXBhdGggZG9lc24n
dCBoYXZlIGEgY2hpbGQuCiAgICAgaWYgKGNsaXBQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgY2xp
cFBhdGguYWRkUmVjdChGbG9hdFJlY3QoKSk7Ci0gICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBh
dGgsIGNsaXBSdWxlKTsKKyAgICBjb250ZXh0LmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwUnVsZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjph
cHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0
UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBjbGlwcGVy
TWFza0ltYWdlID0gYWRkUmVuZGVyZXJUb0NsaXBwZXIocmVuZGVyZXIpOwogICAgIGJvb2wgc2hv
dWxkQ3JlYXRlQ2xpcHBlck1hc2tJbWFnZSA9ICFjbGlwcGVyTWFza0ltYWdlOwpAQCAtMTQ1LDE3
ICsxNDQsMTUgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKICAgICAgICAgaWYgKCFjbGlwcGVy
TWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIEdyYXBoaWNz
Q29udGV4dCogbWFza0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAg
ICAgIEFTU0VSVChtYXNrQ29udGV4dCk7Ci0KLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENU
TShhbmltYXRlZExvY2FsVHJhbnNmb3JtKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNr
Q29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgbWFza0NvbnRl
eHQuY29uY2F0Q1RNKGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIGNsaXBQ
YXRoIGNhbiBhbHNvIGJlIGNsaXBwZWQgYnkgYW5vdGhlciBjbGlwUGF0aC4KICAgICAgICAgYXV0
byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRl
cmVyKCp0aGlzKTsKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyOwog
ICAgICAgICBib29sIHN1Y2NlZWRlZDsKICAgICAgICAgaWYgKHJlc291cmNlcyAmJiAoY2xpcHBl
ciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptYXNrQ29udGV4dCk7CisgICAgICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobWFza0NvbnRleHQpOwogCiAgICAgICAgICAg
ICBpZiAoIWNsaXBwZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoKnRoaXMsIG9iamVjdEJvdW5k
aW5nQm94LCByZXBhaW50UmVjdCwgbWFza0NvbnRleHQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE4MCwxNCArMTc3LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKIHsK
ICAgICBBU1NFUlQoY2xpcHBlck1hc2tJbWFnZSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIG1h
c2tDb250ZXh0ID0gY2xpcHBlck1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNr
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNr
SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5z
Zm9ybWF0aW9uOwogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0g
U1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAg
IG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94Lngo
KSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1h
dGlvbi5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91
bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBtYXNrQ29udGV4dC0+Y29uY2F0Q1RNKG1hc2tD
b250ZW50VHJhbnNmb3JtYXRpb24pOworICAgICAgICBtYXNrQ29udGV4dC5jb25jYXRDVE0obWFz
a0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gU3dpdGNoIHRvIGEgcGFp
bnQgYmVoYXZpb3Igd2hlcmUgYWxsIGNoaWxkcmVuIG9mIHRoaXMgPGNsaXBQYXRoPiB3aWxsIGJl
IHJlbmRlcmVkIHVzaW5nIHNwZWNpYWwgY29uc3RyYWludHM6CkBAIC0yMjYsNyArMjIyLDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShj
b25zdCBDbGlwcGVyTWFza0ltYWdlJgogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1NoYXBl
KCkgJiYgIXJlbmRlcmVyLT5pc1NWR1RleHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIG1hc2tDb250ZXh0LT5zZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7CisgICAgICAgIG1h
c2tDb250ZXh0LnNldEZpbGxSdWxlKG5ld0NsaXBSdWxlKTsKIAogICAgICAgICAvLyBJbiB0aGUg
Y2FzZSBvZiBhIDx1c2U+IGVsZW1lbnQsIHdlIG9idGFpbmVkIGl0cyByZW5kZXJlcmUgYWJvdmUs
IHRvIHJldHJpZXZlIGl0cyBjbGlwUnVsZS4KICAgICAgICAgLy8gV2UgaGF2ZSB0byBwYXNzIHRo
ZSA8dXNlPiByZW5kZXJlciBpdHNlbGYgdG8gcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoKSB0
byBhcHBseSBpdCdzIHgveS90cmFuc2Zvcm0vZXRjLiB2YWx1ZXMgd2hlbiByZW5kZXJpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuaAppbmRleCA0NDE1Yjk0YjEzYTYyZGI2ZmJhNjNjZDA2MmZkZDRjODY2OTZiNDVj
Li5iNzcwNDk2NTNkYWNmNDVmYzAxZTUzNmQ5NjBkNTRhMTk2ZjRlZjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIC8vIGNsaXBQYXRoIGNhbiBiZSBjbGlw
cGVkIHRvbywgYnV0IGRvbid0IGhhdmUgYSBib3VuZGluZ0JveCBvciByZXBhaW50UmVjdC4gU28g
d2UgY2FuJ3QgY2FsbAogICAgIC8vIGFwcGx5UmVzb3VyY2UgZGlyZWN0bHkgYW5kIHVzZSB0aGUg
cmVjdHMgZnJvbSB0aGUgb2JqZWN0LCBzaW5jZSB0aGV5IGFyZSBlbXB0eSBmb3IgUmVuZGVyU1ZH
UmVzb3VyY2VzCiAgICAgLy8gRklYTUU6IFdlIG1hZGUgYXBwbHlDbGlwcGluZ1RvQ29udGV4dCBw
dWJsaWMgYmVjYXVzZSB3ZSBjYW5ub3QgY2FsbCBhcHBseVJlc291cmNlIG9uIEhUTUwgZWxlbWVu
dHMgKGl0IGFzc2VydHMgb24gUmVuZGVyT2JqZWN0OjpvYmplY3RCb3VuZGluZ0JveCkKLSAgICBi
b29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgYXBwbHlD
bGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVz
b3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIiOyB9CiAKLSAgICBib29sIHBhdGhP
bmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRSZWN0Jik7CisgICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGJvb2wg
ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KTsKICAgICB2b2lkIGNhbGN1bGF0ZUNsaXBDb250
ZW50UmVwYWludFJlY3QoKTsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBhZGRSZW5kZXJlclRvQ2xp
cHBlcihjb25zdCBSZW5kZXJPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZTMxODY1ZDgw
M2MxM2QxNTBiNTcxYjYxZGUwNzg2MWIwMjE3MTFmYy4uMDRlYWQxYThiZWE2NGE0YWYzNjMwNmFm
ZTc1OTE2YjlkMDdjODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE5OCwxMyArMTk4LDEyIEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgLy8gU2V0IHRoZSByZW5kZXJpbmcgbW9kZSBm
cm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCiAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRSZW5k
ZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VH
cmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoc291
cmNlR3JhcGhpY0NvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc291cmNlR3JhcGhpY0Nv
bnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7CiAgIAogICAgIGZpbHRlckRhdGEtPnNv
dXJjZUdyYXBoaWNCdWZmZXIgPSBXVEY6Om1vdmUoc291cmNlR3JhcGhpYyk7CiAgICAgZmlsdGVy
RGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAotICAgIGNvbnRleHQgPSBzb3VyY2VHcmFw
aGljQ29udGV4dDsKKyAgICBjb250ZXh0ID0gJnNvdXJjZUdyYXBoaWNDb250ZXh0OwogCiAgICAg
QVNTRVJUKCFtX2ZpbHRlci5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICBtX2ZpbHRlci5zZXQo
JnJlbmRlcmVyLCBXVEY6Om1vdmUoZmlsdGVyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5k
ZXggY2JjYTEwM2VmMzA1Njk3OWVmNDY1YzJiNTdiNTMzN2E5OGI1ZDc0ZS4uYWNlYTIzMGM5ZDky
NWMzNDZlODBkNDI4ZDk5ODJjNTg3OTVjZDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC02
NSwxNiArNjUsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4
dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAgICBpZiAoIW1hc2tJbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1h
Z2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKG1hc2tJbWFnZUNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOwogICAgIEFTU0VSVChtYXNrSW1hZ2UpOwogICAgIHNhdmVkQ29udGV4dCA9
IGNvbnRleHQ7Ci0gICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7CisgICAgY29udGV4dCA9
ICZtYXNrSW1hZ2VDb250ZXh0OwogICAgIGltYWdlQnVmZmVyID0gV1RGOjptb3ZlKG1hc2tJbWFn
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3Jt
IGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGJvb2wgYm91bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGdyYWRpZW50VHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xp
cFRvVGV4dE1hc2soR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgYm9vbCBib3VuZGluZ0JveE1vZGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Z3JhZGllbnRUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNW
R1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigqb2JqZWN0KTsKICAgICBBU1NFUlQo
dGV4dFJvb3RCbG9jayk7CkBAIC0yMDcsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3Jh
cGgKICAgICAgICAgICAgIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKGdyYWRpZW50VHJhbnNm
b3JtKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Q7Ci0gICAgICAgICAgICBn
cmFkaWVudERhdGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1Rl
eHRNYXNrKGNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3Jh
ZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3Jh
ZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1hc2soKmNvbnRleHQs
IG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRU
cmFuc2Zvcm0pKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGll
bnREYXRhLT5ncmFkaWVudCk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdl
dFJlY3QpOwpAQCAtMjIxLDEzICsyMjAsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAg
ICAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCpw
YXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgICAgIHNoYXBl
LT5maWxsU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgq
Y29udGV4dCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9T
dHJva2VNb2RlKSB7CiAgICAgICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAg
ICAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgICAg
ICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXIuY3BwCmluZGV4IDhjM2JkYjM0NzUxMDQwNjk2N2JlNjgzNTYxNzMwYzAyZjllMGZhYTYu
LjY5ZTVkYjE2ZmYxMWQ2MWMwMDRjNWNiNWIwMTBlNTAyOTE2YjYwMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92
ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wKIHZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogewogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSkK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogRmxvYXRSZWN0IFJlbmRl
clNWR1Jlc291cmNlTWFya2VyOjptYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbWFya2VyVHJhbnNmb3JtYXRpb24pIGNvbnN0CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6ZHJhdyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJgogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gaW5mbyhw
YWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5m
by5jb250ZXh0KCkpOwogICAgIGluZm8uYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBS
ZW5kZXJTVkdDb250YWluZXI6OnBhaW50KGluZm8sIEludFBvaW50KCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcAppbmRleCA1MzBkYTNkNmZhZWQ0Yzc1YzdhZWZhYWZiMGM0MGVkMTU4N2M4YzU1Li5hZDM3
ZDQ3Yzk4NDZhYzAwNTNkYTUyYzU0ZGQ5YWY0YzMxZDVjZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApA
QCAtODAsMTQgKzgwLDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgaWYgKCFtYXNr
ZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3Jt
LCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7
CisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmNvbnRleHQsIGFi
c29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNz
aW5nTWFza2VyRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAg
IEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFn
ZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRl
eHQoKTsKIAogICAgIC8vIEV2ZW50dWFsbHkgYWRqdXN0IHRoZSBtYXNrIGltYWdlIGNvbnRleHQg
YWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgb2JqZWN0Qm91bmRpbmdCb3guCiAgICAgQWZmaW5lVHJh
bnNmb3JtIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb247CkBAIC05NSw3ICs5NCw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJE
YXRhKiBtYXNrZXJEYXRhLCBDCiAgICAgICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCA9
IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zv
cm1hdGlvbi50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0Jv
eC55KCkpOwogICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnNjYWxlTm9uVW5pZm9y
bShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7
Ci0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmNvbmNhdENUTShtYXNrQ29udGVudFRyYW5zZm9y
bWF0aW9uKTsKKyAgICAgICAgbWFza0ltYWdlQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRU
cmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgY29udGVudCBpbnRvIHRo
ZSBJbWFnZUJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA0YmMwZDk1MTJiMjkwYzcyN2Q3
YTc3YzhiMjQ1ODQ5OTljMWY2OWJlLi45Zjk1ZGQyNmIzMWIwZGU5NDg4NWUzOTU0MzY3YWJmYTQy
NGQ4MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xODksMTMgKzE4OSwxMyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYs
IEdyYXBoaWNzQ29udGV4dAogICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBz
aGFwZS0+ZmlsbFNoYXBlKGNvbnRleHQpOworICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgq
Y29udGV4dCk7CiAgICAgfQogICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9k
ZSkgewogICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgo
KnBhdGgpOwogICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgIHNoYXBlLT5zdHJv
a2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZSgqY29udGV4
dCk7CiAgICAgfQogCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMjM3LDE2ICsyMzcsMTUg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXQKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQg
PSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQodGlsZUltYWdlQ29udGV4dCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0
KCk7CiAKICAgICAvLyBUaGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRl
cmVkIHNpemUsIHNvIHRoZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVs
YXRpb24pLgotICAgIHRpbGVJbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKKyAg
ICB0aWxlSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMuaGVp
Z2h0KCkgLyB0aWxlQm91bmRhcmllcy5oZWlnaHQoKSkpOwogCiAgICAgLy8gQXBwbHkgdGlsZSBp
bWFnZSB0cmFuc2Zvcm1hdGlvbnMuCiAgICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVu
dGl0eSgpKQotICAgICAgICB0aWxlSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odGlsZUltYWdlVHJh
bnNmb3JtKTsKKyAgICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJh
bnNmb3JtKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAg
ICAgaWYgKGF0dHJpYnV0ZXMucGF0dGVybkNvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcApp
bmRleCBmNTAxYWJmNDRiMjE0MTY3OWE2YjdhNjk4ZWZiMTcxODViZTU3MDI5Li5mYjg4ZmM4YjRi
MjhiNzg1OWRkOGYyMTViOTAyNTFkN2UwZDI4M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
CkBAIC04MSwxMyArODEsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBv
c3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnQKICAgICAgICAgaWYg
KHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgIGVs
c2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZShjb250ZXh0KTsKKyAg
ICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgIH0KICAgICBpZiAocmVz
b3VyY2VNb2RlICYgQXBwbHlUb1N0cm9rZU1vZGUpIHsKICAgICAgICAgaWYgKHBhdGgpCiAgICAg
ICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hh
cGUpCi0gICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAg
ICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzRjN2Y2ODg2ZjUx
YjIxMzI1OWU4ZGRjY2JmZWJkMGFkMjBkM2RlMC4uYzJmYWFhMjVlMTQzMmY2MGY3ODkxOGIwZjg1
NzVlNDUyN2E4YTQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgcGFpbnQsIGlmIHRoZSBjb250ZXh0IGV4
cGxpY2l0bHkgZGlzYWJsZWQgaXQuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTVkcgb3V0bGluZXMgYXJlIHBhaW50ZWQg
ZHVyaW5nIFBhaW50UGhhc2VGb3JlZ3JvdW5kLgpAQCAtMjU3LDE4ICsyNTcsMTggQEAgdm9pZCBS
ZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnQKIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8g
YmVjYXVzZSBhcHBseVRyYW5zZm9ybSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdlIHJlY3QuCiAgICAg
UGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7Ci0gICAgY2hpbGRQYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOworICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAK
ICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNsaXAKICAgICBpZiAoc2hvdWxkQXBwbHlW
aWV3cG9ydENsaXAoKSkKLSAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChzbmFw
cGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLmNs
aXAoc25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgY3VycmVudFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKSk7CiAKICAgICAvLyBDb252ZXJ0IGZyb20gY29udGFp
bmVyIG9mZnNldHMgKGh0bWwgcmVuZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRyYW5zZm9ybSAoc3Zn
IHJlbmRlcmVycykuCiAgICAgLy8gVHJhbnNmb3JtIGZyb20gb3VyIHBhaW50IGNvbnRhaW5lcidz
IGNvb3JkaW5hdGUgc3lzdGVtIHRvIG91ciBsb2NhbCBjb29yZHMuCiAgICAgSW50UG9pbnQgYWRq
dXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCk7CiAgICAgY2hp
bGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlvbihh
ZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpICogbG9jYWxU
b0JvcmRlckJveFRyYW5zZm9ybSgpKTsKIAotICAgIC8vIFNWR1JlbmRlcmluZ0NvbnRleHQgbXVz
dCBiZSBkZXN0cm95ZWQgYmVmb3JlIHdlIHJlc3RvcmUgdGhlIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQsIGJlY2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKKyAgICAvLyBTVkdSZW5kZXJpbmdDb250ZXh0
IG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB3ZSByZXN0b3JlIHRoZSBjaGlsZFBhaW50SW5mby5j
b250ZXh0KCksIGJlY2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKICAgICAvLyBjaGFuZ2VkIHRoZSBj
b250ZXh0IGFuZCBpdCBpcyBvbmx5IHJldmVydGVkIHdoZW4gdGhlIFNWR1JlbmRlcmluZ0NvbnRl
eHQgZGVzdHJ1Y3RvciBmaW5pc2hlcyBhcHBseWluZyB0aGUgZmlsdGVyLgogICAgIHsKICAgICAg
ICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwpAQCAtMjg1LDcgKzI4NSw3
IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjaGls
ZFBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY2hpbGRQYWludEluZm8uY29udGV4
dCgpLnJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdSb290Ojp3aWxsQmVEZXN0cm95ZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApp
bmRleCBhMTljZGJiNmM1YjE3YzNiN2VlYzg2NmNkNDU1NWFmNjY2NTYwZWIwLi45Nzc1OThlOGM2
ZTY5ZWMzY2MzMWM0NDNiZTg2YzczMjM0MTgyZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtOTIsMTIgKzkyLDEyIEBAIGJvb2wg
UmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBwYXRoKCkuaXNFbXB0
eSgpOwogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LT5maWxsUGF0aChwYXRoKCkp
OworICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFw
ZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5k
ZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ewogICAgIEFTU0VSVChtX3BhdGgpOwogICAgIFBhdGgqIHVzZVBhdGggPSBtX3BhdGguZ2V0KCk7
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tl
KCkpCiAgICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1c2VQYXRoLCBub25T
Y2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCkpOwogCi0gICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqdXNl
UGF0aCk7CisgICAgY29udGV4dC5zdHJva2VQYXRoKCp1c2VQYXRoKTsKIH0KIAogYm9vbCBSZW5k
ZXJTVkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkKQEAgLTIyNSw4ICsyMjUsOSBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpzaG91bGRH
ZW5lcmF0ZU1hcmtlclBvc2l0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc291cmNlcy0+bWFy
a2VyU3RhcnQoKSB8fCByZXNvdXJjZXMtPm1hcmtlck1pZCgpIHx8IHJlc291cmNlcy0+bWFya2Vy
RW5kKCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hh
cGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCYg
b3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmln
aW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZH
UmVzb3VyY2UqIGZpbGxQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQ
YWludGluZ1Jlc291cmNlKCp0aGlzLCBzdHlsZSwgZmFsbGJhY2tDb2xvcikpIHsKICAgICAgICAg
aWYgKGZpbGxQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29u
dGV4dCwgQXBwbHlUb0ZpbGxNb2RlKSkKQEAgLTI0MCw4ICsyNDEsOSBAQCB2b2lkIFJlbmRlclNW
R1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lk
IFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdy
YXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAg
ICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJT
VkdSZXNvdXJjZTo6c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGZhbGxiYWNr
Q29sb3IpKSB7CiAgICAgICAgIGlmIChzdHJva2VQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291
cmNlKCp0aGlzLCBzdHlsZSwgY29udGV4dCwgQXBwbHlUb1N0cm9rZU1vZGUpKQpAQCAtMjU1LDEy
ICsyNTcsMTIgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQg
UmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29u
dGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0LCBmYWxzZSk7CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkgewogICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VU
cmFuc2Zvcm0oKTsKICAgICAgICAgaWYgKCFzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KG5v
blNjYWxpbmdUcmFuc2Zvcm0sIHN0YXRlU2F2ZXIpKQpAQCAtMjc1LDEwICsyNzcsMTAgQEAgdm9p
ZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50
SW5mbykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsr
aSkgewogICAgICAgICBzd2l0Y2ggKHBhaW50T3JkZXIuYXQoaSkpIHsKICAgICAgICAgY2FzZSBQ
YWludFR5cGVGaWxsOgotICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQpOworICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5
cGVTdHJva2U6Ci0gICAgICAgICAgICBzdHJva2VTaGFwZShjaGlsZFBhaW50SW5mby5jb250ZXh0
KTsKKyAgICAgICAgICAgIHN0cm9rZVNoYXBlKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAg
ICAgICAgaWYgKCFtX21hcmtlclBvc2l0aW9ucy5pc0VtcHR5KCkpCkBAIC0yOTAsNyArMjkyLDcg
QEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGls
ZFBhaW50SW5mbykKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCiAgICAgICAgIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCBpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpOwpAQCAtMjk4LDcgKzMwMCw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8uY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9y
bSk7CiAKICAgICBpZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91
bmQpIHsKQEAgLTMwNyw3ICszMDksNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBpZiAocmVuZGVy
aW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgICAg
IGlmIChzdmdTdHlsZS5zaGFwZVJlbmRlcmluZygpID09IFNSX0NSSVNQRURHRVMpCi0gICAgICAg
ICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkQW50
aWFsaWFzKGZhbHNlKTsKIAogICAgICAgICAgICAgZmlsbFN0cm9rZU1hcmtlcnMoY2hpbGRQYWlu
dEluZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmgKaW5kZXggNjExYmZkMTRiOWRkNjQ4YzJmMWQ3MzQyYjhhYmYyOWEyYmVhZWVh
Mi4uMTRjMzFjY2ZjNjA0MzY5ZTg2MGVkYTE3ZjE1NjQ5Yjg3YjZlNmZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNTQsOCArNTQsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92
ZXJyaWRlIGZpbmFsIHsgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVlOyB9CiAgICAgdmly
dHVhbCBib29sIG5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3QgPSAwOwogCiAgICAgYm9v
bCBoYXNQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoLmdldCgpOyB9CkBAIC0xMTQsOSArMTE0
LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbWFya2VyUmVjdChmbG9hdCBzdHJva2VXaWR0
aCkgY29uc3Q7CiAgICAgdm9pZCBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKLSAgICB2b2lk
IGZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCopOwotICAgIHZv
aWQgc3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqKTsKLSAg
ICB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgZmlsbFNoYXBl
KGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBzdHJva2VT
aGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc3Ry
b2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdm9pZCBmaWxsU3Ryb2tlTWFya2VycyhQ
YWludEluZm8mKTsKICAgICB2b2lkIGRyYXdNYXJrZXJzKFBhaW50SW5mbyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA0ZTA4ZjNm
OWFhMjRmZDE4YmQyMmM4YzU5OGJiOWFkOWVlZmQ0OTY5Li45MmI3MWU5YzY0ODUxMDhjZTJjN2Jm
MzQ3NTQwYzg3YTYyZDY1ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkg
Y29ucwogCiB2b2lkIFJlbmRlclNWR1RleHQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VGb3JlZ3JvdW5kCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICAg
cmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGJsb2NrSW5mbyhwYWludEluZm8pOwotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYmxvY2tJbmZvLmNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihibG9ja0luZm8uY29udGV4dCgp
KTsKICAgICBibG9ja0luZm8uYXBwbHlUcmFuc2Zvcm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
KTsKICAgICBSZW5kZXJCbG9jazo6cGFpbnQoYmxvY2tJbmZvLCBMYXlvdXRQb2ludCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCAwMjcwM2QzZGY5NjA2YzhjYmJhZmI5YTVlZDUwMDU4
NmMyMmZkOGQ1Li43ODM3ZWI1MjRlZTI1YzI0YmE4ZmFmMDNkYjBkZjdlY2NmYWI1YTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyOjpkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCkKIHZvaWQgUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJ
bmZvKQogewogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlz
KSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogdm9pZCBSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4IGQxZjRjNWMzZWFmOWYz
YjkxMjhmM2MzYjk5NzMyMzcyMGYzZTZmYjMuLmQ4OWJjZmU2ZTNmNmMwNWQzYjBkYzlmNGZkYjQ3
MmZiOGU0MTUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVGbG93Qm94LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8m
IHBhaW50SW5mbykKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VG
b3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAg
ICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFT
U0VSVCghcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgUGFp
bnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CiAgICAgZm9yIChJbmxpbmVCb3gqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7
CkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6cGFpbnRTZWxlY3Rpb25C
YWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogdm9pZCBTVkdJbmxpbmVGbG93Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBMYXlvdXRVbml0LCBMYXlvdXRVbml0KQogewogICAgIEFTU0VSVChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VT
ZWxlY3Rpb24pOwotICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSk7CisgICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSk7CiAKICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQocmVuZGVyZXIo
KSwgcGFpbnRJbmZvLCBTVkdSZW5kZXJpbmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsK
ICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4
IDgzYjE3NWRmYzU0ODRlYTVlYjE1ZGMyOTYxYjgyYzA2Y2FjYzRlYzguLmVmOGYxOGVlY2VjYWJh
OTE2MjU0YmI3M2YyMTY0MDM3MzJmYTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjIwLDEzICsyMjAsMTMgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBw
YWludEluZm8pCiAgICAgICAgIGlmICghbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRD
b29yZGluYXRlcyhmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBv
c2l0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAg
ICAgICAgIGZyYWdtZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRUcmFuc2Zvcm0p
OwogICAgICAgICBpZiAoIWZyYWdtZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOworICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0p
OwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENv
bG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Zmls
bFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFy
dFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNrZ3JvdW5kQ29sb3Is
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGZy
YWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5kUG9zaXRpb24sICZzdHls
ZSksIGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICBtX3Bh
aW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTI4OCwx
NyArMjg4LDE3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIFNWR1RleHRGcmFn
bWVudCYgZnJhZ21lbnQgPSBtX3RleHRGcmFnbWVudHMuYXQoaSk7CiAgICAgICAgIEFTU0VSVCgh
bV9wYWludGluZ1Jlc291cmNlKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBmcmFn
bWVudC5idWlsZEZyYWdtZW50VHJhbnNmb3JtKGZyYWdtZW50VHJhbnNmb3JtKTsKICAgICAgICAg
aWYgKCFmcmFnbWVudFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+Y29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKIAogICAgICAg
ICAvLyBTcGVjOiBBbGwgdGV4dCBkZWNvcmF0aW9ucyBleGNlcHQgbGluZS10aHJvdWdoIHNob3Vs
ZCBiZSBkcmF3biBiZWZvcmUgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0
aGUgdGV4dCBpcyByZW5kZXJlZCBvbiB0b3Agb2YgdGhlc2UgZGVjb3JhdGlvbnMuCiAgICAgICAg
IGludCBkZWNvcmF0aW9ucyA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAgICAg
ICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQotICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvblVuZGVy
bGluZSwgZnJhZ21lbnQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5j
b250ZXh0KCksIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lLCBmcmFnbWVudCk7CiAgICAgICAgIGlm
IChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpCi0gICAgICAgICAgICBwYWlu
dERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQsIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIGZy
YWdtZW50KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgp
LCBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgYXV0byBwYWlu
dE9yZGVyID0gc3R5bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFpbnRPcmRlcigpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsraSkgewpA
QCAtMzA3LDEzICszMDcsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgICAg
ICAgICBpZiAoIWhhc0ZpbGwpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRmlsbE1vZGUgfCBBcHBs
eVRvVGV4dE1vZGU7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0
LCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNl
bGVjdGVkVGV4dE9ubHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29u
dGV4dCgpLCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBw
YWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBQYWludFR5cGVTdHJva2U6CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxl
U3Ryb2tlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBt
X3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb1N0cm9rZU1vZGUgfCBBcHBseVRvVGV4dE1v
ZGU7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0LCAmc3R5bGUs
IHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4
dE9ubHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAm
c3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVj
dGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQ
YWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzogTGluZS10
aHJvdWdoIHNob3VsZCBiZSBkcmF3biBhZnRlciB0aGUgdGV4dCBpcyBmaWxsZWQgYW5kIHN0cm9r
ZWQ7IHRodXMsIHRoZSBsaW5lLXRocm91Z2ggaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZSB0ZXh0
LgogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQot
ICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3Jh
dGlvbkxpbmVUaHJvdWdoLCBmcmFnbWVudCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24o
cGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQp
OwogCiAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRGVmYXVsdE1vZGU7
CiAgICAgfQpAQCAtMzc5LDE0ICszNzksMTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZWxl
YXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdAogCiBi
b29sIFNWR0lubGluZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRp
bmcoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgVGV4dFJ1
biYgdGV4dFJ1biwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIGJvb2wgYWNxdWlyZWRSZXNv
dXJjZSA9IGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHBh
cmVudCgpLT5yZW5kZXJlcigpLCBzdHlsZSk7Ci0gICAgaWYgKCFhY3F1aXJlZFJlc291cmNlKQor
ICAgIGlmICghYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgc2NhbGluZ0ZhY3Rvciwg
cGFyZW50KCktPnJlbmRlcmVyKCksIHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgRU5BQkxFKFNWR19GT05UUykKICAgICAvLyBTVkcgRm9udHMgbmVlZCBhY2Nlc3MgdG8gdGhl
IHBhaW50aW5nIHJlc291cmNlIHVzZWQgdG8gZHJhdyB0aGUgY3VycmVudCB0ZXh0IGNodW5rLgot
ICAgIFRleHRSdW46OlJlbmRlcmluZ0NvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQgPSB0ZXh0UnVu
LnJlbmRlcmluZ0NvbnRleHQoKTsKLSAgICBpZiAocmVuZGVyaW5nQ29udGV4dCkKKyAgICBpZiAo
YXV0byogcmVuZGVyaW5nQ29udGV4dCA9IHRleHRSdW4ucmVuZGVyaW5nQ29udGV4dCgpKQogICAg
ICAgICBzdGF0aWNfY2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0Nv
bnRleHQpLT5zZXRBY3RpdmVQYWludGluZ1Jlc291cmNlKG1fcGFpbnRpbmdSZXNvdXJjZSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0ZXh0UnVuKTsKQEAgLTQ5OSw3ICs0OTcsNyBAQCBzdGF0
aWMgaW5saW5lIFJlbmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4
dERlY29yYXRpb24oSW5saW5lRgogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAKLXZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
VGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVu
dCkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdt
ZW50JiBmcmFnbWVudCkKIHsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCkgPT0gVGV4dERlY29yYXRpb25Ob25lKQogICAgICAgICByZXR1cm47CkBA
IC01MjcsNyArNTI1LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbgogICAgIH0KIH0KIAotdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJh
Z21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVy
KQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJl
bmRlcmVyKQogewogICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsKICAgICBBU1NFUlQo
bV9wYWludGluZ1Jlc291cmNlTW9kZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUpOwpAQCAtNTQ5LDEx
ICs1NDcsMTEgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5
bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBmbG9hdCB3aWR0aCA9IGZy
YWdtZW50LndpZHRoOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9
IHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKICAgICAg
ICAgd2lkdGggKj0gc2NhbGluZ0ZhY3RvcjsKICAgICAgICAgZGVjb3JhdGlvbk9yaWdpbi5zY2Fs
ZShzY2FsaW5nRmFjdG9yLCBzY2FsaW5nRmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGluZ0ZhY3RvciwgMSAvIHNjYWxpbmdG
YWN0b3IpKTsKICAgICB9CiAKICAgICBkZWNvcmF0aW9uT3JpZ2luLm1vdmUoMCwgLXNjYWxlZEZv
bnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKyBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oZGVj
b3JhdGlvbiwgc2NhbGVkRm9udE1ldHJpY3MsIHRoaWNrbmVzcykpOwpAQCAtNTYxLDExICs1NTks
MTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5h
ZGRSZWN0KEZsb2F0UmVjdChkZWNvcmF0aW9uT3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHRoaWNr
bmVzcykpKTsKIAotICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBzY2Fs
aW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5bGUpKQotICAgICAg
ICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCAmcGF0aCk7CisgICAgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0UHRyID0gJmNvbnRleHQ7CisgICAgaWYgKGFjcXVpcmVQYWludGluZ1Jl
c291cmNlKGNvbnRleHRQdHIsIHNjYWxpbmdGYWN0b3IsIGRlY29yYXRpb25SZW5kZXJlciwgJmRl
Y29yYXRpb25TdHlsZSkpCisgICAgICAgIHJlbGVhc2VQYWludGluZ1Jlc291cmNlKGNvbnRleHRQ
dHIsICZwYXRoKTsKIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hh
ZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgVGV4dFJ1
biYgdGV4dFJ1biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgaW50IHN0YXJ0UG9z
aXRpb24sIGludCBlbmRQb3NpdGlvbikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUs
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBz
dGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pCiB7CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3Rv
ciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9y
KTsKQEAgLTU4MywyNCArNTgyLDI1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsCiAKICAgICBG
bG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2lu
LnkoKSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUp
OwogCisgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OwogICAgIGRv
IHsKLSAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKGNv
bnRleHQsIHNjYWxpbmdGYWN0b3IsIHRleHRSdW4sIHN0eWxlKSkKKyAgICAgICAgaWYgKCFwcmVw
YXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKHVzZWRDb250ZXh0LCBzY2FsaW5nRmFj
dG9yLCB0ZXh0UnVuLCBzdHlsZSkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICB7Ci0g
ICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKmNvbnRleHQsIHNoYWRvdywg
c2hhZG93UmVjdCk7CisgICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKnVz
ZWRDb250ZXh0LCBzaGFkb3csIHNoYWRvd1JlY3QpOwogCiAgICAgICAgICAgICBpZiAoIXNoYWRv
d0FwcGxpZXIuZGlkU2F2ZUNvbnRleHQoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZl
KCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0
b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgdXNlZENvbnRleHQtPnNh
dmUoKTsKKyAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxp
bmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAKLSAgICAgICAgICAgIHNjYWxlZEZvbnQu
ZHJhd1RleHQoY29udGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiArIHNoYWRvd0FwcGxpZXIuZXh0
cmFPZmZzZXQoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworICAgICAgICAgICAgc2Nh
bGVkRm9udC5kcmF3VGV4dCgqdXNlZENvbnRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4gKyBzaGFk
b3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKIAog
ICAgICAgICAgICAgaWYgKCFzaGFkb3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0KCkpCi0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICAgICAgICAgIHVzZWRDb250ZXh0
LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN0b3JlR3JhcGhpY3NDb250ZXh0
QWZ0ZXJUZXh0UGFpbnRpbmcoY29udGV4dCwgdGV4dFJ1bik7CisgICAgICAgIHJlc3RvcmVHcmFw
aGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyh1c2VkQ29udGV4dCwgdGV4dFJ1bik7CiAKICAg
ICAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYwOSw3ICs2MDksNyBA
QCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuZGVyU3R5bAogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiB9CiAKLXZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0
aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0
aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKIHsKICAgICBBU1NFUlQoc3R5bGUpOwog
ICAgIEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IDIzYzA3NjlmZTlmYTc3NjI4YmVkMDFlYTNj
YjBjNzllNWFhY2ZiNjguLjE3ZWNlZjNhY2E5NDVmNzFiMmU1ZmM4NDZhOTMxNWQyZmZjYTExM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5o
CkBAIC03NywxMCArNzcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHByZXBhcmVHcmFwaGljc0Nv
bnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0IHNjYWxpbmdGYWN0
b3IsIFRleHRSdW4mLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVzdG9yZUdyYXBoaWNzQ29u
dGV4dEFmdGVyVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBUZXh0UnVuJik7CiAKLSAg
ICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBUZXh0RGVjb3JhdGlvbiwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7Ci0gICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5
bGUoR3JhcGhpY3NDb250ZXh0KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgIHZvaWQg
cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0
UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQ
b3NpdGlvbik7Ci0gICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5
bGUqLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYs
IGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CisgICAgdm9p
ZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgVGV4dERlY29yYXRpb24sIGNvbnN0
IFNWR1RleHRGcmFnbWVudCYpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdy
YXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50
VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYs
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRp
b24pOworICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwg
UmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29s
IGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDIxMmEx
NjZlYzBjZjIwNzZmYmM3M2IxMTM0YWU4YmJiZDY2MzczZjAuLmZiOWEwM2M1OTVlNjM2MDY5NmFl
MWIzZmQ1ZmIyMTRjZjM2NGYwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTYsMTkgKzU2LDIwIEBAIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6On5TVkdSZW5kZXJpbmdDb250ZXh0KCkKIAogICAgIGlmIChtX3JlbmRl
cmluZ0ZsYWdzICYgRW5kRmlsdGVyTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKG1fZmlsdGVyKTsK
LSAgICAgICAgbV9maWx0ZXItPnBvc3RBcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBtX3BhaW50
SW5mby0+Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAwKTsKLSAgICAgICAgbV9wYWlu
dEluZm8tPmNvbnRleHQgPSBtX3NhdmVkQ29udGV4dDsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgIG1fZmlsdGVy
LT5wb3N0QXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1
bHRNb2RlLCAwLCAwKTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKm1fc2F2ZWRD
b250ZXh0KTsKICAgICAgICAgbV9wYWludEluZm8tPnJlY3QgPSBtX3NhdmVkUGFpbnRSZWN0Owog
ICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kT3BhY2l0eUxheWVyKQotICAg
ICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAg
ICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAg
aWYgKG1fcmVuZGVyaW5nRmxhZ3MgJiBFbmRTaGFkb3dMYXllcikKLSAgICAgICAgbV9wYWludElu
Zm8tPmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAgIGlmIChtX3JlbmRlcmlu
Z0ZsYWdzICYgUmVzdG9yZUdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5yZXN0b3Jl
KCk7CiB9CiAKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29u
dGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpbnRJbmZvJiBwYWludEluZm8sIE5lZWRz
R3JhcGhpY3NDb250ZXh0U2F2ZSBuZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUpCkBAIC04NSw3ICs4
Niw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAKICAgICAvLyBXZSBuZWVkIHRvIHNhdmUg
LyByZXN0b3JlIHRoZSBjb250ZXh0IGV2ZW4gaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4K
ICAgICBpZiAobmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID09IFNhdmVHcmFwaGljc0NvbnRleHQp
IHsKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgbV9wYWlu
dEluZm8tPmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gUmVz
dG9yZUdyYXBoaWNzQ29udGV4dDsKICAgICB9CiAKQEAgLTExMSwyNCArMTEyLDI0IEBAIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgUGFpCiAKICAgICBpZiAob3BhY2l0eSA8IDEgfHwgc2hhZG93IHx8IGhh
c0JsZW5kTW9kZSB8fCBpc29sYXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewog
ICAgICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBtX3JlbmRlcmVyLT5yZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpOwotICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcChy
ZXBhaW50UmVjdCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcChyZXBhaW50
UmVjdCk7CiAKICAgICAgICAgaWYgKG9wYWNpdHkgPCAxIHx8IGhhc0JsZW5kTW9kZSB8fCBpc29s
YXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewogCiAgICAgICAgICAgICBpZiAo
aGFzQmxlbmRNb2RlKQotICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlv
bigpLCBzdHlsZS5ibGVuZE1vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQoKS5jb21w
b3NpdGVPcGVyYXRpb24oKSwgc3R5bGUuYmxlbmRNb2RlKCkpOwogCi0gICAgICAgICAgICBtX3Bh
aW50SW5mby0+Y29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAg
ICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFj
aXR5KTsKIAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBt
X3BhaW50SW5mby0+Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5j
b250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAg
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3Bh
aW50SW5mby0+Y29udGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwp
OwogCiAgICAgICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZE9wYWNpdHlMYXllcjsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChzaGFkb3cpIHsKLSAgICAgICAgICAgIG1fcGFpbnRJbmZv
LT5jb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwgcm91
bmRUb0ludChzaGFkb3ctPnkoKSkpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+
YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250
ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngoKSksIHJvdW5kVG9J
bnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBzdHls
ZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBF
bmRTaGFkb3dMYXllcjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lk
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIFBhaQogICAgICAgICAgICAgcmVmZXJlbmNlQm94LnNldEhlaWdodCh2
aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlZmVy
ZW5jZUJveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7Ci0gICAgICAgIG1fcGFpbnRJ
bmZvLT5jb250ZXh0LT5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZl
cmVuY2VCb3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQoKS5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VC
b3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpKTsKICAgICB9CiAKICAgICBhdXRvKiByZXNvdXJjZXMg
PSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIoKm1fcmVuZGVy
ZXIpOwpAQCAtMTYxLDI2ICsxNjIsMzUgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVw
YXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkKIAogICAg
IGlmICghaXNSZW5kZXJpbmdNYXNrKSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlciogbWFza2VyID0gcmVzb3VyY2VzLT5tYXNrZXIoKSkgewotICAgICAgICAgICAgaWYgKCFt
YXNrZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBtX3BhaW50SW5mby0+Y29u
dGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlKSkKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dFB0ciA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOworICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtYXNrZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0
UHRyLCBBcHBseVRvRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENv
bnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyKiBjbGlwcGVyID0gcmVzb3VyY2VzLT5jbGlwcGVyKCk7CiAgICAgaWYgKCFjbGlwUGF0
aE9wZXJhdGlvbiAmJiBjbGlwcGVyKSB7Ci0gICAgICAgIGlmICghY2xpcHBlci0+YXBwbHlSZXNv
dXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVm
YXVsdE1vZGUpKQorICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWlu
dEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBjbGlwcGVyLT5hcHBseVJl
c291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2Rl
KTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAgICAg
ICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWlz
UmVuZGVyaW5nTWFzaykgewogICAgICAgICBtX2ZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCk7
CiAgICAgICAgIGlmIChtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSBt
X3BhaW50SW5mby0+Y29udGV4dDsKKyAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0gJm1fcGFp
bnRJbmZvLT5jb250ZXh0KCk7CiAgICAgICAgICAgICBtX3NhdmVkUGFpbnRSZWN0ID0gbV9wYWlu
dEluZm8tPnJlY3Q7CiAgICAgICAgICAgICAvLyBSZXR1cm4gd2l0aCBmYWxzZSBoZXJlIG1heSBt
ZWFuIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkcmF3IHRoZSBjb250ZW50CiAgICAgICAgICAgICAv
LyAoYmVjYXVzZSBpdCB3YXMgZWl0aGVyIGRyYXduIGJlZm9yZSBvciBlbXB0eSkgYnV0IHdlIHN0
aWxsIG5lZWQgdG8gYXBwbHkgdGhlIGZpbHRlci4KICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxh
Z3MgfD0gRW5kRmlsdGVyTGF5ZXI7Ci0gICAgICAgICAgICBpZiAoIW1fZmlsdGVyLT5hcHBseVJl
c291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9E
ZWZhdWx0TW9kZSkpCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAm
bV9wYWludEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9maWx0
ZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0UHRyLCBBcHBseVRv
RGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRl
eHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBjYWNoaW5nIHRoZSByZXN1bHRpbmcgYml0
bWFwIGFuZCBkbyBub3QgaW52YWxpZGF0ZSBpdCBvbiByZXBhaW50IHJlY3QKQEAgLTI1NCw5ICsy
NjQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UgogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKS50cmFuc2xhdGUoLXBhaW50UmVjdC5s
b2NhdGlvbigpKS5tdWx0aXBseShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHQqIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJU
KGltYWdlQ29udGV4dCk7Ci0gICAgaW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odHJhbnNmb3JtKTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCk7CisgICAgaW1hZ2VDb250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogCiAgICAgcmV0dXJu
IGltYWdlQnVmZmVyOwogfQpAQCAtMjc0LDExICsyODMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFIKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dCogaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQo
KTsKLSAgICBBU1NFUlQoaW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdl
Q29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAvLyBDb21wZW5zYXRlIHJv
dW5kaW5nIGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9h
dGluZy1wb2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4K
LSAgICBpbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkg
LyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0
LmhlaWdodCgpKSk7CisgICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRT
aXplLndpZHRoKCkgLyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkg
LyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CkBA
IC0yODYsNyArMjk0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKIHZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdl
LCBSZW5kZXJFbGVtZW50JiBpdGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1YnRyZWVDb250
ZW50VHJhbnNmb3JtYXRpb24pCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKLSAgICBBU1NFUlQoaW1h
Z2UtPmNvbnRleHQoKSk7CiAKICAgICBQYWludEluZm8gaW5mbyhpbWFnZS0+Y29udGV4dCgpLCBM
YXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIFBhaW50QmVo
YXZpb3JOb3JtYWwpOwogCkBAIC0zMDAsMTggKzMwNywxNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVu
ZGVyRQogICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0
aW9uOwogfQogCi12b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKK3ZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBi
b29sIHNhZmVUb0NsZWFyKQogewotICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoaW1h
Z2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0
ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAv
LyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGlu
YXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28g
dGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRl
IGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKLSAgICBjb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKLSAgICBjb250ZXh0LT5jb25j
YXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRl
VHJhbnNmb3JtLmludmVyc2UoKSk7CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKKyAgICBjb250ZXh0LmNvbmNhdENU
TShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBXaGVuIG5lc3RpbmcgcmVzb3VyY2VzLCB3
aXRoIG9iamVjdEJvdW5kaW5nQm94IGFzIGNvbnRlbnQgdW5pdCB0eXBlcywgdGhlcmUncyBubyB1
c2UgaW4gY2FjaGluZyB0aGUKICAgICAvLyByZXN1bHRpbmcgaW1hZ2UgYnVmZmVyIGFzIHRoZSBw
YXJlbnQgcmVzb3VyY2UgYWxyZWFkeSBjYWNoZXMgdGhlIHJlc3VsdC4KQEAgLTMzNSw3ICszNDEs
NyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gSW52YWxpZGF0ZSBhbiBleGlz
dGluZyBidWZmZXIgaWYgdGhlIHNjYWxlIGlzIG5vdCBjb3JyZWN0LgogICAgIGlmIChpbWFnZUJ1
ZmZlcikgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8t
PmNvbnRleHQtPmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNl
U2NhbGUpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8t
PmNvbnRleHQoKS5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmlj
ZVNjYWxlKTsKICAgICAgICAgSW50U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5kZWRJ
bnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJhbnNm
b3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94
LmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogICAgICAgICBpZiAoYnVmZmVyU2l6
ZSAhPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkpCkBAIC0zNDQsMTcgKzM1MCwxNyBAQCBi
b29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQg
cGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0g
ICAgICAgIGlmICgoaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkp
KSB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4
dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgICAgICBidWZmZXJlZFJlbmRlcmlu
Z0NvbnRleHQtPnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsK
KyAgICAgICAgaWYgKChpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1
ZSkpKSB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlcmVkUmVuZGVyaW5nQ29u
dGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRl
cmluZ0NvbnRleHQudHJhbnNsYXRlKC1ib3VuZGluZ0JveC54KCksIC1ib3VuZGluZ0JveC55KCkp
OwogICAgICAgICAgICAgUGFpbnRJbmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWludEluZm8pOwotICAg
ICAgICAgICAgYnVmZmVyZWRJbmZvLmNvbnRleHQgPSBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7
CisgICAgICAgICAgICBidWZmZXJlZEluZm8uc2V0Q29udGV4dChidWZmZXJlZFJlbmRlcmluZ0Nv
bnRleHQpOwogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRlcmVy
KS5wYWludEZvcmVncm91bmQoYnVmZmVyZWRJbmZvKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWludEluZm8tPmNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91
bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOWEyM2MyNTEyM2I4N2VjMjljZmRhMGNlYzdlYzI0
NTY1OTg0M2Q4YS4uNDYzODRjNDhlYTBmOGFlNGE4OGI2NWMxMjdlMThkY2YxZmMzY2ZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSk7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBzdGF0
aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKKyAgICBz
dGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAog
ICAgIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29u
c3QgUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVU
cmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmpl
Y3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElu
bGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guY3BwCmluZGV4IGQxYTc4Mzg5YTE1NjRjNDRhZTEyNmQ0ZDFlYWExZTA2NDk3ZWNiYjMuLjhi
ODAxNGI2MDEzZmZjYmMwYmQwMDQ2MzFhODNkNTA2ZWYwOGM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAtNDksNyArNDks
NyBAQCBSZW5kZXJTVkdUZXh0JiBTVkdSb290SW5saW5lQm94OjpyZW5kZXJTVkdUZXh0KCkKIHZv
aWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkKIHsKICAgICBB
U1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5j
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRl
eHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgYm9vbCBpc1ByaW50aW5nID0gcmVuZGVy
U1ZHVGV4dCgpLmRvY3VtZW50KCkucHJpbnRpbmcoKTsKICAgICBib29sIGhhc1NlbGVjdGlvbiA9
ICFpc1ByaW50aW5nICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZDNmMjg1NTdlMDYyNzM4NmQwNWNi
ZjNlYzBmNmY5N2Y1NTY3ZTVhLi5mZDY5ZmE0ODkyOTViMDJkYjAwY2JmNWRiZTM3MDI1YzYxYzgw
NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjYyLDEzICsyNjIsMTMgQEAgc3RkOjp1
bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUdseXBoVG8KICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdHbHlwaFRv
UGF0aFRyYW5zbGF0b3I+KHRleHRSdW4sIGdseXBoQnVmZmVyLCBwb2ludCwgKnN2Z0ZvbnREYXRh
LCAqZm9udEVsZW1lbnQsIGZyb20sIG51bUdseXBocywgc2NhbGUsIGlzVmVydGljYWxUZXh0KTsK
IH0KIAotdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
JiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KSBjb25zdAordm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0ds
eXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGF1dG8gYWN0aXZlUGFpbnRpbmdSZXNvdXJj
ZSA9IHRoaXMtPmFjdGl2ZVBhaW50aW5nUmVzb3VyY2UoKTsKICAgICBpZiAoIWFjdGl2ZVBhaW50
aW5nUmVzb3VyY2UpIHsKICAgICAgICAgLy8gVE9ETzogV2UncmUgb25seSBzdXBwb3J0aW5nIHNp
bXBsZSBmaWxsZWQgSFRNTCB0ZXh0IHNvIGZhci4KICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yKiBzb2xpZFBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hh
cmVkU29saWRQYWludGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIHNvbGlkUGFpbnRpbmdSZXNvdXJj
ZS0+c2V0Q29sb3IoY29udGV4dC0+ZmlsbENvbG9yKCkpOworICAgICAgICBzb2xpZFBhaW50aW5n
UmVzb3VyY2UtPnNldENvbG9yKGNvbnRleHQuZmlsbENvbG9yKCkpOwogICAgICAgICBhY3RpdmVQ
YWludGluZ1Jlc291cmNlID0gc29saWRQYWludGluZ1Jlc291cmNlOwogICAgIH0KIApAQCAtMjc3
LDE1ICsyNzcsMTYgQEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKIAogICAgIEFTU0VSVChhY3Rp
dmVQYWludGluZ1Jlc291cmNlKTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlTW9kZSByZXNvdXJj
ZU1vZGUgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFw
cGx5VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOwotICAgIGZvciAoYXV0byB0cmFuc2xh
dG9yID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKCpmb250LCBudWxscHRyLCBnbHlwaEJ1
ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7IHRyYW5zbGF0b3ItPmNvbnRhaW5zTW9yZVBh
dGhzKCk7IHRyYW5zbGF0b3ItPmFkdmFuY2UoKSkgeworICAgIEdyYXBoaWNzQ29udGV4dCogdXNl
ZENvbnRleHQgPSAmY29udGV4dDsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3VyY2VN
b2RlID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5
VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOworICAgIGZvciAoYXV0byB0cmFuc2xhdG9y
ID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGZvbnQsIG51bGxwdHIsIGdseXBoQnVmZmVy
LCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsgdHJhbnNsYXRvci0+Y29udGFpbnNNb3JlUGF0aHMo
KTsgdHJhbnNsYXRvci0+YWR2YW5jZSgpKSB7CiAgICAgICAgIFBhdGggZ2x5cGhQYXRoID0gdHJh
bnNsYXRvci0+cGF0aCgpOwotICAgICAgICBpZiAoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+YXBw
bHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0LCByZXNvdXJjZU1vZGUp
KSB7Ci0gICAgICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LT5zdHJva2VU
aGlja25lc3MoKTsKKyAgICAgICAgaWYgKGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPmFwcGx5UmVz
b3VyY2UoZWxlbWVudFJlbmRlcmVyLCBzdHlsZSwgdXNlZENvbnRleHQsIHJlc291cmNlTW9kZSkp
IHsKKyAgICAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhp
Y2tuZXNzKCk7CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVy
ZXIoKSkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9r
ZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpLnNj
YWxpbmdGYWN0b3IoKSk7Ci0gICAgICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlLT5wb3N0
QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIGNvbnRleHQsIHJlc291cmNlTW9kZSwgJmds
eXBoUGF0aCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25l
c3Moc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRl
eHQ+KHJlbmRlcmVyKCkpLnNjYWxpbmdGYWN0b3IoKSk7CisgICAgICAgICAgICBhY3RpdmVQYWlu
dGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHVzZWRDb250
ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOworICAgICAgICAgICAgdXNl
ZENvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDUwMWI5YzhmZjEwNTI0YTQ5OGE2ZmU3
NzdjYjY5OTk3NzQxZWRjMDQuLjlkODVmYmU3YmFhOWVkNDk3NTE4MjY4NmJlM2IxZTkxN2EwNjQ5
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QWN0aXZlUGFpbnRpbmdSZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJjZSogb2JqZWN0KSB7
IG1fYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IG9iamVjdDsgfQogCiAgICAgdmlydHVhbCBHbHlw
aERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgV2lkdGhJdGVy
YXRvciYsIFVDaGFyMzIgY2hhcmFjdGVyLCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0
ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoLCBTdHJpbmcmIG5vcm1hbGl6ZWRTcGFjZXNTdHJp
bmdDYWNoZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdTVkdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGlu
dCB0bywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGZsb2F0IGZsb2F0V2lkdGhVc2luZ1NWR0ZvbnQoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVkLCBTdHJpbmcmIGds
eXBoTmFtZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHS2Vybmlu
Zyhjb25zdCBGb250KiwgV2lkdGhJdGVyYXRvciYsIEdseXBoQnVmZmVyKiwgaW50IGZyb20pIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCA5NjFlMTk4OWU1NzJiYmI3MmE2ZTNlZTliYWEyNDA4YTFlNjU4NGI4Li4wODE1
M2MxYTkzZmEzNmYyNWUzMDY5Njk2MTg3NTMxZmJhMGM1OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBJbnRTaXplIFNWR0lt
YWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgzMDAsIDE1MCk7
CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LAordm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9h
dCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtMTg0LDE0
ICsxODQsMTQgQEAgUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFp
bmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAordm9pZCBTVkdJ
bWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJl
Y3Quc2NhbGUoem9vbSk7CiAKICAgICAvLyBUaGUgSW1hZ2VCdWZmZXIgc2l6ZSBuZWVkcyB0byBi
ZSBzY2FsZWQgdG8gbWF0Y2ggdGhlIGZpbmFsIHJlc29sdXRpb24uCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIEZsb2F0U2l6ZSBpbWFnZUJ1ZmZlclNj
YWxlID0gRmxvYXRTaXplKHRyYW5zZm9ybS54U2NhbGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsK
ICAgICBBU1NFUlQoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpKTsKICAgICBBU1NFUlQoaW1hZ2VC
dWZmZXJTY2FsZS5oZWlnaHQoKSk7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFNpemUKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4K
ICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCks
IGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVj
dCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsKTsKLSAgICBpZiAoY29udGV4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkKKyAgICBpZiAoY29u
dGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSwgVW5zY2FsZWQpOwpAQCAtMjE3LDExICsyMTcsMTEgQEAg
dm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBBZmZpbmVUcmFuc2Zvcm0gdW5zY2FsZWRQYXR0
ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5z
Zm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJT
Y2FsZS5oZWlnaHQoKSk7CiAKLSAgICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CisgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAgICAgaW1hZ2Ut
PmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUp
OwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOSwxNSArMjI5LDE1IEBAIHZvaWQg
U1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAg
ICAgQVNTRVJUKHZpZXcpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KGRz
dFJlY3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSk7CisgICAgY29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwogCi0g
ICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LT5hbHBoYSgpOworICAgIGZsb2F0IGFscGhhID0gY29u
dGV4dC5hbHBoYSgpOwogICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxh
eWVyID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0g
QmxlbmRNb2RlTm9ybWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJl
c1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoYWxwaGEpOwotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgY29udGV4dC5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICB9CiAK
ICAgICBGbG9hdFNpemUgc2NhbGUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBk
c3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CkBAIC0yNDcsOCArMjQ3LDggQEAg
dm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICBGbG9hdFNpemUgdG9wTGVmdE9mZnNldChzcmNS
ZWN0LmxvY2F0aW9uKCkueCgpICogc2NhbGUud2lkdGgoKSwgc3JjUmVjdC5sb2NhdGlvbigpLnko
KSAqIHNjYWxlLmhlaWdodCgpKTsKICAgICBGbG9hdFBvaW50IGRlc3RPZmZzZXQgPSBkc3RSZWN0
LmxvY2F0aW9uKCkgLSB0b3BMZWZ0T2Zmc2V0OwogCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRl
c3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7Ci0gICAgY29udGV4dC0+c2NhbGUoc2NhbGUp
OworICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7
CisgICAgY29udGV4dC5zY2FsZShzY2FsZSk7CiAKICAgICB2aWV3LT5yZXNpemUoY29udGFpbmVy
U2l6ZSgpKTsKIApAQCAtMjU4LDEwICsyNTgsMTAgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwK
ICAgICBpZiAodmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAK
LSAgICB2aWV3LT5wYWludChjb250ZXh0LCBpbnRlcnNlY3Rpb24oY29udGV4dC0+Y2xpcEJvdW5k
cygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CisgICAgdmlldy0+cGFpbnQoY29udGV4
dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNy
Y1JlY3QpKSk7CiAKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA2ZGY1YTFhNGU4ZTJi
NTQ0NDIxNWI3NzVlMTQ1MDBmNWNiZmE0NzA0Li5mYWU4ZDBjODNlOTI0YTY3NGYwMTEyMTZiODJl
NWViM2JmMjA0MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAt
OTEsOSArOTEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU1ZHSW1hZ2Uo
SW1hZ2VPYnNlcnZlciYsIGNvbnN0IFVSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9h
dCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFj
ZSwKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCog
cm9vdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDEwNTM1NDgxODcyOWY3ODU4NGZmYTM3
ZWViYTViMTMwMTEwZTY1OTguLjE5YzQ3MWIyYzg5MjQwYzM1ZGNmNmVkOWJmNjE2ZTM4ZjYxNTY3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6
ZShzY2FsZWRDb250YWluZXJTaXplKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
Cit2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAg
IG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pv
b20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwogfQogCi12b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewogICAgIG1faW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4
IGE0ZWVhYTlmNzYzYjZmM2U2MGMwZjNjMWE5NzA2M2UzYmFiMDJiMjAuLjk3Njk1ZmRhOGY2Yjll
YzBkYzdiODk5ZjIwOTVkOWZhMDM1MTYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2lj
V2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAKaW5kZXggMTU2NzQ0MzIyYjg0ODhiZjM4ZWE0YzNlZGNlYjA2MjhiYmU1MzgwMy4uZjA3
MjUxOGY0NDE3NTExYzc5MTM5MGU5OTYyN2Y1YjVkMTdlNDhiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAo
cmVuZGVyZXIpIHsKICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJlc3VsdEltYWdl
LT5jb250ZXh0KCktPmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgICAgIHJlc3Vs
dEltYWdlLT5jb250ZXh0KCkuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgICAg
ICBTVkdFbGVtZW50KiBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVy
LT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3Ro
cygpKSB7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICAgICAgLy8gSWYgd2UncmUgcmVmZXJlbmNpbmcgYW4gZWxlbWVudCB3
aXRoIHBlcmNlbnRhZ2UgdW5pdHMsIGVnLiA8cmVjdCB3aXRoPSIzMCUiPiB0aG9zZSB2YWx1ZXMg
d2VyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSB2aWV3cG9ydC4KICAgICAgICAgICAgIC8vIEJ1aWxk
IHVwIGEgdHJhbnNmb3JtYXRpb24gdGhhdCBtYXBzIGZyb20gdGhlIHZpZXdwb3J0IHNwYWNlIHRv
IHRoZSBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4KICAgICAgICAgICAgIGlmIChsZW5ndGhD
b250ZXh0LmRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSkpCi0gICAgICAgICAgICAgICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+Y29uY2F0Q1RNKG1ha2VNYXBCZXR3ZWVuUmVjdHMoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXplKSwgZGVzdFJlY3QpKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShtYWtlTWFwQmV0d2VlblJl
Y3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIGRlc3RSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVudFRyYW5zZm9ybWF0aW9u
OwpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkt
PmRyYXdJbWFnZShtX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UobV9pbWFnZS5n
ZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lk
IEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW0KaW5kZXggNTEyYWY0MTk0Y2IyNTEzODE4ZDkxMTIzNDkxZjZkMjBlNDhhZjhi
NC4uMDAyNWFlMjkzMDIxN2EyYWU2NjJmZjA0ZDZhMGI2NGM5YjRiZGRhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDIsNyArMTAy
LDcgQEAgLSAodm9pZClfd2ViX2RyYXdBdFBvaW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9u
dCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JV
c2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3Jl
ZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICog
MjU1LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCi0gICAgICAgIHdlYkNv
cmVGb250LmRyYXdUZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54
LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKKyAgICAgICAgd2ViQ29y
ZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwg
KGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAKICAgICAgICAgaWYgKCFm
bGlwcGVkKQogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCmluZGV4IDEyNzgwMjBiODVjNThiMmViM2E4NzhjM2IwM2IzMWQzZmU5
ZmQzZGEuLmNmY2NkM2NkNjQ5MjY1MjE5NzZjNmJmMTg1NmI2ZThmYjQ1M2RkMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tCkBAIC00ODIsNyArNDgyLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAg
ICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZp
b3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVj
dGlvbk9ubHkpOwogCi0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtdG9GbG9hdFNp
emUocmVjdC5sb2NhdGlvbigpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10
b0Zsb2F0U2l6ZShyZWN0LmxvY2F0aW9uKCkpKTsKICAgICBmcmFtZVZpZXctPnBhaW50Q29udGVu
dHMoYnVmZmVyLT5jb250ZXh0KCksIHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKIAogICAgIGZyYW1l
Vmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDQxZDAwODE2MzM3MDI3NGQxZjU1
YzU5YTY1NzA4NmNmOTU0YmZiYzQuLjBiMzIxMjA3YzMyM2U0ZGEwMDkzMGU5YzgwNGUwZDIzOGE5
NGNkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjQ0LDkgKzY0
NCw5IEBAIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wp
Y29udGVudHNPbmx5CiAgICAgfQogICAgIAogICAgIGlmIChjb250ZW50c09ubHkpCi0gICAgICAg
IHZpZXctPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOwor
ICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVj
dCkpOwogICAgIGVsc2UKLSAgICAgICAgdmlldy0+cGFpbnQoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QocmVjdCkpOworICAgICAgICB2aWV3LT5wYWludChjb250ZXh0LCBlbmNsb3NpbmdJbnRS
ZWN0KHJlY3QpKTsKIAogICAgIGlmIChzaG91bGRGbGF0dGVuKQogICAgICAgICB2aWV3LT5zZXRQ
YWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBjNGMzNjE5OWVkOWU5
ZmRjNzY2ZWZlMDg0NTczNzljNzI4NWViMzJlLi4xNmMzYTQ3OWE1MjNlMWJiYzRmYTc3NWVhOTA5
ZGIwOGQxMGMyYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OnBhaW50KCkKICAgICBpZiAobV9wbHVnaW4tPmlzVHJhbnNwYXJl
bnQoKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAot
ICAgIG1fcGx1Z2luLT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0KCksIGRpcnR5UmVjdCk7Cisg
ICAgbV9wbHVnaW4tPnBhaW50KCpncmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7CiAKICAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJveHk6OlVw
ZGF0ZShkaXJ0eVJlY3QpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggMzc4
YmVlNzIyMDQ5NjEwODUyZDYzMTAzOTAzNDgyOTUwMzA1ZTdiNy4uYTZiMmEyODNkZmIyMzc4ZThl
YjQxNmVmNWNlYTIwMjAwZWIwMWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNj
YWxlRmFjdG9yLCBjb25zdCBJCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KGRzdFBvaW50LCBzcmNS
ZWN0LnNpemUoKSk7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3RTY2FsZWQoc3JjUmVjdCk7CiAgICAg
c3JjUmVjdFNjYWxlZC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3RTY2FsZWQsICZjb250ZXh0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5k
cmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxl
ZCwgY29udGV4dCk7CiB9CiAKIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBmNzQyNTU5ZTNlZDBiNWYyNmZiMzAxOTZhMjUxZGRl
NWVjZjI0NjcwLi4zOTFlYWMxYjQyN2EwYjVkYzNmOTU0NGM5YzA5YzNiYmVjODYyZWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE2MSw3
ICsxNjEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1l
VmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogCiAgICAgUGFpbnRCZWhhdmlvciBv
bGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVW
aWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwotICAgIGZyYW1lVmlldy0+cGFp
bnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcmVjdCwgc2hvdWxk
UGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJh
bWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dC5nZXQoKSwg
cmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRl
cyk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwog
CiAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggNTAxOTc3MGE5ZTQ2ZDBlYmY2NWM4NmVi
NGI3NmU0ZjZjMzJkZGQyZS4uNjVmYmU3M2I1ZmY3YmZiYTdlMjAyNDRmOGIyM2MyYTgxYmUyYzc1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcAogICAgIGZyYW1lVmll
dy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBvd25lckRvY3VtZW50LnVw
ZGF0ZUxheW91dCgpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0
KCksIHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBw
YWludFJlY3QpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2
aW9yKTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDk5ZjkxMjcyN2QzNTc2ODMxNjc1MmNh
NTQ3NzZlZGI4ZjQ1M2UzYTUuLjMzYjkxM2E5ZmJkOTY3MzhmYTU4Y2Y3NWQ1MGExNTEyNzRkMGE1
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNzQ0LDcgKzc0NCw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46OmRlc3Ryb3koKQogICAgIG1fdGltZXJzLmNsZWFyKCk7CiB9CiAgICAg
Ci12b2lkIE5ldHNjYXBlUGx1Z2luOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEFT
U0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCkBAIC03NjgsNyArNzY4LDcgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAgICAvLyB3aGljaCB3ZSBj
dXJyZW50bHkgZG9uJ3QgaGF2ZSBpbml0aWF0ZWQgaW4gdGhlIHBsdWctaW4gcHJvY2Vzcy4KICAg
ICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3RvcigpLCBjb250ZW50
c1NjYWxlRmFjdG9yKCkpKTsKIAotICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dC5nZXQoKSwgSW50
UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVlKTsKKyAgICBwbGF0Zm9ybVBhaW50
KCpjb250ZXh0LCBJbnRSZWN0KEludFBvaW50KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOwogCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggZTQ2ODE0YTRh
ODVlMWNhNTQ0NGU5MWMxMjY2NjI0MTgxYTY1NzJiOS4uMjllMjJjOWNlZDY2ZTA3ZWZlOTU1YTVm
MWZmMzg2MGI5NzdiNTllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE3Nyw3ICsxNzcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKICAgICB2b2lkIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKICAgICB2
b2lkIHBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpOwotICAgIHZvaWQgcGxhdGZvcm1QYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0
eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCA9IGZhbHNlKTsKKyAgICB2b2lkIHBsYXRmb3JtUGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlS
ZWN0LCBib29sIGlzU25hcHNob3QgPSBmYWxzZSk7CiAKICAgICBib29sIHBsYXRmb3JtSGFuZGxl
TW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgYm9vbCBwbGF0Zm9ybUhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3Qg
UGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVn
aW5NYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTWFjLm1tCmluZGV4IDg0OGIzMzgyZTAyMGUyYzIyYTQwYWI1Y2M5MjZh
NzBiMmEzMDliZGIuLjZmNzUzMTkxYWY5OGVkYWUyYmYxYjUyNjJmZWI4Mjc0YTgyNGUxNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQpAQCAtNDQ0LDkgKzQ0NCw5IEBA
IHN0YXRpYyBFdmVudE1vZGlmaWVycyBtb2RpZmllcnNGb3JFdmVudChjb25zdCBXZWJFdmVudCYg
ZXZlbnQpCiAKICNlbmRpZgogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlz
U25hcHNob3QpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzU25hcHNob3Qp
CiB7Ci0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpOwogCiAgICAgc3dpdGNoIChtX2V2ZW50TW9kZWwpIHsKICAgICAgICAg
Y2FzZSBOUEV2ZW50TW9kZWxDb2NvYTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKaW5kZXggYWRlZjZjYjM2OTY1ZjgwNDJkMGNjMDJh
YzFmY2RhNDdmYzkxZjA2OC4uNGM1MjU2ZDVhMWNhY2VmMjI5ODVlNTQ2YjgxOTFhMDQxZmE2OThh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5oCkBAIC0xMTUsOCArMTE1LDggQEAgcHJpdmF0ZToKICAgICAvLyBQbHVnaW4gZnVuY3Rp
b25zLgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBkaXJ0eVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3RJbldpbmRvd0Nvb3JkaW5hdGVzKSBv
dmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nu
YXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA2MWNmNGZl
YTgxYTFjODYxNWNmYmZkODIzZjBmYjAwMDg2NDg2YTVlLi4xMTFhMjI1YzcxOTcyY2VjMDVlNmJi
Y2JmZGY1MTI4ZTFjMDRjMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMTExMSw5ICsxMTExLDkgQEAgdm9pZCBQREZQ
bHVnaW46OmRlc3Ryb3koKQogICAgIFttX2NvbnRlbnRMYXllciByZW1vdmVGcm9tU3VwZXJsYXll
cl07CiB9CiAKLXZvaWQgUERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFBERlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRz
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0KQogewotICAgIEFTU0VSVChncmFwaGlj
c0NvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpOworICAgIEFTU0VSVChncmFwaGljc0Nv
bnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSk7CiAKICAgICBpZiAobV9ob3Jpem9udGFsU2Ny
b2xsYmFyKQogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmludmFsaWRhdGUoKTsKQEAg
LTExMzIsNyArMTEzMiw3IEBAIHZvaWQgUERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllcklu
Q29udGV4dChDQUxheWVyICpsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRlCiAgICAgaWYgKGxheWVy
ID09IG1fc2Nyb2xsQ29ybmVyTGF5ZXIpIHsKICAgICAgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJS
ZWN0ID0gdGhpcy0+c2Nyb2xsQ29ybmVyUmVjdCgpOwogICAgICAgICBncmFwaGljc0NvbnRleHQu
dHJhbnNsYXRlKC1zY3JvbGxDb3JuZXJSZWN0LngoKSwgLXNjcm9sbENvcm5lclJlY3QueSgpKTsK
LSAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnBhaW50U2Nyb2xsQ29ybmVyKDAsICZn
cmFwaGljc0NvbnRleHQsIHNjcm9sbENvcm5lclJlY3QpOworICAgICAgICBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKS0+cGFpbnRTY3JvbGxDb3JuZXIobnVsbHB0ciwgZ3JhcGhpY3NDb250ZXh0LCBz
Y3JvbGxDb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTExNDcs
NyArMTE0Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllckluQ29udGV4
dChDQUxheWVyICpsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRlCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKC1zY3JvbGxiYXItPngoKSwgLXNjcm9s
bGJhci0+eSgpKTsKLSAgICBzY3JvbGxiYXItPnBhaW50KCZncmFwaGljc0NvbnRleHQsIHNjcm9s
bGJhci0+ZnJhbWVSZWN0KCkpOworICAgIHNjcm9sbGJhci0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0
LCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKIH0KIAogUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
UERGUGx1Z2luOjpzbmFwc2hvdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW4uY3BwCmluZGV4IGY2ZDFjMDU0NzQ0MmY5M2NiYTc3ZDBjMTE1MDgyNGFmZTViNjEy
ZTQuLjE1NDkzZjg2YTE3MzBiMDcxMzhkNmFmNDI0N2M2NGI0ZDIwOWMxMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uY3BwCkBAIC0xMDMsNyArMTAzLDcg
QEAgdm9pZCBQbHVnaW46OmRlc3Ryb3lQbHVnaW4oKQogICAgIG1fcGx1Z2luQ29udHJvbGxlciA9
IDA7CiB9CiAKLXZvaWQgUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250ZXh0
KikKK3ZvaWQgUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250ZXh0JikKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDEx
Y2YxNDkxMzhmODBhZjQ4M2ZjMDBjMTZlMzI5YmViYzAzZTBhZTguLmYyNzllYmJjZjQ1NzlhOTlk
NjhmMGEzNzdlMjE4Y2E2M2I3YjY4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKQEAgLTEyNiwxMCArMTI2LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRl
bGxzIHRoZSBwbHVnLWluIHRvIHBhaW50IGl0c2VsZiBpbnRvIHRoZSBnaXZlbiBncmFwaGljcyBj
b250ZXh0LiBUaGUgcGFzc2VkLWluIGNvbnRleHQgYW5kCiAgICAgLy8gZGlydHkgcmVjdCBhcmUg
aW4gd2luZG93IGNvb3JkaW5hdGVzLiBUaGUgY29udGV4dCBpcyBzYXZlZC9yZXN0b3JlZCBieSB0
aGUgY2FsbGVyLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZGlydHlSZWN0KSA9IDA7CiAKICAgICAvLyBJbnZhbGlkYXRlIG5hdGl2ZSB0aW50YWJs
ZSBjb250cm9scy4gVGhlIHBhc3NlZC1pbiBjb250ZXh0IGlzIGluIHdpbmRvdyBjb29yZGluYXRl
cy4KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWctaW4g
c3VwcG9ydHMgc25hcHNob3R0aW5nIG9yIG5vdC4KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNT
bmFwc2hvdHRpbmcoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBlN2M1M2Q3OGE2OWM2MGRiODBhODY2NjRl
NzdmNzY3NDMwZDk3MzI5Li42ZDdiNDZkMmM2OGZiYmNjNGI1OWJhNjQyY2M3MWQwM2M4MGVjYzc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFBsdWdpblByb3h5OjpkZXN0cm95KCkKICAg
ICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVBsdWdpblByb3h5KHRoaXMpOwogfQogCi12b2lkIFBsdWdp
blByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KQordm9pZCBQbHVnaW5Qcm94eTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBpZiAo
IW5lZWRzQmFja2luZ1N0b3JlKCkgfHwgIW1fYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBQbHVnaW5Qcm94eTo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmUKICAgICAgICAgbV9w
bHVnaW5CYWNraW5nU3RvcmVDb250YWluc1ZhbGlkRGF0YSA9IHRydWU7CiAgICAgfQogCi0gICAg
bV9iYWNraW5nU3RvcmUtPnBhaW50KCpncmFwaGljc0NvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0
b3IoKSwgZGlydHlSZWN0LmxvY2F0aW9uKCksIGRpcnR5UmVjdCk7CisgICAgbV9iYWNraW5nU3Rv
cmUtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBkaXJ0eVJl
Y3QubG9jYXRpb24oKSwgZGlydHlSZWN0KTsKIAogICAgIGlmIChtX3dhaXRpbmdGb3JQYWludElu
UmVzcG9uc2VUb1VwZGF0ZSkgewogICAgICAgICBtX3dhaXRpbmdGb3JQYWludEluUmVzcG9uc2VU
b1VwZGF0ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaAppbmRleCA5Y2RmYzE5NTI1YWFiOWI2YTMxZDQ1MjZmZDQzNjZjZTJmNzU3
OWMyLi43N2FkNGU2OTA3ZWU0ZTFmNTkyOTc5YjBmNDZkNzhjYzcyMTMwYzcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtNzcsNyAr
NzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaW5pdGlhbGl6ZVN5bmNocm9ub3VzbHkoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRp
cnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRl
OwogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGJhZjU2NzFlY2E2NmQ1MWVkYzY3MTgyMjQ0ZDAw
OWM1MmM3YjVkNTAuLmMzOTZlODQ4NmU5YjVlMWY1ZjIwODY5OTBjY2FjOTNjMWUzMzJhNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTc5MiwxMyArNzkyLDEzIEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCiAgICAgdmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9
CiAKLXZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQordm9pZCBQbHVnaW5WaWV3OjpwYWludChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qZGlydHlSZWN0Ki8pCiB7CiAgICAg
aWYgKCFtX3BsdWdpbiB8fCAhbV9pc0luaXRpYWxpemVkIHx8IG1fcGx1Z2luRWxlbWVudC0+ZGlz
cGxheVN0YXRlKCkgPCBIVE1MUGx1Z0luRWxlbWVudDo6UmVzdGFydGluZykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgewotICAgICAgICBp
ZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkKKyAgICBpZiAoY29udGV4dC5wYWlu
dGluZ0Rpc2FibGVkKCkpIHsKKyAgICAgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGlu
dHMoKSkKICAgICAgICAgICAgIG1fcGx1Z2luLT51cGRhdGVDb250cm9sVGludHMoY29udGV4dCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04MTAsMTQgKzgxMCwxNCBAQCB2b2lkIFBsdWdp
blZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLypk
aXJ0eVJlY3QqLykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fdHJhbnNpZW50UGFpbnRp
bmdTbmFwc2hvdCkgewotICAgICAgICBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QtPnBhaW50
KCpjb250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCks
IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+Ym91bmRzKCkpOworICAgICAgICBtX3RyYW5z
aWVudFBhaW50aW5nU25hcHNob3QtPnBhaW50KGNvbnRleHQsIGNvbnRlbnRzU2NhbGVGYWN0b3Io
KSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKSwgbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90LT5i
b3VuZHMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAKICAgICAvLyBUcmFuc2xhdGUgdGhlIGNv
b3JkaW5hdGUgc3lzdGVtIHNvIHRoYXQgdGhlIG9yaWdpbiBpcyBpbiB0aGUgdG9wLWxlZnQgY29y
bmVyIG9mIHRoZSBwbHVnLWluLgotICAgIGNvbnRleHQtPnRyYW5zbGF0ZShmcmFtZVJlY3QoKS5s
b2NhdGlvbigpLngoKSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKS55KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueCgpLCBmcmFtZVJlY3QoKS5sb2NhdGlv
bigpLnkoKSk7CiAKICAgICBtX3BsdWdpbi0+cGFpbnQoY29udGV4dCwgcGFpbnRSZWN0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4
IDU1MTA2MDIzZGU2ZDk4YzkxMDZjYWU0YzJiY2JhOTI0YWEzMjBlMzcuLjc4YThkY2I4ODNmMGQx
YmEyMjdlYjhmOGVjYzlkZWNkYTM4MTRmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTcxLDcgKzE3MSw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBXZWJDb3JlOjpXaWRnZXQKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1lUmVj
dHNDaGFuZ2VkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmlu
ZGV4IDlhYzNiNjcxMmFiZTMyZDk0ZWFlNTRmOGRiMDMzNDZjYzRjOGI5ZGEuLmE4M2MxYThjNWNi
MmE4YzIwODIyMTIwYmQ2ZDg1NDY0NGMyYmMzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGll
bnRHdGsuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gY29udmVydENhaXJvU3VyZmFjZVRvU2hhcmVhYmxlQml0bWFwKGNhaXJvX3N1CiAgICAg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVT
aGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwogICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
IAotICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9D
b250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZVNpemUpLCBncmFwaGljc0NvbnRleHQuZ2V0KCkpOworICAgIGdyYXBo
aWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZh
Y2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwgSW50UmVjdChJbnRQb2ludCgpLCBp
bWFnZVNpemUpLCAqZ3JhcGhpY3NDb250ZXh0KTsKICAgICByZXR1cm4gYml0bWFwLnJlbGVhc2Uo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDM0MzYyMGJlODhjZTliZGJjMGU4MTc3NjJjOTg0N2VjMTA0NThlODcuLmM1NmJiYmJl
M2NkODU0N2ZiNjdkNzc3N2I5YjA3YzE2NjZhMDU4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIHZvaWQg
V2ViUGFnZTo6ZHJhd1JlY3QoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGdyYXBoaWNzQ29udGV4dCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAocmVjdCk7CiAKLSAg
ICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+cGFpbnQoJmdyYXBoaWNzQ29udGV4
dCwgcmVjdCk7CisgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPnBhaW50KGdy
YXBoaWNzQ29udGV4dCwgcmVjdCk7CiB9CiAKIGRvdWJsZSBXZWJQYWdlOjp0ZXh0Wm9vbUZhY3Rv
cigpIGNvbnN0CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJgog
ICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zSW5WaWV3Q29vcmRpbmF0ZXMpCiAgICAg
ICAgIGNvb3JkaW5hdGVTcGFjZSA9IEZyYW1lVmlldzo6Vmlld0Nvb3JkaW5hdGVzOwogCi0gICAg
ZnJhbWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoZ3JhcGhpY3NDb250ZXh0LmdldCgp
LCBzbmFwc2hvdFJlY3QsIHNob3VsZFBhaW50U2VsZWN0aW9uLCBjb29yZGluYXRlU3BhY2UpOwor
ICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQs
IHNuYXBzaG90UmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAK
ICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1BhaW50U2VsZWN0aW9uUmVjdGFuZ2xl
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBzZWxlY3Rpb25SZWN0YW5nbGUgPSBtX21haW5GcmFtZS0+
Y29yZUZyYW1lKCktPnNlbGVjdGlvbigpLnNlbGVjdGlvbkJvdW5kcygpOwpAQCAtMTgxOSw3ICsx
ODE5LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFnZTo6c25hcHNob3ROb2RlKFdlYkNv
cmU6Ok5vZGUmIG5vZGUsIFNuYXBzaG90T3B0aW9ucwogICAgIGZyYW1lVmlldy0+c2V0QmFzZUJh
Y2tncm91bmRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgIGZyYW1lVmlldy0+c2V0Tm9k
ZVRvRHJhdygmbm9kZSk7CiAKLSAgICBmcmFtZVZpZXctPnBhaW50Q29udGVudHNGb3JTbmFwc2hv
dChncmFwaGljc0NvbnRleHQuZ2V0KCksIHNuYXBzaG90UmVjdCwgRnJhbWVWaWV3OjpFeGNsdWRl
U2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRpbmF0ZXMpOworICAgIGZyYW1lVmll
dy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KCpncmFwaGljc0NvbnRleHQsIHNuYXBzaG90UmVj
dCwgRnJhbWVWaWV3OjpFeGNsdWRlU2VsZWN0aW9uLCBGcmFtZVZpZXc6OkRvY3VtZW50Q29vcmRp
bmF0ZXMpOwogCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9yKHNhdmVkQmFj
a2dyb3VuZENvbG9yKTsKICAgICBmcmFtZVZpZXctPnNldE5vZGVUb0RyYXcobnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250
cm9sbGVySU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5k
Q29udHJvbGxlcklPUy5tbQppbmRleCBmNWU4NmRmMDFmZGExOWQyZTZlNDFlMWY0MDhiOGRjMzE1
YjhhMjhjLi5iZDIxNTczYTY0YWEzM2JmOTkxYTA3MTc1ZWY2NjdjYzdhYjcwYWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENv
bnRyb2xsZXJJT1MubW0KQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGaW5kSW5kaWNhdG9yT3Zlcmxh
eUNsaWVudElPUzo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmIG92ZXJsYXksIEdyYXBoaWNzQ29udGUK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwog
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtb3ZlcmxheUZyYW1lLngoKSwgLW92ZXJsYXlGcmFt
ZS55KCkpOwogICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJl
aGF2aW9yU2VsZWN0aW9uT25seSB8IFBhaW50QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCB8IFBhaW50
QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpOwotICAgICAgICBtX2ZyYW1lLnZpZXco
KS0+cGFpbnRDb250ZW50cygmY29udGV4dCwgb3ZlcmxheUZyYW1lKTsKKyAgICAgICAgbV9mcmFt
ZS52aWV3KCktPnBhaW50Q29udGVudHMoY29udGV4dCwgb3ZlcmxheUZyYW1lKTsKICAgICAgICAg
bV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvck5vcm1hbCk7CiAg
ICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260218</attachid>
            <date>2015-08-28 22:56:39 -0700</date>
            <delta_ts>2015-08-28 22:56:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148561-20150828225628.patch</filename>
            <type>text/plain</type>
            <size>738829</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFmY2Y2YmQxNTJhZDNm
NDc3MDNjNjA2MTE2NWZjOGI0YjFkOGFkNC4uMWVjMzFkMzY3YWE4ZjIyMDEyYmJlZDgwYzZhY2Ji
MjA3MWI1YmIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3NSBAQAorMjAxNS0wOC0yOCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUg
R3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBHcmFwaGljc0Nv
bnRleHQqcyB0aHJvdWdob3V0IG91ciByZW5kZXJpbmcgY29kZS4gSG93ZXZlciwKKyAgICAgICAg
dGhlc2UgY29udGV4dHMgY2FuJ3QgYmUgbnVsbHB0ci4gVGhpcyBwYXRjaCBtaWdyYXRlcyB1c2Vy
cyB0bworICAgICAgICBHcmFwaGljc0NvbnRleHQmcy4KKworICAgICAgICBUaGlzIGlzIGEgcHVy
ZWx5IG1lY2hhbmljYWwgY2hhbmdlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdl
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNvdW50TWF0Y2hlc0ZvclRleHQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnBhaW50Q2FyZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZHJhd1RleHRJbnRlcm5h
bCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkcmF3SW1hZ2VJ
bnRvQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgICogcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzbmFwc2hvdEZyYW1l
UmVjdCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRD
b250cm9sVGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9QcmludENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpzcG9vbFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbFZpZXc6OnBhaW50UGFuU2Nyb2xsSWNvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRP
dmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmRl
ZmF1bHRQYWludFNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9UaGVtZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUaGVtZTo6ZHJhd05hbWVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpUaGVtZTo6cGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL1dpZGdldC5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zml0Q29udGV4dFRvQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lQ29jb2E6OmRyYXdOYW1lZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1dpZGdldEVmbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZHJhd0Nyb3NzZmFkZVN1YmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZHJhd1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdFbXBoYXNpc01h
cmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3RW1waGFzaXNNYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Zmls
bFdpdGhTb2xpZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpwYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjphZGp1c3RCbHVyUmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3cpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdMYXllclBpZWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Qmx1cjo6YmVnaW5TaGFkb3dMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjplbmRTaGFkb3dMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJ
bWFnZUdlbmVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3R2x5cGhzVG9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNTaGFkb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyb0hhcmZidXp6TkcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Zmls
bEN1cnJlbnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kRmlsbEN1cnJl
bnRDYWlyb1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93QW5kU3Ryb2tlQ3VycmVudENh
aXJvUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQml0bWFwSW1hZ2VDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
RmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpmbHVzaENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNsaXApOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmdldFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0Qnl0ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjp0b0RhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
c2NhZGVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dMZXR0ZXJwcmVzc2VkR2x5cGhz
V2l0aEFkdmFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dHbHlwaHNXaXRoQWR2YW5jZXMp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhc2NhZGU6OmRyYXdDb21wbGV4VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNv
bXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BT
aGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VBbHBoYTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Okljb246OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3R2x5
cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNvbXBsZXhUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJY29uOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2Fs
V2luZG93c0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsV2luZG93c0NvbnRleHQ6
OkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxXaW5kb3dzQ29u
dGV4dDo6fkxvY2FsV2luZG93c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRn
ZXRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFp
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dENvbnRhaW5lcjo6
Q29udGV4dENvbnRhaW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dDo6TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6fkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6OmNnQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvVGhlbWVNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3Jl
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFpbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvRWxsaXBz
aXNCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmlucHV0Q29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZs
b3dCb3g6OnBhaW50RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6
OnBhaW50Qm94RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6
cGFpbnRNYXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1BhaW50SW5mby5oOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpQYWludEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRJbmZvOjpjb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6c2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OmFw
cGx5VHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrOjpwYWludENhcmV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpw
YWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpibG9ja1NlbGVjdGlvbkdhcCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9naWNhbExlZnRTZWxlY3Rpb25HYXApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvZ2ljYWxSaWdodFNlbGVjdGlvbkdhcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9ja0Zsb3c6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpjbGlwT3V0RmxvYXRpbmdPYmplY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0ZXJtaW5lQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50TWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRNYXNrSW1hZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6cHVzaENvbnRlbnRzQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OnBvcENvbnRlbnRzQ2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3VuZGVkSW5uZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50TmluZVBpZWNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50T25lQm9yZGVyU2lkZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRCb3JkZXJTaWRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRlclNpZGVQb2x5Z29uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZUZvckNv
bXBsZXhJbm5lclBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50Qm94U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpzaG91bGRBbnRpYWxpYXNMaW5lcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRGV0YWlsc01hcmtlcjo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnBhaW50Rm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnBhaW50T3V0bGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNu
YXBzaG90SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1JlcGxhY2VtZW50QXJyb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZpbGVVcGxvYWRDb250cm9sOjpwYWludE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0OjpwYWlu
dENvbHVtbkJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZVNldDo6cGFpbnRS
b3dCb3JkZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZTo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRBcmVhRWxlbWVudEZvY3VzUmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbmxpbmU6OnBhaW50T3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6
OnBhaW50T3V0bGluZUZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNj
cm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc3RvcmVDbGlwKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpwYWludExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6YXBwbHlGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpwYWludExheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBh
aW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50VHJh
bnNmb3JtZWRMYXllckludG9GcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3V0bGluZUZvckZyYWdtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJh
Z21lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29u
dHJvbHNGb3JGcmFnbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1
bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpwYWludFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0
Qm94OjpwYWludEl0ZW1Gb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RC
b3g6OnBhaW50SXRlbUJhY2tncm91bmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OnBhaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNZWRpYUNvbnRyb2xzOjpwYWludE1lZGlhQ29udHJvbHNQYXJ0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBhaW50Q29sdW1uUnVsZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
T2JqZWN0OjphZGRQREZVUkxSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJSZXBsaWNhOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFpbnRQYXJ0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJ
bnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRy
YWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6cGFpbnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFw
c2VkQm9yZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFj
a2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnRSb3dH
cm91cEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50
Um93R3JvdXBCb3JkZXJJZlJlcXVpcmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWU6OnBhaW50RGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWU6OnBhaW50U2xpZGVyVGlja3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludFRvZ2dsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyZW5kZXJCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50
VGV4dEZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50R2RrUGl4YnVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRp
b25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dENhcHNMb2NrSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFBy
b2dyZXNzQmFyKToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U3BpbkFycm93QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0dG9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYU11dGVCdXR0b24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFQbGF5QnV0dG9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhU2Vla0JhY2tC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVr
Rm9yd2FyZEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6cGFpbnRN
ZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lR3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUlPUzo6cGFpbnRDaGVja2JveERlY29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lSU9TOjpwYWludFJhZGlvRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVJT1M6OnBhaW50VGV4dEZpZWxkRGVjb3JhdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFB1c2hCdXR0b25EZWNvcmF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVN
YWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRDZWxsQW5kU2V0Rm9jdXNlZEVsZW1lbnROZWVk
c1JlcGFpbnRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludEltYWdlQ29udHJvbHNC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0YWNobWVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lU2FmYXJpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludFJhZGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTbGlkZXJUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRT
ZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdEJ1dHRvbkRl
Y29yYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lV2luOjpw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lV2luOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZXRlcik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
aWV3OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94
OjpsaW5lU2VsZWN0aW9uR2FwKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpwYWlu
dEZsb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3Bl
cmF0b3I6OnBhaW50R2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0
b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5zaW9uR2x5cGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmluZVBpZWNlSW1hZ2U6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0VsbGlwc2U6OnN0cm9rZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHRm9yZWln
bk9iamVjdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpwYWludEZvcmVncm91bmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1c2VTdHJv
a2VTdHlsZVRvRmlsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdQYXRoOjpzdHJva2VT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZWN0
OjpzdHJva2VTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseVJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cGF0aE9ubHlD
bGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
bGlwVG9UZXh0TWFzayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFy
a2VyOjphcHBseVZpZXdwb3J0Q2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZU1hcmtlcjo6ZHJhdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBvc3RBcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFw
ZTo6ZmlsbFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpzdHJva2VT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjphcHBs
eVZpZXdwb3J0Q2xpcCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVGbG93Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9u
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVGbG93Qm94OjpwYWludCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25X
aXRoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRU
ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6flNWR1JlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRl
clN1YnRyZWVUb0ltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJ
bmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveDo6cGFpbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmRyYXdTVkdH
bHlwaHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisKIDIwMTUtMDgtMjggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKSBzaG91bGQgcmV0dXJuIHRo
ZSBFeGNlcHRpb24gdG8gdGhlIGNhbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFkOTFhYjE1MjMy
YTM4YmNjZWQ3ODVmYTRmODY2YzdhMTlmMDE3OWQuLjQ1ODYxZGViNGQzNWZkYjBhNDc3ZDM4NDZm
YjY3MzJlOWFlYzFkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0w
OC0yOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IE1pZ3JhdGUgR3JhcGhpY3NDb250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBNaXNjL1dlYktpdE5T
U3RyaW5nRXh0cmFzLm1tOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX2RyYXdBdFBvaW50OmZv
bnQ6dGV4dENvbG9yOmFsbG93aW5nRm9udFNtb290aGluZzpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51
Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmF3UmVjdDpj
b250ZW50c09ubHk6XSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9u
TWFuYWdlciBmb3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDIxNTg4NzAwZjMyYjMwNmJiMGExZWRj
NWM4ZGI3ZjNjNmZkYzhjN2MuLjA3M2Y1YmE5MWFkODc0ODAwNzk5NmNmYmVjYzIyYWE5MzNjNTU2
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNS0wOC0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIE1pZ3JhdGUgR3JhcGhpY3ND
b250ZXh0cyBmcm9tIHBvaW50ZXJzIHRvIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU2MQorCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cGFpbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmltYWdlRm9yUmVjdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRs
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRl
cmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpwYWludCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzbmFwc2hvdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBk
YXRlQ29udHJvbFRpbnRzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRy
b2xGb3JMYXllckluQ29udGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpblZpZXc6OnBhaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzbmFwc2hvdEF0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNuYXBzaG90
Tm9kZSk6CisKIDIwMTUtMDgtMjggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gUmVzdHJ1Y3R1cmUgV2ViTWVkaWFTZXNzaW9uTWFuYWdlciBm
b3IgdGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDE3MzNhMzdjMTA3OTgzMTJiZjllZmVjYWI1MjRmZjEyYzZkZTA0YzcuLjkwZjU1ZDRkNTFm
OTgzNDY5ZWE1MmZkNmJlNDNhYzViYzZkZmY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBG
bG9hdFNpegogICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxsSW1h
Z2UoKTsKICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
c2l6ZSk7Ci0gICAgdGV4dHVyZS0+Y29udGV4dCgpLT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIGltYWdlUmVjdCk7CisgICAgdGV4dHVyZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZShpbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgaW1hZ2VSZWN0KTsKIAogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3RSZW5kZXJlcj4gZmlsdGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJl
cjo6Y3JlYXRlKCk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92
ZSh0ZXh0dXJlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMTljNGZhOTcwY2Q3
YWQzMTUwMGFhNmY0MmU4MzM1MmMyZmI1OWU3NS4uMjc3ZDQyOTBlNWMzMDA4YjczMjMzNjA3YTM3
NTFjMzk3M2U4OTk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzI0OCw3ICsz
MjQ4LDcgQEAgdW5zaWduZWQgRWRpdG9yOjpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHQKIAogICAgICAgICAgICAgICAgIFBhaW50
QmVoYXZpb3Igb2xkQmVoYXZpb3IgPSBtX2ZyYW1lLnZpZXcoKS0+cGFpbnRCZWhhdmlvcigpOwog
ICAgICAgICAgICAgICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKG9sZEJlaGF2
aW9yIHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgICAg
ICAgICAgbV9mcmFtZS52aWV3KCktPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QodmlzaWJsZVJlY3QpKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHZpc2libGVSZWN0KSk7CiAgICAg
ICAgICAgICAgICAgbV9mcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3Ip
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwCmluZGV4IGU4ZDM2OGVkNDdjMzdjY2FmYWVmMmNmM2E4ZjgyNmE5OTRlMzU5
NjkuLmNjMTNjNGFiNjhhOGRkN2NkNDA3NzE5OTVlNmYyMDhiOGU3YjRlYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNTQyLDcgKzE1NDIsNyBAQCB2
b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0
UmVjdENoYW5nZWQpCiAgICAgfQogfQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpwYWludENhcmV0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnBhaW50
Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChtX3NlbGVjdGlv
bi5pc0NhcmV0KCkgJiYgbV9jYXJldFBhaW50KQogICAgICAgICBDYXJldEJhc2U6OnBhaW50Q2Fy
ZXQobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBjb250ZXh0LCBwYWludE9m
ZnNldCwgY2xpcFJlY3QpOwpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGRpc2FwcGVhcnNJbnRvQmFja2dyb3VuZChDb2xvciBmb3JlZ3JvdW5kLCBDb2xvciBiYWNrZ3Jv
dW5kKQogfQogI2VuZGlmCiAKLXZvaWQgQ2FyZXRCYXNlOjpwYWludENhcmV0KE5vZGUqIG5vZGUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKK3ZvaWQgQ2FyZXRCYXNlOjpwYWlu
dENhcmV0KE5vZGUqIG5vZGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsK
ICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9jYXJldFZpc2liaWxpdHkgPT0gSGlk
ZGVuKQpAQCAtMTU5Myw3ICsxNTkzLDcgQEAgdm9pZCBDYXJldEJhc2U6OnBhaW50Q2FyZXQoTm9k
ZSogbm9kZSwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRQb2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBj
b2xvclNwYWNlKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNhcmV0LCBjYXJldENvbG9yLCBjb2xv
clNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vZGUpOwogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNl
dEZvY3VzZWRFbGVtZW50SWZOZWVkZWQoKQogICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmZvY3Vz
Q29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KDAsIG1fZnJhbWUpOwogfQogCi12b2lkIERy
YWdDYXJldENvbnRyb2xsZXI6OnBhaW50RHJhZ0NhcmV0KEZyYW1lKiBmcmFtZSwgR3JhcGhpY3ND
b250ZXh0KiBwLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJl
Y3QmIGNsaXBSZWN0KSBjb25zdAordm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpwYWludERyYWdD
YXJldChGcmFtZSogZnJhbWUsIEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3QKIHsKICNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCktPmRvY3VtZW50KCkuZnJhbWUoKSA9PSBmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkZjc3N2M5YWIyNjI2MWE0OGExMmNmNzlh
MGVkYTc1OWIxNDVmNDAzLi45Y2EyOTcwMDVkYzIzYTA3NjMzNDI3MWQwMzg1N2MzZDNiOWZiMTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC03MSw3ICs3MSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0KCk7CiAgICAgYm9vbCB1cGRh
dGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRp
b24pOwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNvbnN0IFJlbmRlclZpZXcqLCBib29s
IGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKLSAgICB2b2lkIHBhaW50Q2FyZXQoTm9kZSosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xp
cFJlY3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7
CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIERyYWdDYXJldENvbnRyb2xsZXIoKTsKIAogICAgIFJlbmRlckJsb2NrKiBjYXJl
dFJlbmRlcmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBwYWludERyYWdDYXJldChGcmFtZSosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJl
Y3QpIGNvbnN0OworICAgIHZvaWQgcGFpbnREcmFnQ2FyZXQoRnJhbWUqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKIAogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0
aW9uLnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRp
dGFibGUoKSBjb25zdDsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0
V2FzUmVwbGFjZWQoQ2hhcmFjdGVyRGF0YSosIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgb2xk
TGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogCiAgICAgdm9pZCBzZXRDYXJldFZpc2libGUo
Ym9vbCBjYXJldElzVmlzaWJsZSkgeyBzZXRDYXJldFZpc2liaWxpdHkoY2FyZXRJc1Zpc2libGUg
PyBWaXNpYmxlIDogSGlkZGVuKTsgfQotICAgIHZvaWQgcGFpbnRDYXJldChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KTsKKyAg
ICB2b2lkIHBhaW50Q2FyZXQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCk7CiAKICAgICAvLyBVc2VkIHRvIHN1c3BlbmQgY2Fy
ZXQgYmxpbmtpbmcgd2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCiAgICAgdm9pZCBzZXRDYXJldEJs
aW5raW5nU3VzcGVuZGVkKGJvb2wgc3VzcGVuZGVkKSB7IG1faXNDYXJldEJsaW5raW5nU3VzcGVu
ZGVkID0gc3VzcGVuZGVkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
YW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCmluZGV4IGNlNWQ3YjJhNWYyN2Y0Yzc2ZjUxMGQ2ZWY1OTVlMzBhYTI1NGEzMmEuLmJiZmY3
NjJiNWJkODY2N2ExYWFmNThkNDlhZGVmNTJkOGY5MTllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0zNjYsMTIgKzM2NiwxMiBAQCBib29sIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludHNJbnRvQ2FudmFzQnVmZmVyKCkgY29uc3QKIH0KIAogCi12b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQordm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiByLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICAvLyBDbGVhciB0aGUgZGlydHkg
cmVjdAogICAgIG1fZGlydHlSZWN0ID0gRmxvYXRSZWN0KCk7CiAKLSAgICBpZiAoY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX2NvbnRleHQpIHsKQEAgLTM4OCw5ICsz
ODgsOSBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHIsIGJvbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJ
RU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRpb25EZXNjcmlwdGlvbi5zZXRJbWFn
ZU9yaWVudGF0aW9uRW51bShyZW5kZXJlcigpLT5zdHlsZSgpLmltYWdlT3JpZW50YXRpb24oKSk7
CiAjZW5kaWYgCi0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fcHJlc2VudGVk
SW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIpLCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2Nh
bGUpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShtX3ByZXNlbnRlZEltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChyKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMob3JpZW50YXRpb25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxlKSk7
CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNuYXBwZWRJbnRSZWN0KHIp
LCB1c2VMb3dRdWFsaXR5U2NhbGUpOworICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
QnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzbmFwcGVkSW50UmVjdChy
KSwgdXNlTG93UXVhbGl0eVNjYWxlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgwLDEyICs1
ODAsMTIgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25z
dAogICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29s
b3JTcGFjZURldmljZVJHQiwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5zZXRTaGFk
b3dzSWdub3JlVHJhbnNmb3Jtcyh0cnVlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5
KTsKKyAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9y
bXModHJ1ZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBpZiAoZG9jdW1l
bnQoKS5zZXR0aW5ncygpICYmICFkb2N1bWVudCgpLnNldHRpbmdzKCktPmFudGlhbGlhc2VkMmRD
YW52YXNFbmFibGVkKCkpCi0gICAgICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0U2hv
dWxkQW50aWFsaWFzKGZhbHNlKTsKLSAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFN0
cm9rZVRoaWNrbmVzcygxKTsKLSAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyPigqbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgp
KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFNob3VsZEFudGlhbGlhcyhm
YWxzZSk7CisgICAgbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
KTsKKyAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyPihtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwogICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+dm0oKS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKG1lbW9yeUNvc3QoKSk7CkBAIC01OTksNyArNTk5LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBjb25zdAogCiBHcmFwaGljc0NvbnRleHQqIEhUTUxD
YW52YXNFbGVtZW50OjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGJ1ZmZl
cigpID8gbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gYnVm
ZmVyKCkgPyAmbV9pbWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogR3JhcGhp
Y3NDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6ZXhpc3RpbmdEcmF3aW5nQ29udGV4dCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKaW5kZXggOGVmMGVlZTli
NzBjMjhhY2JhZDAzMDk3Zjc4YzViYzg5ODAzNDk1NC4uZWRjMTkxMTg3OWYzYjc2MjQ1NWYyNDVi
NDg3NjIzNzEyNTJlYjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
aApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZERyYXcoY29uc3QgRmxv
YXRSZWN0Jik7CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNDYW52YXNDaGFuZ2VkKGNvbnN0IEZs
b2F0UmVjdCYpOwogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGRyYXdpbmdDb250ZXh0KCkg
Y29uc3Q7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBleGlzdGluZ0RyYXdpbmdDb250ZXh0KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBjNGVjZTRl
MGZlOWIxOGYxMDdkNDljMTAwNjczODA5Mjc5MDk0YTBhLi5iZDMwNjc1Y2IxYWNlYThhMTVlNzc5
ZDc2M2JiZGVhNjY5NzkzYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlTdGF0ZSgpCiAgICAgICAgIHNldERpc3BsYXlNb2RlKFBvc3Rlcik7CiB9CiAKLXZvaWQg
SFRNTFZpZGVvRWxlbWVudDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQordm9pZCBIVE1MVmlkZW9F
bGVtZW50OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgTWVkaWFQbGF5ZXIqIHBsYXll
ciA9IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXllcigpOwogICAgIGlmICghcGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBhZWE2YmE4YjgyZDBmMTc5OGM1ZWJl
NmIzMGM2MmQzN2YzMmU4YTA4Li4zMzRhNmEwZjY0NDcyMTdiNTQyMTI2ODU3YWE0OGZhYWI3NmI2
ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3
IHBpeGVsIGFjY2VzcwotICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogICAgIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCmluZGV4IDc2N2M2MmMzY2MwZmJhNTRjMGUwY2EwM2JhNGI5MWQ5YmE0ZTJjYjMuLjUzYzll
NDQ1MmUzM2I3ZjE0MTM5MzczZGI4ZDUzN2I4Y2YyYTVjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAt
MTU1NCw3ICsxNTU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdJbWFn
ZShIVE1MVmlkZW9FbGVtZW50KiB2aWRlbywgY29uc3QgRmxvYXRSZWMKICAgICBjLT50cmFuc2xh
dGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBjLT5zY2FsZShGbG9hdFNpemUoZHN0
UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKSkpOwogICAgIGMtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0Lnko
KSk7Ci0gICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGMsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNpemUodmlkZW8pKSk7CisgICAgdmlkZW8tPnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KCpjLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvKSkpOwogICAg
IHN0YXRlU2F2ZXIucmVzdG9yZSgpOwogICAgIGRpZERyYXcoZHN0UmVjdCk7CiB9CkBAIC0xNjU4
LDE0ICsxNjU4LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXIqIGJ1ZmZlciwgY29uc3QgSW50UmVjCiAgICAgYy0+cmVzdG9yZSgp
OwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UqIGltYWdlLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBv
cCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSogaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ewotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBkZXN0LCBz
cmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgc3R5bGVDb2xvclNwYWNlLCBk
ZXN0LCBzcmMsIG9wKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENv
bG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKLSAgICBjb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjLCBvcCk7
CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIHN0eWxlQ29sb3JTcGFj
ZSwgZGVzdCwgc3JjLCBvcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCogaW1hZ2Us
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE2OTEsOSArMTY5MSw5
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZnVs
bENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoCiAgICAgYWRqdXN0ZWREZXN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zv
cm0gPSBjLT5nZXRDVE0oKTsKICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0ID0g
ZW5jbG9zaW5nSW50UmVjdChlZmZlY3RpdmVUcmFuc2Zvcm0ubWFwUmVjdChhZGp1c3RlZERlc3Qp
KTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVk
UmVjdC5sb2NhdGlvbigpLngoKSwgLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCku
eSgpKTsKLSAgICBidWZmZXItPmNvbnRleHQoKS0+dHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQud2lk
dGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Ci0gICAgYnVmZmVyLT5jb250ZXh0KCktPmNv
bmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOworICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKS54KCksIC10cmFuc2Zvcm1l
ZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpLnkoKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKGNyb3BwZWRPZmZzZXQud2lkdGgoKSwgY3JvcHBlZE9mZnNldC5oZWlnaHQoKSk7Cisg
ICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7CiAgICAg
ZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgc3R5bGVDb2xvclNw
YWNlLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoYnVmZmVyLmdldCgpLCBidWZmZXJSZWN0LCBvcCk7CkBAIC0yMzkzLDI1ICsy
MzkzLDI1IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEludGVybmFs
KGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvCiAKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBtYXNrSW1hZ2UgPSBjLT5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1h
c2tSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250
ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCYgbWFz
a0ltYWdlQ29udGV4dCA9IG1hc2tJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgICAgIGlmIChmaWxs
KQotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpibGFj
aywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LnNl
dEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgICAgICAg
ICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC5zZXRTdHJva2VUaGlj
a25lc3MoYy0+c3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbWFza0lt
YWdlQ29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0
TW9kZVN0cm9rZSk7CisgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2Rl
KGZpbGwgPyBUZXh0TW9kZUZpbGwgOiBUZXh0TW9kZVN0cm9rZSk7CiAKICAgICAgICAgaWYgKHVz
ZU1heFdpZHRoKSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUobG9j
YXRpb24ueCgpIC0gbWFza1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwor
ICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC50cmFuc2xhdGUobG9jYXRpb24ueCgpIC0gbWFz
a1JlY3QueCgpLCBsb2NhdGlvbi55KCkgLSBtYXNrUmVjdC55KCkpOwogICAgICAgICAgICAgLy8g
V2UgZHJhdyB3aGVuIGZvbnRXaWR0aCBpcyAwIHNvIGNvbXBvc2l0aW5nIG9wZXJhdGlvbnMgKGVn
LCBhICJjb3B5IiBvcCkgc3RpbGwgd29yay4KLSAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSgoZm9udFdpZHRoID4gMCA/ICh3aWR0aCAvIGZvbnRXaWR0aCkgOiAw
KSwgMSkpOwotICAgICAgICAgICAgbWFza0ltYWdlQ29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQs
IHRleHRSdW4sIEZsb2F0UG9pbnQoMCwgMCksIEZvbnRDYXNjYWRlOjpVc2VGYWxsYmFja0lmRm9u
dE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXpl
KChmb250V2lkdGggPiAwID8gKHdpZHRoIC8gZm9udFdpZHRoKSA6IDApLCAxKSk7CisgICAgICAg
ICAgICBtYXNrSW1hZ2VDb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBGbG9hdFBv
aW50KDAsIDApLCBGb250Q2FzY2FkZTo6VXNlRmFsbGJhY2tJZkZvbnROb3RSZWFkeSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0LT50cmFuc2xhdGUoLW1h
c2tSZWN0LngoKSwgLW1hc2tSZWN0LnkoKSk7Ci0gICAgICAgICAgICBtYXNrSW1hZ2VDb250ZXh0
LT5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNjYWRlOjpVc2VG
YWxsYmFja0lmRm9udE5vdFJlYWR5KTsKKyAgICAgICAgICAgIG1hc2tJbWFnZUNvbnRleHQudHJh
bnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVjdC55KCkpOworICAgICAgICAgICAgbWFza0lt
YWdlQ29udGV4dC5kcmF3QmlkaVRleHQoZm9udCwgdGV4dFJ1biwgbG9jYXRpb24sIEZvbnRDYXNj
YWRlOjpVc2VGYWxsYmFja0lmRm9udE5vdFJlYWR5KTsKICAgICAgICAgfQogCiAgICAgICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmlu
ZGV4IDQwNTM5ZDY1M2ViZTBmYzFkNDhlMTgwYjMyODNiMDJmNmZhZWIwMDcuLjVlNjE0MzY3ODM3
NGJhNTAxNzM4YTFkNDlmMTlmMzdjOWI2Mzg0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0zMTg1
LDcgKzMxODUsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkcmF3SW1hZ2VJbnRvQnVmZmVyKEltYWdlKiBpbWFnZSwgaQogCiAgICAgRmxvYXRSZWN0IHNy
Y1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS0+c2l6ZSgpKTsKICAgICBGbG9hdFJlY3QgZGVzdFJl
Y3QoRmxvYXRQb2ludCgpLCBzaXplKTsKLSAgICBidWYtPmNvbnRleHQoKS0+ZHJhd0ltYWdlKGlt
YWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgYnVmLT5j
b250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CiAgICAgcmV0dXJuIGJ1Zi0+Y29weUltYWdlKEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuY3BwCmluZGV4IDQxOTNkZTkxYTlmNWYwNWRiYTBhMGNjZGI1MGEzMGQ5NTgxN2Yx
YTkuLjI3YWJjYzAzNzE2NDNjZTJkODNjY2YzNjU3NWUzZDdkM2M4NTAxYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTIyMSw3ICsyMjEs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpOwog
ICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLSAgICB2
aWV3LT5wYWludCgmY29udGV4dCwgSW50UmVjdCgwLCAwLCB2aWV3LT53aWR0aCgpLCB2aWV3LT5o
ZWlnaHQoKSkpOworICAgIHZpZXctPnBhaW50KGNvbnRleHQsIEludFJlY3QoMCwgMCwgdmlldy0+
d2lkdGgoKSwgdmlldy0+aGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpn
ZXRIaWdobGlnaHQoSGlnaGxpZ2h0JiBoaWdobGlnaHQsIEluc3BlY3Rvck92ZXJsYXk6OkNvb3Jk
aW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVNuYXBzaG90dGluZy5jcHAKaW5kZXggNmJmY2UxMmI4YzcyNGRjMGVlNzc1YjdkZmJhMDkw
NTg2YzIxZjQ5Yi4uZDg1MTQ3ZGMyY2VkZjY1ODg0OGJkYWI3NjAxMGExYjNmNjYwMjkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1l
JiBmcmFtZSwgY29uc3QgSW50UmVjdCYgaW1hZwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBzY2Fs
ZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGJ1ZmZlci0+Y29udGV4dCgpLT50cmFuc2xhdGUoLWltYWdl
UmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKKyAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xh
dGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+
cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGJ1ZmZlci0+Y29udGV4dCgpLCBpbWFnZVJlY3QsIHNo
b3VsZEluY2x1ZGVTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA3ZDczNTNmYThlNGYxNjE4MjBkNDJk
NjAzY2I4ZmVkNmU4YjBhNWI3Li40OWZiNzI5MDUzY2I0YWM0Nzg2ZTNkOWQ5ZTE5ZDI0YmM0Mzgw
YjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0zNzE3LDE2ICszNzE3LDE2IEBA
IHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogICAgIFNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbENvcm5lcigpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQor
dm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRp
bmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRz
KCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsQ29ybmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuaXNN
YWluRnJhbWUoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIGJh
c2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBj
b250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIGJhc2VCYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNv
bnRleHQsIGNvcm5lclJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0zNzM0LDEyICszNzM0LDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNj
cm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
CiAgICAgU2Nyb2xsVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7
CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBGcmFtZVZp
ZXc6OnBhaW50U2Nyb2xsYmFyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgU2Nyb2xsYmFyJiBi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGJhci0+aXNDdXN0b21TY3JvbGxi
YXIoKSAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgSW50UmVjdCB0b0ZpbGwg
PSBiYXItPmZyYW1lUmVjdCgpOworICAgIGlmIChiYXIuaXNDdXN0b21TY3JvbGxiYXIoKSAmJiBm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKKyAgICAgICAgSW50UmVjdCB0b0ZpbGwgPSBiYXIuZnJh
bWVSZWN0KCk7CiAgICAgICAgIHRvRmlsbC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRvRmlsbCwgYmFzZUJhY2tncm91bmRDb2xvcigpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5maWxsUmVjdCh0b0ZpbGwsIGJhc2VCYWNrZ3JvdW5k
Q29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgfQogCiAgICAgU2Nyb2xsVmlldzo6
cGFpbnRTY3JvbGxiYXIoY29udGV4dCwgYmFyLCByZWN0KTsKQEAgLTM4OTcsOSArMzg5Nyw5IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiAgICAgY29udGV4dC5zZXRVcGRh
dGluZ0NvbnRyb2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgotICAgICAgICBw
YWludENvbnRlbnRzKCZjb250ZXh0LCB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1l
bnRWaXNpYmxlUmVjdCkpOworICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIHZpc2libGVD
b250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIHBhaW50KCZjb250ZXh0LCBmcmFtZVJlY3QoKSk7CisgICAgICAgIHBhaW50KGNvbnRl
eHQsIGZyYW1lUmVjdCgpKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6Ondhc1Njcm9sbGVkQnlVc2Vy
KCkgY29uc3QKQEAgLTM5MjAsMTEgKzM5MjAsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFdhc1Nj
cm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVzZXIpCiAgICAgYWRqdXN0VGlsZWRCYWNr
aW5nQ292ZXJhZ2UoKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OndpbGxQYWludENvbnRlbnRz
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWlu
dGluZ1N0YXRlJiBwYWludGluZ1N0YXRlKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKIAotICAgIGlmICghY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CiAKICAgICBwYWludGlu
Z1N0YXRlLmlzVG9wTGV2ZWxQYWludGVyID0gIXNDdXJyZW50UGFpbnRUaW1lU3RhbXA7CkBAIC0z
OTYxLDcgKzM5NjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIG1faXNQYWludGlu
ZyA9IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpkaWRQYWludENvbnRlbnRzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
JiBwYWludGluZ1N0YXRlKQordm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIFBhaW50aW5nU3Rh
dGUmIHBhaW50aW5nU3RhdGUpCiB7CiAgICAgbV9pc1BhaW50aW5nID0gZmFsc2U7CiAKQEAgLTM5
ODUsMTQgKzM5ODUsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKICAgICBpZiAocGFpbnRp
bmdTdGF0ZS5pc1RvcExldmVsUGFpbnRlcikKICAgICAgICAgc0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDA7CiAKLSAgICBpZiAoIWNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkgeworICAgIGlm
ICghY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRQYWludChyZW5kZXJWaWV3KCksIGRpcnR5UmVjdCk7CiAgICAgICAgIC8v
IEZJWE1FOiBzaG91bGQgcHJvYmFibHkgbm90IGZpcmUgbWlsZXN0b25lcyBmb3Igc25hcHNob3Qg
cGFpbnRpbmcuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MjMK
ICAgICAgICAgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCgpOwogICAgIH0KIH0K
IAotdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBmaWxsV2l0aFJlZDsKQEAgLTQwMTAsNyArNDAxMCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiAgICAgICAgIGZpbGxXaXRoUmVkID0gdHJ1ZTsK
ICAgICAKICAgICBpZiAoZmlsbFdpdGhSZWQpCi0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRp
cnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGRpcnR5UmVjdCwgQ29sb3IoMHhGRiwgMCwgMCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogI2VuZGlmCiAKICAgICBpZiAobV9sYXlvdXRQaGFzZSA9PSBJblZpZXdT
aXplQWRqdXN0KQpAQCAtNDA3Miw3ICs0MDcyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5vZGVU
b0RyYXcoTm9kZSogbm9kZSkKICAgICBtX25vZGVUb0RyYXcgPSBub2RlOwogfQogCi12b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBh
aW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGluYXRlU3BhY2Up
Cit2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNuYXBzaG90
IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCBjb29yZGlu
YXRlU3BhY2UpCiB7CiAgICAgdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgp
OwogCkBAIC00MTA4LDkgKzQxMDgsOSBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50c0Zv
clNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdAogICAgIHNl
dFBhaW50QmVoYXZpb3Iob2xkQmVoYXZpb3IpOwogfQogCi12b2lkIEZyYW1lVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9y
aXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEs
IGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5n
QXJlYXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0KQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLT5wcmludGluZygpKQpAQCAtNDMwMSw3ICs0
MzAxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0
ICpuZXdCb3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKICAgICByZW5kZXJWaWV3LT5zZXRUcnVu
Y2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZp
ZXctPmxheW91dE92ZXJmbG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihv
bGRCb3R0b20gLSBvbGRUb3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5
UmVjdCk7Ci0gICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoJmNvbnRleHQsIGRpcnR5UmVj
dCk7CisgICAgcmVuZGVyVmlldy0+bGF5ZXIoKS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0KTsK
ICAgICAqbmV3Qm90dG9tID0gcmVuZGVyVmlldy0+YmVzdFRydW5jYXRlZEF0KCk7CiAgICAgaWYg
KCEqbmV3Qm90dG9tKQogICAgICAgICAqbmV3Qm90dG9tID0gb2xkQm90dG9tOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmgKaW5kZXggNDM4MDFjODI5ODEwZGJjZWIyYzJhYzg2YjUwZTk2MjU3ZWFlMGI3
NC4uY2U4OTZiYTYyNmQ5YTFjZGY0NGRkMDg3ZTlkODczNmU1Y2ZmMjFmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RydWN0IFBhaW50aW5nU3RhdGUgewog
ICAgICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0zMzcsOCArMzM3LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfTsKIAotICAgIHZvaWQgd2lsbFBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGluZ1N0YXRl
Jik7Ci0gICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOworICAgIHZvaWQgd2lsbFBhaW50Q29u
dGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBQYWludGlu
Z1N0YXRlJik7CisgICAgdm9pZCBkaWRQYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYpOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQo
KTsKQEAgLTM1MywxMSArMzUzLDExIEBAIHB1YmxpYzoKIAogICAgIGVudW0gU2VsZWN0aW9uSW5T
bmFwc2hvdCB7IEluY2x1ZGVTZWxlY3Rpb24sIEV4Y2x1ZGVTZWxlY3Rpb24gfTsKICAgICBlbnVt
IENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRlcywgVmlld0Nv
b3JkaW5hdGVzIH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25h
cHNob3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rp
b25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFw
c2hvdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRlbnRzRm9yU25hcHNob3Qo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0LCBTZWxlY3Rpb25JblNu
YXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3BhY2VGb3JTbmFwc2hvdCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91
bmRDb2xvcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5jcHAKaW5kZXgg
ZjQ4Mjg1ZTFmZWQ5NzczNzc0MzIxZWRlYTJiNWQwODQzYmQyYTZjMC4uZjYyZGZhNjU4ODFhNjg1
YzQxYWRjNDkyOWYxOTNlOWY4NDFkZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbFBhZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjdHgsIGludCBwYWdlTnVtYmVyLCBmbG9hdCB3aWR0aCkKICAgICBjdHgu
c2NhbGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOwogICAgIGN0eC50cmFuc2xhdGUoLXBhZ2VS
ZWN0LngoKSwgLXBhZ2VSZWN0LnkoKSk7CiAgICAgY3R4LmNsaXAocGFnZVJlY3QpOwotICAgIG1f
ZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cygmY3R4LCBwYWdlUmVjdCk7CisgICAgbV9mcmFt
ZS0+dmlldygpLT5wYWludENvbnRlbnRzKGN0eCwgcGFnZVJlY3QpOwogICAgIGN0eC5yZXN0b3Jl
KCk7CiB9CiAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIFByaW50Q29udGV4dDo6c3Bvb2xSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY3R4LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGN0eC5zYXZl
KCk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgY3R4LmNs
aXAocmVjdCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5wYWludENvbnRlbnRzKCZjdHgsIHJlY3Qp
OworICAgIG1fZnJhbWUtPnZpZXcoKS0+cGFpbnRDb250ZW50cyhjdHgsIHJlY3QpOwogICAgIGN0
eC5yZXN0b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0Zy
YW1lQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKaW5k
ZXggNGMwZjkyMTRhMTliNjE5YTE2MzVjMjdhYTI5MTY4MGZiODg1NDBiZi4uZTNiZDQ2ZmNlZTNk
YTcwNDc3MWU0NGYyODhkMzEyNWI5NjRmNTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS93aW4vRnJhbWVDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVDR1dpbi5jcHAKQEAgLTM5LDEzICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdSZWN0SW50b0NvbnRleHQoSW50UmVjdCByZWN0LCBGcmFtZVZpZXcq
IHZpZXcsIEdyYXBoaWNzQ29udGV4dCogZ2MpCitzdGF0aWMgdm9pZCBkcmF3UmVjdEludG9Db250
ZXh0KEludFJlY3QgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQmIGdjKQog
ewogICAgIEludFNpemUgb2Zmc2V0ID0gdmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiAgICAgcmVjdC5t
b3ZlKC1vZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQoKSk7CiAgICAgcmVjdCA9IHZpZXct
PmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3cocmVjdCk7CiAKLSAgICBnYy0+Y29uY2F0Q1RNKEFm
ZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSkpOworICAgIGdj
LmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpKTsKIAogICAgIHZpZXctPnBhaW50KGdjLCByZWN0KTsKIH0KQEAgLTcyLDcgKzcyLDcgQEAg
R0RJT2JqZWN0PEhCSVRNQVA+IGltYWdlRnJvbVJlY3QoY29uc3QgRnJhbWUqIGZyYW1lLCBJbnRS
ZWN0JiBpcikKIAogICAgIEdyYXBoaWNzQ29udGV4dCBnYyhjb250ZXh0KTsKIAotICAgIGRyYXdS
ZWN0SW50b0NvbnRleHQoaXIsIGZyYW1lLT52aWV3KCksICZnYyk7CisgICAgZHJhd1JlY3RJbnRv
Q29udGV4dChpciwgZnJhbWUtPnZpZXcoKSwgZ2MpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShj
b250ZXh0KTsKICAgICBTZWxlY3RPYmplY3QoaGRjLmdldCgpLCBoYm1wT2xkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKaW5kZXggZmIwMzcyYTE3ZWNlYjgxNTdmZWQyMTE3
NDQzODE1ZmFhM2Y5YTk3My4uNjBmMzcwODc4NzlmZjMyYTRlODc2Njk3MmQwYzFjMjEyMTNhYjRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKQEAgLTExNDcsMTQgKzEx
NDcsMTQgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludFNjcm9sbENvcm5lcih0
aGlzLCBjb250ZXh0LCBjb3JuZXJSZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNj
cm9sbGJhcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYgYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewot
ICAgIGJhci0+cGFpbnQoY29udGV4dCwgcmVjdCk7CisgICAgYmFyLnBhaW50KGNvbnRleHQsIHJl
Y3QpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNv
bnN0IEludFJlY3QmIHJlY3QpCkBAIC0xMTYyLDEyICsxMTYyLDEyIEBAIHZvaWQgU2Nyb2xsVmll
dzo6aW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBp
bnZhbGlkYXRlUmVjdChyZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpwYWludFNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBT
Y3JvbGxWaWV3OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgIWxh
eWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250
ZXh0LCBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCksIHJlY3QpOworICAgICAgICBwYWludFNj
cm9sbGJhcihjb250ZXh0LCAqbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpLCByZWN0KTsKICAg
ICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiAhbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICBwYWludFNjcm9sbGJhcihjb250ZXh0LCBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpLCByZWN0KTsKKyAgICAgICAgcGFpbnRTY3JvbGxiYXIoY29udGV4dCwgKm1fdmVydGljYWxT
Y3JvbGxiYXIuZ2V0KCksIHJlY3QpOwogCiAgICAgaWYgKGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTExNzUsMjMgKzExNzUsMjMgQEAgdm9pZCBTY3JvbGxWaWV3
OjpwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQogICAgIHBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIHNjcm9sbENvcm5lclJlY3Qo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRQYW5TY3JvbGxJY29uKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBzdGF0aWMgSW1hZ2UqIHBhblNjcm9sbEljb24g
PSBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInBhbkljb24iKS5sZWFrUmVmKCk7CiAgICAg
SW50UG9pbnQgaWNvbkdDUG9pbnQgPSBtX3BhblNjcm9sbEljb25Qb2ludDsKICAgICBpZiAocGFy
ZW50KCkpCiAgICAgICAgIGljb25HQ1BvaW50ID0gcGFyZW50KCktPndpbmRvd1RvQ29udGVudHMo
aWNvbkdDUG9pbnQpOwotICAgIGNvbnRleHQtPmRyYXdJbWFnZShwYW5TY3JvbGxJY29uLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBpY29uR0NQb2ludCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UocGFu
U2Nyb2xsSWNvbiwgQ29sb3JTcGFjZURldmljZVJHQiwgaWNvbkdDUG9pbnQpOwogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7CiAg
ICAgICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpICYmICFjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSAmJiAhY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVhV2lsbFBhaW50KCk7CkBAIC0xMjAzLDE2ICsx
MjAzLDE2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnREaXJ0eVJl
Y3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoeCgpLCB5KCkpOwor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIGRvY3VtZW50RGly
dHlSZWN0Lm1vdmVCeSgtbG9jYXRpb24oKSk7CiAKICAgICAgICAgaWYgKCFwYWludHNFbnRpcmVD
b250ZW50cygpKSB7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNjcm9sbFgoKSwg
LXNjcm9sbFkoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2Nyb2xsWCgpLCAt
c2Nyb2xsWSgpKTsKICAgICAgICAgICAgIGRvY3VtZW50RGlydHlSZWN0Lm1vdmVCeShzY3JvbGxQ
b3NpdGlvbigpKTsKIAotICAgICAgICAgICAgY29udGV4dC0+Y2xpcCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOworICAgICAgICAgICAgY29udGV4dC5j
bGlwKHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBwYWludENvbnRlbnRzKGNvbnRleHQsIGRvY3VtZW50RGlydHlS
ZWN0KTsKQEAgLTEyMjcsMTMgKzEyMjcsMTMgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBOb3cg
cGFpbnQgdGhlIHNjcm9sbGJhcnMuCiAgICAgaWYgKCFtX3Njcm9sbGJhcnNTdXBwcmVzc2VkICYm
IChtX2hvcml6b250YWxTY3JvbGxiYXIgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhcikpIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgICAg
ICBJbnRSZWN0IHNjcm9sbFZpZXdEaXJ0eVJlY3QgPSByZWN0OwogICAgICAgICBJbnRSZWN0IHZp
c2libGVBcmVhV2l0aFNjcm9sbGJhcnMobG9jYXRpb24oKSwgdW5vYnNjdXJlZENvbnRlbnRSZWN0
SW5jbHVkaW5nU2Nyb2xsYmFycygpLnNpemUoKSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QuaW50ZXJzZWN0KHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMpOwotICAgICAgICBjb250ZXh0
LT50cmFuc2xhdGUoeCgpLCB5KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh4KCksIHko
KSk7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsKLSAg
ICAgICAgY29udGV4dC0+Y2xpcChJbnRSZWN0KEludFBvaW50KCksIHZpc2libGVBcmVhV2l0aFNj
cm9sbGJhcnMuc2l6ZSgpKSk7CisgICAgICAgIGNvbnRleHQuY2xpcChJbnRSZWN0KEludFBvaW50
KCksIHZpc2libGVBcmVhV2l0aFNjcm9sbGJhcnMuc2l6ZSgpKSk7CiAKICAgICAgICAgcGFpbnRT
Y3JvbGxiYXJzKGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogICAgIH0KQEAgLTEyOTks
MTIgKzEyOTksMTIgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVPdmVyaGFuZ0FyZWFzKCkKICAg
ICAgICAgd2luZG93LT5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290Vmlldyh2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCkKIHsKLSAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRo
aXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LCBkaXJ0eVJlY3QpOworICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5wYWludE92ZXJoYW5n
QXJlYXMoKnRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZUFu
ZFBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCkKK3ZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIEludFJlY3QgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdDsKICAgICBJbnRSZWN0IHZl
cnRpY2FsT3ZlcmhhbmdSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCmluZGV4
IGQwOGY1ZGRlYjc4MmJkMTIyMmEyYTQyZmU5OWY4MzQ1NTVkNTI4YjUuLjIxYzg1MzkyMWNhYWFh
OGY3YWVkNjFhZTY3MDdlODQ2NWJjYjkyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxW
aWV3LmgKQEAgLTM0Myw4ICszNDMsOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0
IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBh
cyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJzLgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbGJhcnMoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlcyB0
byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmlsaXR5IHN0YXR1cyBpcyBrZXB0IHVw
IHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRlbi4KICAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwpAQCAtMzU1LDIwICszNTUsMjAgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgbm9QYW5TY3JvbGxSYWRpdXMgPSAxNTsKICAgICB2
b2lkIGFkZFBhblNjcm9sbEljb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHJlbW92ZVBh
blNjcm9sbEljb24oKTsKLSAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRl
eHQqKTsKKyAgICB2b2lkIHBhaW50UGFuU2Nyb2xsSWNvbihHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRl
eHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9t
U2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250
YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5kUGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0zNzgsOSArMzc4LDkgQEAgcHJvdGVj
dGVkOgogICAgIFNjcm9sbFZpZXcoKTsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBhaW50Q29udGVu
dFJlY3RhbmdsZShjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJl
YXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6
ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVk
U2Nyb2xsYmFyKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXgg
YzRlMWM1NTE3MjQyOTVmNDljNTUyOWUyMGIxZmFiNGYxYjIxNTk3OS4uMzE1MTE0OTY5MzU2NWJj
N2UxYjYyMzFmNGNjMmJlMmIwZmY2YTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuY3BwCkBAIC0xNTEsMTcgKzE1MSwxNyBAQCB2b2lkIFNjcm9sbGJhcjo6dXBkYXRlVGh1bWJQ
cm9wb3J0aW9uKCkKICAgICB1cGRhdGVUaHVtYigpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6cGFp
bnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
dm9pZCBTY3JvbGxiYXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGlu
dHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRl
eHQudXBkYXRpbmdDb250cm9sVGludHMoKSAmJiB0aGVtZSgpLT5zdXBwb3J0c0NvbnRyb2xUaW50
cygpKSB7CiAgICAgICAgIGludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWZyYW1lUmVjdCgpLmludGVy
c2VjdHMoZGFtYWdlUmVjdCkpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFmcmFtZVJlY3QoKS5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoIXRoZW1lKCktPnBhaW50KCp0aGlzLCAqY29udGV4dCwgZGFtYWdlUmVjdCkpCisg
ICAgaWYgKCF0aGVtZSgpLT5wYWludCgqdGhpcywgY29udGV4dCwgZGFtYWdlUmVjdCkpCiAgICAg
ICAgIFdpZGdldDo6cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggYmI1MTdlYjA4YTFlM2Q2YmY4NjM1NTgzODY4ZDk3MTNl
MGM5YjJkMi4uOWMwMGVlZWVmNmQzMDQ3NDUzNWI5NjBiZmIzN2QyYzkwODhhOTA4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0
b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3Mg
PSBwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCBmYThhZjBlZWFlZGI1OGY5ZjhjM2E4Yzc2ODI3ZDQzMjA4YTZjNDMyLi4x
NmJiMjUyOTRlMjIyOTI3YzM3ZDZlYWJjMGU2ZTg2NTljNmE5ODI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTg0LDExICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBk
ZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KLSAgICBzdGF0
aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KKyAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0K
IAogI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBPdmVy
aGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhHcmFwaGljc0xheWVyKiwgY29uc3QgQ29sb3ImKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmNwcAppbmRleCA4ZTJmODM1YzY3MzJkZTY0ZTA1OWFhNjhlY2M4MzQ5YWU1YjAyMDQ3Li43MmYy
YTYzNmRhMThjMDJiN2M2ZWNhOTRmNDA2NjVhODAwYjJkYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0yNjAsOSAr
MjYwLDkgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxi
YXImIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0
cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkKIHsKLSAgICBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGNv
bnRleHQuZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIH0KIAogSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNj
cm9sbGJhciYgc2Nyb2xsYmFyKQpAQCAtMjc5LDE1ICsyNzksMTUgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJSZWN0KFNjcm9sbGJhciYgc2Nyb2xsYmFyKQogICAgIHJl
dHVybiB0aHVtYlJlY3Q7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNh
bE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCiB7ICAgIAotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwg
Q29sb3JTcGFjZURldmljZVJHQik7CiAgICAgaWYgKCFob3Jpem9udGFsT3ZlcmhhbmdSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKGhvcml6b250
YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGlu
dGVyc2VjdGlvbihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIAotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwor
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgaWYgKCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgICAgIGNvbnRleHQuZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXggNzBhNzllZjE3MTQ1OWNjYWIx
MzBiZGMxZjQ4ZTNmYTM4MmQ4ZTIwZC4uN2NhNjY0ZjYwZjkwM2JiNTFmMmQ5N2UxZmYwMWI0ZWI1
MDZiNzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVy
KFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciYpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhlbWUuY3BwCmluZGV4IGVhYzczNTI1NDFjYTYwMDJkZjdiMDg0YTY3
N2MyMmZlMGU5YTExODMuLjM5MDYzNDJmNTEzMmQ3NWM2N2JjMjM0M2MxOTU0NjExNjI5MzU2OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZS5jcHAKQEAgLTU3LDE5ICs1NywxOSBAQCBMZW5ndGhC
b3ggVGhlbWU6OmNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0IHBhcnQsIGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgTGVuZwogICAgIH0KIH0KIAotdm9pZCBUaGVtZTo6ZHJhd05hbWVkSW1hZ2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgVGhlbWU6OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IGNvbnN0CiB7CiAgICAgLy8gV2Ugb25seSBoYW5kbGUgb25lIGljb24gYXQgdGhlIG1vbWVudC4K
ICAgICBpZiAobmFtZSAhPSAid2lyZWxlc3MtcGxheWJhY2siKQogICAgICAgICByZXR1cm47CiAK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogCiAgICAgLy8gRHJhdyBhIGdlbmVyaWMgV2lyZWxlc3MgUGxheWJhY2sgaWNvbi4KIAotICAg
IGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCByZWN0
LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOwotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSg4LCAxKTsK
KyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShyZWN0LnNpemUoKS53aWR0aCgpIC8gMTAwLCBy
ZWN0LnNpemUoKS5oZWlnaHQoKSAvIDEwMCkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKDgsIDEp
OwogCiAgICAgUGF0aCBvdXRsaW5lOwogICAgIG91dGxpbmUubW92ZVRvKEZsb2F0UG9pbnQoNTks
IDU4LjcpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFRoZW1lOjpkcmF3TmFtZWRJbWFnZShj
b25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAg
IG91dGxpbmUuYWRkTGluZVRvKEZsb2F0UG9pbnQoODMuNiwgNDEuNikpOwogICAgIG91dGxpbmUu
Y2xvc2VTdWJwYXRoKCk7CiAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBj
b250ZXh0LmZpbGxQYXRoKG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhlbWUuaApp
bmRleCBlZWZiOTI4ZmM3NjU5MjRmNTM0ODFlM2NiZTQ0ZTgwNGM5Y2JlNDhmLi5lOTU3NDZiYTFi
NGM5MzA0MTc5M2RjNzZlOWUyZmRhODAxNDUzM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RoZW1lLmgK
QEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNvbnRyb2xSZXF1
aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBNZXRob2QgZm9yIHBhaW50aW5nIGEgY29udHJvbC4gVGhlIHJlY3QgaXMgaW4gem9v
bWVkIGNvb3JkaW5hdGVzLgotICAgIHZpcnR1YWwgdm9pZCBwYWludChDb250cm9sUGFydCwgQ29u
dHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgLyp6b29tZWRS
ZWN0Ki8sIGZsb2F0IC8qem9vbUZhY3RvciovLCBTY3JvbGxWaWV3KiwgZmxvYXQgLypkZXZpY2VT
Y2FsZUZhY3RvciovLCBmbG9hdCAvKnBhZ2VTY2FsZUZhY3RvciovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIC8qem9vbWVkUmVjdCovLCBmbG9hdCAvKnpvb21GYWN0b3IqLywg
U2Nyb2xsVmlldyosIGZsb2F0IC8qZGV2aWNlU2NhbGVGYWN0b3IqLywgZmxvYXQgLypwYWdlU2Nh
bGVGYWN0b3IqLykgeyB9CiAKICAgICAvLyBTb21lIGNvbnRyb2xzIG1heSBzcGlsbCBvdXQgb2Yg
dGhlaXIgY29udGFpbmVycyAoZS5nLiwgdGhlIGNoZWNrIG9uIGFuIE9TIFggY2hlY2tib3gpLiAg
V2hlbiB0aGVzZSBjb250cm9scyByZXBhaW50LAogICAgIC8vIHRoZSB0aGVtZSBuZWVkcyB0byBj
b21tdW5pY2F0ZSB0aGlzIGluZmxhdGVkIHJlY3QgdG8gdGhlIGVuZ2luZSBzbyB0aGF0IGl0IGNh
biBpbnZhbGlkYXRlIHRoZSB3aG9sZSBjb250cm9sLgpAQCAtMTA4LDcgKzEwOCw3IEBAIHB1Ymxp
YzoKICAgICAvLyBhbW91bnQgaXMgYWxzbyBzY2FsZWQgYnkgdGhlIHpvb21GYWN0b3IuCiAgICAg
dmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBjb25zdCBD
b250cm9sU3RhdGVzJiwgRmxvYXRSZWN0JiAvKnpvb21lZFJlY3QqLywgZmxvYXQgLyp6b29tRmFj
dG9yKi8pIGNvbnN0IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYW1lZEltYWdlKGNvbnN0
IFN0cmluZyYsIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKIAogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNh
bGxlZCBvbmNlLCBmcm9tIFJlbmRlclRoZW1lOjphZGp1c3REZWZhdWx0U3R5bGVTaGVldCgpLCB0
byBsZXQgZWFjaCBwbGF0Zm9ybSBhZGp1c3QKICAgICAvLyB0aGUgZGVmYXVsdCBDU1MgcnVsZXMg
aW4gaHRtbC5jc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCmluZGV4IDEzOGNhZGZjM2E1YWE1
ZWM0N2IyMTkyMDQ5NjRiODlhOGUxNTNiZmEuLjA3ZTQyYzgxMjQzNzkzYjhjYTZhOTg4NGM5YmNk
YjE3NTJkOTEwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCkBAIC0xMTcsNyArMTE3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpIHsgaW52
YWxpZGF0ZVJlY3QoYm91bmRzUmVjdCgpKTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
UmVjdChjb25zdCBJbnRSZWN0JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1RoZW1lQ29jb2EuY3BwCmluZGV4IGRhODc5MjhjMGY4NzM0MDU5YzQyYjc5MGQ5ZTMxNzIy
OTVmOGNjZjIuLjhmY2NkYzVmZjU5ODNhMThhZGMxZGE3ZTEzNjg3OGU2OGVkMDc1NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgZml0Q29udGV4dFRv
Qm94KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzcmNJbWFnZVNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZHN0U2l6ZSkKK3N0YXRpYyB2b2lkIGZpdENvbnRleHRUb0Jv
eChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc3JjSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpCiB7CiAgICAgZmxvYXQgc3JjUmF0aW8gPSBzcmNJ
bWFnZVNpemUuYXNwZWN0UmF0aW8oKTsKICAgICBmbG9hdCBkc3RSYXRpbyA9IGRzdFNpemUuYXNw
ZWN0UmF0aW8oKTsKQEAgLTQ1LDExICs0NSwxMSBAQCBzdGF0aWMgdm9pZCBmaXRDb250ZXh0VG9C
b3goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNyY0ltYWdlUwog
ICAgICAgICBzY2FsZSA9IGRzdFNpemUuaGVpZ2h0KCkgLyBzcmNJbWFnZVNpemUuaGVpZ2h0KCk7
CiAgICAgICAgIHRyYW5zbGF0aW9uWCA9IChkc3RTaXplLndpZHRoKCkgLSBzY2FsZSAqIHNyY0lt
YWdlU2l6ZS53aWR0aCgpKSAvIDI7CiAgICAgfQotICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh0cmFu
c2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7Ci0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHNj
YWxlLCBzY2FsZSkpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHRyYW5zbGF0aW9uWCwgdHJhbnNs
YXRpb25ZKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKIH0K
IAotdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAordm9p
ZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogewogICAgIC8v
IFdlIG9ubHkgaGFuZGxlIG9uZSBpY29uIGF0IHRoZSBtb21lbnQuCiAgICAgaWYgKG5hbWUgIT0g
IndpcmVsZXNzLXBsYXliYWNrIikgewpAQCAtNTcsOCArNTcsOCBAQCB2b2lkIFRoZW1lQ29jb2E6
OmRyYXdOYW1lZEltYWdlKGNvbnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3Io
Q29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAogICAgIEZsb2F0U2l6ZSB3aXJl
bGVzc1BsYXliYWNrU3JjU2l6ZSgzMiwgMjQuMDE2KTsKICAgICBmaXRDb250ZXh0VG9Cb3goY29u
dGV4dCwgd2lyZWxlc3NQbGF5YmFja1NyY1NpemUsIHJlY3Quc2l6ZSgpKTsKQEAgLTg0LDcgKzg0
LDcgQEAgdm9pZCBUaGVtZUNvY29hOjpkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmIG5hbWUs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBvdXRsaW5lLmFkZExpbmVUbyhGbG9h
dFBvaW50KDI2LjkxNywgMjQuMDE2KSk7CiAgICAgb3V0bGluZS5jbG9zZVN1YnBhdGgoKTsKICAg
ICAKLSAgICBjb250ZXh0LT5maWxsUGF0aChvdXRsaW5lKTsKKyAgICBjb250ZXh0LmZpbGxQYXRo
KG91dGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLmgKaW5kZXggMWQ2YjY5MzhmMDU2NGQ2ODc1MmYyODBhOGJhM2RjMmZjMzViZTY0ZS4uNmJh
MDIzNmY1ODM0ZWNiMzkwMTYzMDZjYzM1N2Q2YTY3MTc1M2RlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAg
ICAgVGhlbWVDb2NvYSgpIHsgfQogICAgIHZpcnR1YWwgflRoZW1lQ29jb2EoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hbWVkSW1hZ2UoY29uc3QgU3RyaW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvV2lkZ2V0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwuY3BwCmluZGV4IDAyMjI2MzU1ZmQy
NTA0YmVkZDAzNWNkYWZkNjEzMjBkNTU2OWNhMDcuLmRlMzIzODk0ZTFkZmEzMTM2OTg0MDRmMGMx
YWNjZjkwYWZkOTBlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9X
aWRnZXRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9XaWRnZXRFZmwu
Y3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2lkZ2V0OjpoaWRlKCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYpCit2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1
Njk5OWU3NThjMjU1NDQzOGU1ZGQzNzE3Li45NDIyZjk0OTA3ZjRhYTU1ZTFkYzU4ODliYTk5NWU3
ZDZhNWI5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC02MDUsMTMgKzYwNSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpyZXNl
dEFuaW1hdGlvbigpCiAgICAgZGVzdHJveURlY29kZWREYXRhSWZOZWNlc3NhcnkodHJ1ZSk7CiB9
CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNm
b3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFjdHh0LT5kcmF3THVtaW5hbmNlTWFzaygpKSB7CisgICAg
aWYgKCFjdHh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpIHsKICAgICAgICAgSW1hZ2U6OmRyYXdQYXR0
ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9w
LCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgIG1fY2FjaGVkSW1hZ2Ut
PnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CiAgICAgfQogCi0gICAgY3R4dC0+c2V0RHJhd0x1
bWluYW5jZU1hc2soZmFsc2UpOworICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIHRpbGVSZWN0LCB0cmFuc2Zv
cm0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIG9wLCBkZXN0UmVjdCwgYmxlbmRNb2RlKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5k
ZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJlM2MwNmJhNC4uMDUwOGQ1NWNlOGM3
NDBmZWU4YTgwNjJlZmYzMjU2NDMyNGNjYTc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
IG92ZXJyaWRlOwogCiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4K
QEAgLTIwMSwxMiArMjAxLDEyIEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBCaXRt
YXBJbWFnZShJbWFnZU9ic2VydmVyKiA9IDApOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAogI2lmIFVTRShXSU5HREkp
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGQ3NzQ2YTlmODEyNDhhMzJkMWY0
NDlmMDMzOGY0MjljMTVmYTEwNWEuLmQyZTUyMTViMjM5YTFmMTg5OTQ2MzY2OWY0YTEwNGM5NWM5
MjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQxLDY4ICs0MSw2OCBAQCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UqIGZyb21J
bWFnZSwgSW1hZ2UqIHRvSW1hZwogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IEltYWdlKiBpbWFnZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3BlcmF0aW9uLCBmbG9hdCBvcGFjaXR5
LCBjb25zdCBGbG9hdFNpemUmIHRhcmdldFNpemUpCitzdGF0aWMgdm9pZCBkcmF3Q3Jvc3NmYWRl
U3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wZXJhdGlvbiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRTaXplJiB0YXJn
ZXRTaXplKQogewogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwogCiAg
ICAgLy8gU1ZHSW1hZ2UgcmVzZXRzIHRoZSBvcGFjaXR5IHdoZW4gcGFpbnRpbmcsIHNvIHdlIGhh
dmUgdG8gdXNlIHRyYW5zcGFyZW5jeSBsYXllcnMgdG8gYWNjdXJhdGVseSBwYWludCBvbmUgYXQg
YSBnaXZlbiBvcGFjaXR5LgogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS0+
aXNTVkdJbWFnZSgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogCiAgICAgaWYg
KHVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOworICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
b3BhY2l0eSk7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsK
KyAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKIAogICAgIGlmICh0YXJnZXRTaXpl
ICE9IGltYWdlU2l6ZSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHRhcmdldFNp
emUud2lkdGgoKSAvIGltYWdlU2l6ZS53aWR0aCgpLCB0YXJnZXRTaXplLmhlaWdodCgpIC8gaW1h
Z2VTaXplLmhlaWdodCgpKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNw
YWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsKKyAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNp
emUodGFyZ2V0U2l6ZS53aWR0aCgpIC8gaW1hZ2VTaXplLndpZHRoKCksIHRhcmdldFNpemUuaGVp
Z2h0KCkgLyBpbWFnZVNpemUuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7Cisg
ICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
Cit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICAvLyBEcmF3IG5vdGhpbmcgaWYgZWl0aGVyIG9mIHRoZSBp
bWFnZXMgaGFzbid0IGxvYWRlZCB5ZXQuCiAgICAgaWYgKG1fZnJvbUltYWdlID09IEltYWdlOjpu
dWxsSW1hZ2UoKSB8fCBtX3RvSW1hZ2UgPT0gSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
IAotICAgIGNvbnRleHQtPmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVT
aXplKSk7Ci0gICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICBjb250
ZXh0LmNsaXAoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9jcm9zc2ZhZGVTaXplKSk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOwogCiAgICAgZHJhd0Nyb3NzZmFkZVN1
YmltYWdlKGNvbnRleHQsIG1fZnJvbUltYWdlLCBDb21wb3NpdGVTb3VyY2VPdmVyLCAxIC0gbV9w
ZXJjZW50YWdlLCBtX2Nyb3NzZmFkZVNpemUpOwogICAgIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShj
b250ZXh0LCBtX3RvSW1hZ2UsIENvbXBvc2l0ZVBsdXNMaWdodGVyLCBtX3BlcmNlbnRhZ2UsIG1f
Y3Jvc3NmYWRlU2l6ZSk7CiAKLSAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKQordm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQog
ewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0g
ICAgY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwotICAgIGNvbnRleHQtPmNsaXAoZHN0UmVjdCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRz
dFJlY3QueCgpLCBkc3RSZWN0LnkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKKyAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLXNyY1JlY3Qu
eCgpLCAtc3JjUmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShkc3RS
ZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LmhlaWdodCgpKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoLXNyY1JlY3QueCgpLCAtc3JjUmVj
dC55KCkpOwogICAgIAogICAgIGRyYXdDcm9zc2ZhZGUoY29udGV4dCk7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIDEsIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGNvbnRleHQtPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxl
cmF0ZWQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGaWxsIHdp
dGggdGhlIGNyb3NzLWZhZGVkIGltYWdlLgotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGdy
YXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgZHJhd0Nyb3NzZmFk
ZShncmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCA1NmE5ODc1MTRjYjcxYTE3YjRj
NzgyYjcxODcxODZiZjcyYTBlMmI3Li5kM2JlMTQ2NTU5YzNiZDRiMzI5ZDYyOGRhZTM3YjZhNWY3
MWY3YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ5LDEzICs0OSwxMyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0
eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKElt
YWdlKiBmcm9tSW1hZ2UsIEltYWdlKiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBG
bG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgot
ICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdD
cm9zc2ZhZGUoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZSogbV9mcm9tSW1hZ2U7CiAg
ICAgSW1hZ2UqIG1fdG9JbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCAzNjk1OTQyNjc4ZjNkYzkyZDExM2ZjMjBhNGY5MTA1
YTU0NWQyNDBhLi42OWFiMDc0OTA0N2Q2MDIyMjkxZTIwYzZjY2Q5Y2E2ZGM3MDFkOTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6dXBkYXRlKFJlZlB0cjxGb250U2Vs
ZWN0b3I+JiYgZm9udFNlbGVjdG9yKSBjb25zdAogICAgIG1fdHlwZXNldHRpbmdGZWF0dXJlcyA9
IGNvbXB1dGVUeXBlc2V0dGluZ0ZlYXR1cmVzKCk7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpk
cmF3VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8sIEN1c3RvbUZvbnROb3RSZWFk
eUFjdGlvbiBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pIGNvbnN0CitmbG9hdCBGb250Q2FzY2Fk
ZTo6ZHJhd1RleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvLCBDdXN0b21Gb250Tm90
UmVhZHlBY3Rpb24gY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKSBjb25zdAogewogICAgIC8vIERv
bid0IGRyYXcgYW55dGhpbmcgd2hpbGUgd2UgYXJlIHVzaW5nIGN1c3RvbSBmb250cyB0aGF0IGFy
ZSBpbiB0aGUgcHJvY2VzcyBvZiBsb2FkaW5nLAogICAgIC8vIGV4Y2VwdCBpZiB0aGUgJ2ZvcmNl
JyBhcmd1bWVudCBpcyBzZXQgdG8gdHJ1ZSAoaW4gd2hpY2ggY2FzZSBpdCB3aWxsIHVzZSBhIGZh
bGxiYWNrCkBAIC0zMjIsNyArMzIyLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdAogICAgIHJl
dHVybiBkcmF3Q29tcGxleFRleHQoY29udGV4dCwgcnVuLCBwb2ludCwgZnJvbSwgdG8pOwogfQog
Ci12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrcyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENh
c2NhZGU6OmRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VGV4dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewogICAgIGlmIChpc0xvYWRpbmdDdXN0
b21Gb250cygpKQogICAgICAgICByZXR1cm47CkBAIC0xMjk4LDcgKzEyOTgsNyBAQCBmbG9hdCBG
b250Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRS
dW4mIHJ1biwgaW50IGZybwogICAgIHJldHVybiBpbml0aWFsQWR2YW5jZTsKIH0KIAotZmxvYXQg
Rm9udENhc2NhZGU6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0
bykgY29uc3QKK2Zsb2F0IEZvbnRDYXNjYWRlOjpkcmF3U2ltcGxlVGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9s
ZHMgb3VyIGdseXBocythZHZhbmNlcytmb250IGRhdGEgZm9yIGVhY2ggZ2x5cGguCiAgICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBmbG9hdCBGb250Q2Fz
Y2FkZTo6ZHJhd1NpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0
UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgpIC0gc3RhcnRYOwogfQogCi12b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0Cit2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFy
aywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAg
ICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZm
ZXIsIEZvclRleHRFbXBoYXNpcyk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIEZvbnRDYXNj
YWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdAogICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlw
aEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4s
IGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0
CiB7CiAjaWYgIUVOQUJMRShTVkdfRk9OVFMpCiAgICAgVU5VU0VEX1BBUkFNKHJ1bik7CkBAIC0x
MzQ5LDEwICsxMzQ5LDEwIEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaEJ1ZmZlcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgaWYgKG5l
eHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVO
QUJMRShTVkdfRk9OVFMpCiAgICAgICAgICAgICBpZiAocmVuZGVyaW5nQ29udGV4dCAmJiBmb250
RGF0YS0+aXNTVkdGb250KCkpCi0gICAgICAgICAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJh
d1NWR0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0
R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICAgICAgcmVuZGVyaW5n
Q29udGV4dC0+ZHJhd1NWR0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBoQnVmZmVyLCBs
YXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogICAgICAgICAgICAg
ZWxzZQogI2VuZGlmCi0gICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCBmb250RGF0
YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGggLSBsYXN0RnJvbSwgc3RhcnRQb2lu
dCk7CisgICAgICAgICAgICAgICAgZHJhd0dseXBocyhjb250ZXh0LCAqZm9udERhdGEsIGdseXBo
QnVmZmVyLCBsYXN0RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOwogCiAg
ICAgICAgICAgICBsYXN0RnJvbSA9IG5leHRHbHlwaDsKICAgICAgICAgICAgIGZvbnREYXRhID0g
bmV4dEZvbnREYXRhOwpAQCAtMTM2NywxMSArMTM2NywxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpk
cmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBy
dW4sCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgIGlmIChyZW5kZXJpbmdDb250ZXh0ICYm
IGZvbnREYXRhLT5pc1NWR0ZvbnQoKSkKLSAgICAgICAgcmVuZGVyaW5nQ29udGV4dC0+ZHJhd1NW
R0dseXBocyhjb250ZXh0LCBmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5
cGggLSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CisgICAgICAgIHJlbmRlcmluZ0NvbnRleHQtPmRy
YXdTVkdHbHlwaHMoY29udGV4dCwgKmZvbnREYXRhLCBnbHlwaEJ1ZmZlciwgbGFzdEZyb20sIG5l
eHRHbHlwaCAtIGxhc3RGcm9tLCBzdGFydFBvaW50KTsKICAgICBlbHNlCiAjZW5kaWYKICAgICB7
Ci0gICAgICAgIGRyYXdHbHlwaHMoY29udGV4dCwgZm9udERhdGEsIGdseXBoQnVmZmVyLCBsYXN0
RnJvbSwgbmV4dEdseXBoIC0gbGFzdEZyb20sIHN0YXJ0UG9pbnQpOworICAgICAgICBkcmF3R2x5
cGhzKGNvbnRleHQsICpmb250RGF0YSwgZ2x5cGhCdWZmZXIsIGxhc3RGcm9tLCBuZXh0R2x5cGgg
LSBsYXN0RnJvbSwgc3RhcnRQb2ludCk7CiAgICAgICAgIHBvaW50LnNldFgobmV4dFgpOwogICAg
IH0KIH0KQEAgLTEzOTEsNyArMTM5MSw3IEBAIGlubGluZSBzdGF0aWMgZmxvYXQgb2Zmc2V0VG9N
aWRkbGVPZkdseXBoQXRJbmRleChjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAg
cmV0dXJuIG9mZnNldFRvTWlkZGxlT2ZHbHlwaChnbHlwaEJ1ZmZlci5mb250QXQoaSksIGdseXBo
QnVmZmVyLmdseXBoQXQoaSkpOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNN
YXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
R2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lz
TWFya3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0
IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKICAgICBHbHlwaERhdGEgbWFya0dseXBoRGF0
YTsKICAgICBpZiAoIWdldEVtcGhhc2lzTWFya0dseXBoRGF0YShtYXJrLCBtYXJrR2x5cGhEYXRh
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmlu
ZGV4IDY1ZTU5MDZlMjViMDEyMjNiMmVhM2NjZDUwMmFmMGNiNzM3NGE4NjIuLjE2NmI5MGU4NzVh
Y2EzMjhhNWMwZGRhZjI0N2ZjMDc5YjMzZjZiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTMzLDkgKzEzMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmKSBjb25zdDsKIAogICAgIGVu
dW0gQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uIHsgRG9Ob3RQYWludElmRm9udE5vdFJlYWR5LCBV
c2VGYWxsYmFja0lmRm9udE5vdFJlYWR5IH07Ci0gICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgZHJh
d1RleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xLCBDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gPSBE
b05vdFBhaW50SWZGb250Tm90UmVhZHkpIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGb250KiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwg
aW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotICAgIHZvaWQgZHJhd0Vt
cGhhc2lzTWFya3MoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGludCBmcm9tID0gMCwgaW50IHRvID0g
LTEpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGRyYXdUZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBp
bnQgdG8gPSAtMSwgQ3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uID0gRG9Ob3RQYWludElmRm9udE5v
dFJlYWR5KSBjb25zdDsKKyAgICB2b2lkIGRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNv
bnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAsIGludCB0byA9IC0xKSBjb25zdDsKIAogICAg
IERhc2hBcnJheSBkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVu
dHMpIGNvbnN0OwogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0
dXJucyB0aGUgaW5pdGlhbCBpbi1zdHJlYW0gYWR2YW5jZS4KICAgICBmbG9hdCBnZXRHbHlwaHNB
bmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIGludCBmcm9tLCBpbnQgdG8s
IEdseXBoQnVmZmVyJiwgRm9yVGV4dEVtcGhhc2lzT3JOb3QgPSBOb3RGb3JUZXh0RW1waGFzaXMp
IGNvbnN0OwotICAgIGZsb2F0IGRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0g
ICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrc0ZvclNpbXBsZVRleHQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwotICAgIHZvaWQgZHJhd0dseXBoQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIEZsb2F0
UG9pbnQmKSBjb25zdDsKLSAgICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBkcmF3U2ltcGxlVGV4dChH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgRmxvYXRQb2ludCYsIGludCBm
cm9tLCBpbnQgdG8pIGNvbnN0OworICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVU
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBBdG9taWNTdHJpbmcm
IG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29u
c3QgR2x5cGhCdWZmZXImLCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgdm9pZCBkcmF3RW1waGFz
aXNNYXJrcyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgR2x5cGhCdWZm
ZXImLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAg
ZmxvYXQgZmxvYXRXaWR0aEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYsIEhhc2hTZXQ8Y29u
c3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAwKSBjb25zdDsK
ICAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb25Gb3JTaW1wbGVUZXh0KGNvbnN0IFRleHRSdW4mLCBm
bG9hdCBwb3NpdGlvbiwgYm9vbCBpbmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9p
ZCBhZGp1c3RTZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiwgTGF5b3V0
UmVjdCYgc2VsZWN0aW9uUmVjdCwgaW50IGZyb20sIGludCB0bykgY29uc3Q7CkBAIC0yMzgsOCAr
MjM4LDggQEAgcHJpdmF0ZToKIAogICAgIC8vIFJldHVybnMgdGhlIGluaXRpYWwgaW4tc3RyZWFt
IGFkdmFuY2UuCiAgICAgZmxvYXQgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChj
b25zdCBUZXh0UnVuJiwgaW50IGZyb20sIGludCB0bywgR2x5cGhCdWZmZXImLCBGb3JUZXh0RW1w
aGFzaXNPck5vdCA9IE5vdEZvclRleHRFbXBoYXNpcykgY29uc3Q7Ci0gICAgZmxvYXQgZHJhd0Nv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBv
aW50JiwgaW50IGZyb20sIGludCB0bykgY29uc3Q7Ci0gICAgdm9pZCBkcmF3RW1waGFzaXNNYXJr
c0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFRleHRSdW4mLCBjb25zdCBB
dG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdDsKKyAgICBmbG9hdCBkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
VGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdDsKKyAg
ICB2b2lkIGRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2lu
dCYsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwogICAgIGZsb2F0IGZsb2F0V2lkdGhGb3JDb21w
bGV4VGV4dChjb25zdCBUZXh0UnVuJiwgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9u
dHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9IDApIGNvbnN0OwogICAgIGludCBvZmZzZXRGb3JQb3Np
dGlvbkZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mLCBmbG9hdCBwb3NpdGlvbiwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocykgY29uc3Q7CiAgICAgdm9pZCBhZGp1c3RTZWxlY3Rpb25SZWN0
Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIExheW91dFJlY3QmIHNlbGVjdGlvblJlY3Qs
IGludCBmcm9tLCBpbnQgdG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggOTIxNzllZWZiMmFjOWY3YWU1NTZlMzc1
YzE2MTYxYzFjOGI0YjM5MS4uN2M5OGFhZmYwY2FhY2MwZDg4NzdlNmRlODllYzQzYTBlNWI4ZTJm
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVu
ZE1vZGUpIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggMDUyNzEyMDBlYTNiOGI0MmVlNmQ5ODQxZTUy
OTVhZDI0Nzc2MzJmZi4uZTZmNmZiNTJjY2ZjNGQ4MGI2YjBiYmE5YzU5YTU4YTRmYjIxOGViMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHAKQEAgLTQzLDE5ICs0MywxOSBAQCBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
CiB7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgZGVzdENvbnRleHQtPmNsaXAoZGVzdFJlY3Qp
OwotICAgIGRlc3RDb250ZXh0LT50cmFuc2xhdGUoZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOworICAgIGRlc3RDb250ZXh0
LnRyYW5zbGF0ZShkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSk7CiAgICAgaWYgKGRlc3RSZWN0
LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKLSAgICAgICAgZGVzdENvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZShkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkZXN0UmVjdC5oZWln
aHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKLSAgICBkZXN0Q29udGV4dC0+dHJhbnNsYXRlKC1z
cmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKLSAgICBkZXN0Q29udGV4dC0+ZmlsbFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKSwgKm1fZ3JhZGllbnQuZ2V0KCkpOworICAgICAg
ICBkZXN0Q29udGV4dC5zY2FsZShGbG9hdFNpemUoZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qu
d2lkdGgoKSwgZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKKyAgICBkZXN0
Q29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpLCAqbV9ncmFk
aWVudC5nZXQoKSk7CiB9CiAKLXZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0KiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCit2b2lkIEdyYWRpZW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92aWRl
IHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHMKICAgICBtX2dy
YWRpZW50LT5hZGp1c3RQYXJhbWV0ZXJzRm9yVGlsZWREcmF3aW5nKGFkanVzdGVkU2l6ZSwgYWRq
dXN0ZWRTcmNSZWN0KTsKIAogICAgIC8vIEZhY3RvciBpbiB0aGUgZGVzdGluYXRpb24gY29udGV4
dCdzIHNjYWxlIHRvIGdlbmVyYXRlIGF0IHRoZSBiZXN0IHJlc29sdXRpb24KLSAgICBBZmZpbmVU
cmFuc2Zvcm0gZGVzdENvbnRleHRDVE0gPSBkZXN0Q29udGV4dC0+Z2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGRlc3RDb250ZXh0Q1RNID0gZGVzdENvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVm
aW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CiAgICAgZG91YmxlIHhTY2FsZSA9IGZhYnMoZGVz
dENvbnRleHRDVE0ueFNjYWxlKCkpOwogICAgIGRvdWJsZSB5U2NhbGUgPSBmYWJzKGRlc3RDb250
ZXh0Q1RNLnlTY2FsZSgpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWRqdXN0ZWRQYXR0ZXJuQ1RN
ID0gcGF0dGVyblRyYW5zZm9ybTsKQEAgLTczLDIzICs3MywyMyBAQCB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcwogCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRvckhh
c2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNp
emUgfHwgIWRlc3RDb250ZXh0LT5pc0NvbXBhdGlibGVXaXRoQnVmZmVyKG1fY2FjaGVkSW1hZ2VC
dWZmZXIuZ2V0KCkpKSB7Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC0+Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIG1fZ3JhZGllbnQtPmhhc0Fs
cGhhKCkpOworICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3Rl
ZFNpemUgfHwgIWRlc3RDb250ZXh0LmlzQ29tcGF0aWJsZVdpdGhCdWZmZXIobV9jYWNoZWRJbWFn
ZUJ1ZmZlci5nZXQoKSkpIHsKKyAgICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGRlc3RDb250
ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBtX2dyYWRpZW50LT5oYXNB
bHBoYSgpKTsKICAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIC8vIEZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGltYWdlLgotICAg
ICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCktPmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKKyAgICAgICAgbV9jYWNo
ZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGFkanVzdGVkU2l6ZSksICptX2dyYWRpZW50KTsKIAogICAgICAgICBtX2NhY2hlZEdlbmVyYXRv
ckhhc2ggPSBnZW5lcmF0b3JIYXNoOwogICAgICAgICBtX2NhY2hlZEFkanVzdGVkU2l6ZSA9IGFk
anVzdGVkU2l6ZTsKIAotICAgICAgICBpZiAoZGVzdENvbnRleHQtPmRyYXdMdW1pbmFuY2VNYXNr
KCkpCisgICAgICAgIGlmIChkZXN0Q29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogICAg
IH0KIAogICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXItPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7
Ci0gICAgZGVzdENvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKKyAgICBkZXN0
Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBp
bWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KICAgICBtX2NhY2hlZEltYWdlQnVmZmVyLT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzdHlsZUNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkZXN0UmVjdCwgYmxlbmRN
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaAppbmRleCA0MDFjNWZhMjAxYWQxMDM4NjBlYWJjOGM5NjNhMGRmNGM0ZWFiMzdhLi42ZWM1
NzZlZDI3ZDlkMzU4YTc2OTQ1M2IwMTBjMjZjMzA0M2M0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5HcmFkaWVudEltYWdlKCk7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xv
clNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAg
ICBHcmFkaWVudEltYWdlKFBhc3NSZWZQdHI8R3JhZGllbnQ+LCBjb25zdCBGbG9hdFNpemUmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGU2YjM3ZmRlNWY5NWVjMDJjMmY3ZDY4YTYxZjQwZjQ3YTc3ZjI3MzEuLjMw
MzQwZGJkMzNhYjVjMDdiOWY0MTY1YTA4MjFhNWM0ZjNlMjE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzE1
LDcgKzMxNSw3IEBAIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENh
c2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZm9udC5kcmF3VGV4dCh0
aGlzLCBydW4sIHBvaW50LCBmcm9tLCB0byk7CisgICAgcmV0dXJuIGZvbnQuZHJhd1RleHQoKnRo
aXMsIHJ1biwgcG9pbnQsIGZyb20sIHRvKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlciYgYnVmZmVyLCBpbnQgZnJvbSwgaW50IG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdHbHlwaHMoY29uc3QgRm9udENhc2NhZGUmIGZvbnRDYXNjYWRlLCBjb25zdCBG
b250JiBmb24KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250Q2FzY2FkZS5kcmF3R2x5cGhzKHRoaXMsICZmb250LCBidWZmZXIsIGZyb20sIG51
bUdseXBocywgcG9pbnQpOworICAgIGZvbnRDYXNjYWRlLmRyYXdHbHlwaHMoKnRoaXMsIGZvbnQs
IGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3RW1waGFzaXNNYXJrcyhjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3Qg
VGV4dFJ1biYKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKHRoaXMsIHJ1biwgbWFyaywgcG9pbnQsIGZyb20s
IHRvKTsKKyAgICBmb250LmRyYXdFbXBoYXNpc01hcmtzKCp0aGlzLCBydW4sIG1hcmssIHBvaW50
LCBmcm9tLCB0byk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQsIEZvbnRDYXNjYWRlOjpDdXN0b21Gb250Tm90UmVhZHlBY3Rpb24gY3VzdG9tRm9u
dE5vdFJlYWR5QWN0aW9uKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1
biwKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/IFJUTCA6IExUUik7CiAgICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92ZXJyaWRlKGZh
bHNlKSk7CiAKLSAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KHRoaXMsIHN1YnJ1
biwgY3VyclBvaW50LCAwLCAtMSwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKKyAgICAgICAg
ZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwg
LTEsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CiAgICAgICAgIGN1cnJQb2ludC5tb3ZlKHdp
ZHRoLCAwKTsKIAogICAgICAgICBiaWRpUnVuID0gYmlkaVJ1bi0+bmV4dCgpOwpAQCAtMzk2LDcg
KzM5Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBGSVhNRSAoNDkwMDIp
OiBTaG91bGQgYmUgSW50ZXJwb2xhdGlvbkxvdwogICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBvbGF0aW9uTm9uZSA6IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgaW1hZ2UtPmRyYXcodGhpcywgZGVzdGlu
YXRpb24sIHNvdXJjZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fb3JpZW50YXRpb25EZXNjcmlwdGlvbik7CisgICAgaW1hZ2UtPmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwKQEAgLTQwNiw3ICs0MDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRlcnBv
bGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJh
d1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBjb2xvclNwYWNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIGNvbG9yU3BhY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCkBAIC00
MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdl
KiBpbWFnZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdAogICAgIH0KIAogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dRdWFsaXR5U2NhbGUgPyBJbnRl
cnBvbGF0aW9uTG93IDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKLSAgICBpbWFnZS0+
ZHJhd1RpbGVkKHRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1
bGUsIHZSdWxlLCBjb2xvclNwYWNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yKTsKKyAgICBpbWFnZS0+ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgY29sb3JTcGFjZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdlLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogaW1hZ2UsIENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwKIAogICAgIC8vIEZJWE1FICg0OTAwMik6IFNob3VsZCBiZSBJbnRlcnBv
bGF0aW9uTG93CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxv
d1F1YWxpdHlTY2FsZSA/IEludGVycG9sYXRpb25Ob25lIDogaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKLSAgICBpbWFnZS0+ZHJhdyh0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91c2VMb3dR
dWFsaXR5U2NhbGUpOworICAgIGltYWdlLT5kcmF3KCp0aGlzLCBjb2xvclNwYWNlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciogYnVmZmVyLCBjb25zdCBGbG9hdFJlY3Qm
IHJlCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGJ1ZmZlci0+Y2xpcCh0aGlzLCByZWN0KTsKKyAgICBidWZmZXItPmNsaXAoKnRoaXMsIHJlY3Qp
OwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKQEAgLTY0MCwyMCArNjQwLDIwIEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0CiAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IGdldENUTShEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICBGbG9hdFNpemUgc2Nh
bGVkU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoc2l6ZS53aWR0aCgpICogdHJhbnNmb3JtLnhT
Y2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChzaXplLmhlaWdodCgpICogdHJhbnNmb3Jt
LnlTY2FsZSgpKSkpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCB0aGlzLCBoYXNBbHBoYSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihz
Y2FsZWRTaXplLCAxLCBDb2xvclNwYWNlRGV2aWNlUkdCLCAqdGhpcywgaGFzQWxwaGEpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLT5zY2FsZShGbG9hdFNpemUoc2NhbGVkU2l6ZS53aWR0aCgpIC8gc2l6ZS53aWR0aCgp
LCBzY2FsZWRTaXplLmhlaWdodCgpIC8gc2l6ZS5oZWlnaHQoKSkpOworICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKEZsb2F0U2l6ZShzY2FsZWRTaXplLndpZHRoKCkgLyBzaXplLndpZHRoKCks
IHNjYWxlZFNpemUuaGVpZ2h0KCkgLyBzaXplLmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gYnVm
ZmVyOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNDb21wYXRpYmxlV2l0aEJ1ZmZlcihJ
bWFnZUJ1ZmZlciogYnVmZmVyKSBjb25zdAogewotICAgIEdyYXBoaWNzQ29udGV4dCogYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVy
Q29udGV4dCA9IGJ1ZmZlci0+Y29udGV4dCgpOwogCi0gICAgcmV0dXJuIHNjYWxlc01hdGNoKGdl
dENUTSgpLCBidWZmZXJDb250ZXh0LT5nZXRDVE0oKSkgJiYgaXNBY2NlbGVyYXRlZENvbnRleHQo
KSA9PSBidWZmZXJDb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpOworICAgIHJldHVybiBz
Y2FsZXNNYXRjaChnZXRDVE0oKSwgYnVmZmVyQ29udGV4dC5nZXRDVE0oKSkgJiYgaXNBY2NlbGVy
YXRlZENvbnRleHQoKSA9PSBidWZmZXJDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCk7CiB9
CiAKICNpZiAhVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkOGRlZmYwNDQ2MDczMGRiYjY5NTgwOGU5YTZmN2Zl
YmZmNzM1NmZhLi5jMWEwNDc1YzIyMzI3YTFhMGVkZjE3ZjdlNTk1Y2IyODVhMWFlMzU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtNDU3LDcgKzQ1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5l
VHJhbnNmb3JtJiBhZmZpbmVUcmFuc2Zvcm0oKTsKICAgICAgICAgdm9pZCByZXNldEFmZmluZVRy
YW5zZm9ybSgpOwogICAgICAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEdyYWRpZW50Kik7Ci0gICAgICAgIHZvaWQgZHJhd1RleHQoY29uc3QgRm9udCosIGNvbnN0IEds
eXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsK
KyAgICAgICAgdm9pZCBkcmF3VGV4dChjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAgICB2b2lk
IGRyYXdGcmFtZUNvbnRyb2woY29uc3QgSW50UmVjdCYgcmVjdCwgdW5zaWduZWQgdHlwZSwgdW5z
aWduZWQgc3RhdGUpOwogICAgICAgICB2b2lkIGRyYXdGb2N1c1JlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAgICAgICAgIHZvaWQgcGFpbnRUZXh0RmllbGQoY29uc3QgSW50UmVjdCYgcmVjdCwg
dW5zaWduZWQgc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNTU4YWQ3Y2I1MjU3YjhhNWJiYmFiYzFkOWQ4
YzdkYjEyZWYzMTliZC4uMDVhYjc1N2JlZjJlYjgwNDg5YmJjNDBiMzc4MWVjMGE4ZjQzNWFkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCkBAIC0xMTI4LDggKzExMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludFRv
Q2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwg
aW50IGltYWdlSGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIFBsYXRmb3JtQ29udGV4dENhaXJvKiBjb250ZXh0KTsKICNlbGlm
IFVTRShDRykKLSAgICB2b2lkIHBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1h
Z2VQaXhlbHMsIGludCBpbWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hlaWdodCwgR3JhcGhpY3NDb250
ZXh0Kik7CisgICAgdm9pZCBwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdl
UGl4ZWxzLCBpbnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgs
IGludCBjYW52YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCYpOwogI2VuZGlmCiAKICAgICB2b2lk
IG1hcmtDb250ZXh0Q2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuY3BwCmluZGV4IDBkZjdlNWU3MWQzNzY1NDU5NGRlMDg3NGQ1YzgwZWUwM2FhZmU0ZWMu
LmU3NDNiOTg2YmQ5MzBjZGNlZjI5YjU1ZmNlMzM1NjQwNGMwMTQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTc4LDIzICs3OCwyMyBAQCBib29s
IEltYWdlOjpzZXREYXRhKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhLCBib29sIGFsbERh
dGFSZWNlaXZlZCkKICAgICByZXR1cm4gZGF0YUNoYW5nZWQoYWxsRGF0YVJlY2VpdmVkKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCogY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgSW1hZ2U6OmZpbGxX
aXRoU29saWRDb2xvcihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCiB7CiAgICAgaWYgKCFjb2xvci5hbHBoYSgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0
eHQtPmNvbXBvc2l0ZU9wZXJhdGlvbigpOwotICAgIGN0eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bighY29sb3IuaGFzQWxwaGEoKSAmJiBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gQ29tcG9z
aXRlQ29weSA6IG9wKTsKLSAgICBjdHh0LT5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVD
b2xvclNwYWNlKTsKLSAgICBjdHh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgcHJldmlvdXNPcGVyYXRvciA9IGN0eHQuY29t
cG9zaXRlT3BlcmF0aW9uKCk7CisgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oIWNvbG9y
Lmhhc0FscGhhKCkgJiYgb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IENvbXBvc2l0ZUNvcHkg
OiBvcCk7CisgICAgY3R4dC5maWxsUmVjdChkc3RSZWN0LCBjb2xvciwgc3R5bGVDb2xvclNwYWNl
KTsKKyAgICBjdHh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsKIH0K
IAotdm9pZCBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQordm9pZCBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGN0eCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIGRl
c2NyaXB0aW9uKQogewogICAgIGRyYXcoY3R4LCBkc3RSZWN0LCBzcmNSZWN0LCBzdHlsZUNvbG9y
U3BhY2UsIG9wLCBibGVuZE1vZGUsIGRlc2NyaXB0aW9uKTsKIH0KIAotdm9pZCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNp
emUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7ICAg
IAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewogICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIHNvbGlkQ29sb3IoKSwgc3R5bGVDb2xvclNwYWNlLCBv
cCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmwKICAgICBvbmVU
aWxlUmVjdC5zZXRTaXplKHNjYWxlZFRpbGVTaXplKTsKICAgICAKICAgICAvLyBDaGVjayBhbmQg
c2VlIGlmIGEgc2luZ2xlIGRyYXcgb2YgdGhlIGltYWdlIGNhbiBjb3ZlciB0aGUgZW50aXJlIGFy
ZWEgd2UgYXJlIHN1cHBvc2VkIHRvIHRpbGUuCi0gICAgaWYgKG9uZVRpbGVSZWN0LmNvbnRhaW5z
KGRlc3RSZWN0KSAmJiAhY3R4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkgeworICAgIGlmIChvbmVU
aWxlUmVjdC5jb250YWlucyhkZXN0UmVjdCkgJiYgIWN0eHQuZHJhd0x1bWluYW5jZU1hc2soKSkg
ewogICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFgoKGRlc3RSZWN0LngoKSAtIG9uZVRpbGVSZWN0LngoKSkgLyBzY2FsZS53aWR0aCgp
KTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbAogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdoZW4gdXNpbmcgYWNj
ZWxlcmF0ZWQgZHJhd2luZyBvbiBpT1MsIGl0J3MgZmFzdGVyIHRvIHN0cmV0Y2ggYW4gaW1hZ2Ug
dGhhbiB0byB0aWxlIGl0LgotICAgIGlmIChjdHh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGN0eHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoc2l6
ZSgpLndpZHRoKCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS5o
ZWlnaHQoKSA9PSBkZXN0UmVjdC5oZWlnaHQoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHZp
c2libGVTcmNSZWN0OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WCgwKTsKQEAgLTE2
NiwxMiArMTY2LDEyIEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiAjZWxzZQogICAgIGNvbnN0
IGZsb2F0IG1heFBhdHRlcm5UaWxlUGl4ZWxzID0gMjA0OCAqIDIwNDg7CiAjZW5kaWYKLSAgICBG
bG9hdFJlY3QgdHJhbnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQtPmdldENUTSgpLm1hcFJlY3QoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2NhbGVkVGlsZVNpemUpKTsKKyAgICBGbG9hdFJlY3QgdHJh
bnNmb3JtZWRUaWxlU2l6ZSA9IGN0eHQuZ2V0Q1RNKCkubWFwUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzY2FsZWRUaWxlU2l6ZSkpOwogICAgIGZsb2F0IHRyYW5zZm9ybWVkVGlsZVNpemVQ
aXhlbHMgPSB0cmFuc2Zvcm1lZFRpbGVTaXplLndpZHRoKCkgKiB0cmFuc2Zvcm1lZFRpbGVTaXpl
LmhlaWdodCgpOwogICAgIEZsb2F0UmVjdCBjdXJyZW50VGlsZVJlY3QgPSBvbmVUaWxlUmVjdDsK
ICAgICBpZiAodHJhbnNmb3JtZWRUaWxlU2l6ZVBpeGVscyA+IG1heFBhdHRlcm5UaWxlUGl4ZWxz
KSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY3R4dCk7
Ci0gICAgICAgIGN0eHQtPmNsaXAoZGVzdFJlY3QpOworICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY3R4dCk7CisgICAgICAgIGN0eHQuY2xpcChkZXN0UmVjdCk7
CiAKICAgICAgICAgY3VycmVudFRpbGVSZWN0LnNoaWZ0WUVkZ2VUbyhkZXN0UmVjdC55KCkpOwog
ICAgICAgICBmbG9hdCB0b1kgPSBjdXJyZW50VGlsZVJlY3QueSgpOwpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsCiB9CiAKIC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRo
ZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2luY2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9u
IG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCogY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKICAgICBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxl
IHZSdWxlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CiB7ICAgIAogICAgIGlmIChtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNThjMGQ5NWQ4YzQzN2JhMTgwYWVmMWQ3
ZmRiNGY4Mjc3Y2Q2ZGQ3Mi4uZjY5YTA1OWZhODk1YWM2MjZhYzdiOGJhYjNlNmJhNjRjNWE4NzA2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIHsgcmV0dXJuIDA7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
IAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCkBAIC0xODUsMTYgKzE4
NSwxNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSBu
dWxscHRyKTsKIAotICAgIHN0YXRpYyB2b2lkIGZpbGxXaXRoU29saWRDb2xvcihHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBzdGF0aWMgdm9pZCBm
aWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVP
cGVyYXRvcik7CiAKICAgICAvLyBUaGUgQ29sb3JTcGFjZSBwYXJhbWV0ZXIgd2lsbCBvbmx5IGJl
IHVzZWQgZm9yIHVudGFnZ2VkIGltYWdlcy4KICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbik7Ci0gICAg
dm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsCisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciAsIEJsZW5kTW9kZSk7Ci0g
ICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvcik7CiAKICAgICAvLyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIGJv
b2wgbWF5RmlsbFdpdGhTb2xpZENvbG9yKCkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCA1MjIxN2Q2
MjQyNWU5ZWUzYTQwMmJiY2JlYjk3MGJlMDUyMjY4MTZhLi44OGI4MTQ5M2Q0MjdiMmY3ZTkzNGNj
ODdiYzVkYWU4YjhhNDFkMTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuY3BwCkBAIC0xNTgsOSArMTU4LDkgQEAgYm9vbCBJbWFnZUJ1ZmZl
cjo6Y29weVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEJiwgUGxhdGZvcm0zRE9i
amVjdCwgR0MKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBib29sKQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZShzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIGNvbnRleHQtPmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOworICAgIHJldHVybiBj
cmVhdGUoc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBjb250ZXh0LmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkgPyBBY2NlbGVyYXRlZCA6IFVuYWNjZWxlcmF0ZWQpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA2
MDVjNDVjYTY1OWQ2NTYzNzUxZGFhMmM1Y2E0ZjY1MDcyZWRiYzlkLi5iOWU5YTZiZjE1MTRhNzdm
YTBmZTBmMzgzZDFkYzZiNTFkZmRhYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqLCBib29s
IGhhc0FscGhhKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgYm9vbCBoYXNBbHBoYSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+SW1hZ2VCdWZmZXIoKTsKIApAQCAtOTQsNyArOTQsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c29sdXRpb25TY2FsZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFn
ZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgU2NhbGVCZWhhdmlvciA9IFNj
YWxlZCkgY29uc3Q7CiAgICAgLy8gR2l2ZSBoaW50cyBvbiB0aGUgZmFzdGVyIGNvcHlJbWFnZSBN
b2RlLCByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmUgaWYgaXQgc3VwcG9ydHMgdGhlIERvbnRD
b3B5QmFja2luZ1N0b3JlIGJlaGF2aW9yCkBAIC0xNDEsMTAgKzE0MSwxMCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29w
eSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0OwogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29u
c3Q7CiAjZW5kaWYKLSAgICB2b2lkIGNsaXAoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CisgICAgdm9pZCBjbGlwKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwogCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIENvbG9yU3Bh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9
IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNv
dXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgYm9vbCB1c2VMb3dRdWFsaXR5
U2NhbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Q29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDlhNGNhNjVlMjMwNDdhYTFiOWUyNTU2
MTY3ZjRmMzQ3Mjc1NmVmYjIuLjgwMjExMjkxODk4ODdkMGYwMDc5MjFjMzYzMWE4YzQzOGRjZjg1
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNpemUoY29u
c3QgSW50U2l6ZSYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBhaW50KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQogCiAgICAgYm9vbCBj
YW5Mb2FkUG9zdGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lk
IHNldFBvc3Rlcihjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KQEAgLTc3OSwxMiArNzc5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQgcHJl
bG9hZCkKICAgICBtX3ByaXZhdGUtPnNldFByZWxvYWQocHJlbG9hZCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgRmxvYXRSZWN0JiByKQor
dm9pZCBNZWRpYVBsYXllcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBGbG9hdFJl
Y3QmIHIpCiB7CiAgICAgbV9wcml2YXRlLT5wYWludChwLCByKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllcjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25z
dCBGbG9hdFJlY3QmIHIpCit2b2lkIE1lZGlhUGxheWVyOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBtX3By
aXZhdGUtPnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHAsIHIpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggYjRmYzY0M2U0NmNk
OWEyZDc3NzA2ZDNkZThkZDMwYTY2M2M4ZjFhMy4uODAzNjQxOGZjN2UzZTM5MTUyOWM1MjM4OGIy
NDA1ODM3MGIxMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC00MTgsOCArNDE4LDggQEAgcHVibGljOgogICAgIGJvb2wgYXV0b3Bs
YXkoKSBjb25zdDsKICAgICB2b2lkIHNldEF1dG9wbGF5KGJvb2wpOwogCi0gICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHBhaW50Q3Vy
cmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAg
dm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogICAgIC8vIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZSgp
IGlzIHVzZWQgdG8gZG8gdGhlIEdQVS1HUFUgdGV4dHVyZXMgY29weSB3aXRob3V0IGEgcmVhZGJh
Y2sgdG8gc3lzdGVtIG1lbW9yeS4KICAgICAvLyBUaGUgZmlyc3QgZml2ZSBwYXJhbWV0ZXJzIGRl
bm90ZSB0aGUgY29ycmVzcG9uZGluZyBHcmFwaGljc0NvbnRleHQsIGRlc3RpbmF0aW9uIHRleHR1
cmUsIHJlcXVlc3RlZCBsZXZlbCwgcmVxdWVzdGVkIHR5cGUgYW5kIHRoZSByZXF1aXJlZCBpbnRl
cm5hbEZvcm1hdCBmb3IgZGVzdGluYXRpb24gdGV4dHVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggMzYzNzI0
ZTY3NTQ2NzU1ODJmMjllZTg0MjNkYWJiNzQ1NjQ0NGFiOC4uOTYwYTJjM2NlZGFhZDA0YzMzMDUy
NDQwMTc4ODJiYTg4YjRiMjQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTE0NCw5ICsxNDQsOSBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgPSAwOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCogYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIp
OyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgYywgY29uc3QgRmxvYXRSZWN0JiByKSB7IHBhaW50KGMsIHIpOyB9CiAgICAgdmly
dHVhbCBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9v
bCwgYm9vbCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA5YmE5YmYwMzQ3ZjAxZjdmMGI0MDRmNjQxMWViYmVk
ZWE4N2ExMWQ5Li4yNGUzN2M2YWUxMTZmYzBlZWIyZGYyNGEzM2Y0MjE0NmEyNTI1YzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTM5LDE2ICszOSwxNiBAQCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3Qg
RmxvYXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLXZvaWQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOworICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QueCgpLCBk
c3RSZWN0LnkoKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQot
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVj
dC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSkpOwotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CisgICAgICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtc3JjUmVjdC54KCksIC1zcmNSZWN0LnkoKSk7CiAKICAgICBwbGF0Zm9ybVRoZW1lKCkt
PmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgY29udGV4dCwgZHN0UmVjdCk7CiAjZWxzZQpAQCAtNjAs
MTUgKzYwLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAjZW5kaWYKIH0KIAotdm9pZCBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxl
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRl
ZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKIC8vICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgMSwgQ29sb3JTcGFjZURldmljZVJHQiwgY29udGV4dC0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZCk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
c2l6ZSgpLCB0cnVlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgdHJ1ZSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICBw
bGF0Zm9ybVRoZW1lKCktPmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBG
bG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCmluZGV4IDAxNzc4ZWI5ZjliMWM0YWIyZWNjMTY0NGMzMDI0NzE1YjMyYjEyYTcuLjE0
ODQyMjA4YzQyZWFjY2VjMjE0N2ExZjBlYWY4MmMyN2IwMzZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBzdHls
ZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRl
eCBkNzA4NjVhOTcxZjU3YTFiMmUwNWRjNjNiM2NiZDhlZmNhNDI0Mjc0Li42MjNlOWNjY2RlMDIw
YWU0YWNiNmM1N2Q4M2EyY2M1MTc4MmYxOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMzY4LDEyICszNjgsMTIgQEAgdm9pZCBT
aGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUsIGkKICAgICB9CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6YWRqdXN0Qmx1
clJhZGl1cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmFkanVz
dEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmICghbV9zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIG1fYmx1clJhZGl1cy5zY2FsZSgxIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHRyYW5zZm9ybS54U2NhbGUoKSksIDEgLyBzdGF0aWNfY2FzdDxm
bG9hdD4odHJhbnNmb3JtLnlTY2FsZSgpKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBJbnRT
aXplIFNoYWRvd0JsdXI6OmJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGVkZ2VT
aXplOwogfQogCi1JbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dlZFJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaW5nUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBJbnRTaXpl
IGVkZ2VTaXplID0gYmx1cnJlZEVkZ2VTaXplKCk7CiAKQEAgLTM5OSw3ICszOTksNyBAQCBJbnRS
ZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRgogICAgIEZsb2F0UmVjdCBsYXllclJlY3Q7CiAgICAgSW50U2l6
ZSBpbmZsYXRpb247CiAKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKCk7CiAgICAgaWYgKG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9s
eWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAg
ICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUobV9vZmZzZXQpOwpAQCAtNDU3LDI0ICs0NTcsMjQg
QEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChs
YXllclJlY3QpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dCdWZmZXIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpCit2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dC
dWZmZXIoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7CiAgICAgaWYgKCFtX2xh
eWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IG1fbGF5ZXJJbWFnZS0+aW50ZXJuYWxTaXplKCk7CiAgICAgaWYgKGJ1ZmZlclNpemUg
IT0gbV9sYXllclNpemUpIHsKICAgICAgICAgLy8gVGhlIHJlY3QgcGFzc2VkIHRvIGNsaXBUb0lt
YWdlQnVmZmVyKCkgaGFzIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgYnVmZmVyLAogICAg
ICAgICAvLyBidXQgd2UgbWF5IG5vdCBoYXZlIGNsZWFyZWQgaXQgYWxsLCBzbyBjbGlwIHRvIHRo
ZSBmaWxsZWQgcGFydCBmaXJzdC4KLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBtX2xheWVyU2l6ZSkpOworICAgICAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChGbG9hdFJlY3QobV9sYXllck9yaWdpbiwgbV9sYXllclNpemUpKTsKICAgICB9Ci0g
ICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIEZsb2F0
UmVjdChtX2xheWVyT3JpZ2luLCBidWZmZXJTaXplKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5z
ZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNwYWNlKTsKKyAgICBncmFwaGljc0NvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBGbG9hdFJlY3QobV9sYXllck9yaWdpbiwg
YnVmZmVyU2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobV9jb2xvciwg
bV9jb2xvclNwYWNlKTsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAg
ICBncmFwaGljc0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmNsZWFyU2hhZG93KCk7Cisg
ICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChtX2xheWVyT3JpZ2luLCBtX3Nv
dXJjZVJlY3Quc2l6ZSgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbXB1dGVTbGljZVNpemVzRnJv
bVJhZGlpKGNvbnN0IEludFNpemUmIHR3aWNlUmFkaXVzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWksIGludCYgbGVmdFNsaWNlLCBpbnQmIHJpZ2h0U2xpY2UsIGludCYgdG9w
U2xpY2UsIGludCYgYm90dG9tU2xpY2UpCkBAIC01MDQsOSArNTA0LDkgQEAgSW50U2l6ZSBTaGFk
b3dCbHVyOjp0ZW1wbGF0ZVNpemUoY29uc3QgSW50U2l6ZSYgcmFkaXVzUGFkZGluZywgY29uc3Qg
RmxvYXRSb3VuZGUKICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZVNpZGVMZW5ndGggKyB0b3BT
bGljZSArIGJvdHRvbVNsaWNlKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYgc2hhZG93ZWRSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93
ZWRSZWN0KQogewotICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QucmVjdCgpLCBncmFwaGljc0NvbnRl
eHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXll
ckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHNoYWRvd2VkUmVjdC5yZWN0KCksIGdyYXBo
aWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJvdQogCiAgICAgLy8gZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nIGRvZXMgbm90IHdvcmsgd2l0
aCByb3RhdGlvbnMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ1MDQyCi0gICAgaWYgKCFncmFwaGljc0NvbnRleHQtPmdldENUTSgpLnByZXNlcnZlc0F4
aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0gQmx1clNoYWRvdykgeworICAgIGlmICghZ3JhcGhp
Y3NDb250ZXh0LmdldENUTSgpLnByZXNlcnZlc0F4aXNBbGlnbm1lbnQoKSB8fCBtX3R5cGUgIT0g
Qmx1clNoYWRvdykgewogICAgICAgICBkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoZ3JhcGhp
Y3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIGxheWVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC01MzIsOSArNTMyLDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSb3UKICAgICBkcmF3
UmVjdFNoYWRvd1dpdGhUaWxpbmcoZ3JhcGhpY3NDb250ZXh0LCBzaGFkb3dlZFJlY3QsIHRlbXBs
YXRlU2l6ZSwgZWRnZVNpemUpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRv
dyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCkKK3ZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0KQogewotICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gY2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QoZ3JhcGhpY3NDb250
ZXh0LCByZWN0LCBncmFwaGljc0NvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBs
YXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgRmxvYXRSZQogCiAgICAgLy8gZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyBkb2VzIG5v
dCB3b3JrIHdpdGggcm90YXRpb25zLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NTA0MgotICAgIGlmICghZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5w
cmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwgbV90eXBlICE9IEJsdXJTaGFkb3cpIHsKKyAgICBp
ZiAoIWdyYXBoaWNzQ29udGV4dC5nZXRDVE0oKS5wcmVzZXJ2ZXNBeGlzQWxpZ25tZW50KCkgfHwg
bV90eXBlICE9IEJsdXJTaGFkb3cpIHsKICAgICAgICAgZHJhd0luc2V0U2hhZG93V2l0aG91dFRp
bGluZyhncmFwaGljc0NvbnRleHQsIHJlY3QsIGhvbGVSZWN0LCBsYXllclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNTYwLDcgKzU2MCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d0luc2V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlCiAgICAgZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhncmFwaGljc0NvbnRleHQsIHJlY3Qs
IGhvbGVSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplKTsKIH0KIAotdm9pZCBTaGFkb3dCbHVy
OjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0KQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KQogewogICAgIG1fbGF5
ZXJJbWFnZSA9IFNjcmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIobGF5
ZXJSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFtX2xheWVySW1hZ2UpCkBAIC01NzIsMTkgKzU3Miwx
OSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgYwogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBz
Y3JhdGNoIGJ1ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVk
cwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0
Q2FjaGVkU2hhZG93VmFsdWVzKG1fYmx1clJhZGl1cywgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBidWZmZXJSZWxhdGl2ZVNoYWRvd2VkUmVjdCwgc2hhZG93ZWRSZWN0LnJhZGlp
KCksIG1fbGF5ZXJTaXplKTsKICAgICBpZiAocmVkcmF3TmVlZGVkKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQp
OworICAgICAgICBHcmFwaGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2Ut
PmNvbnRleHQoKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KHNoYWRvd0NvbnRleHQpOwogCiAgICAgICAgIC8vIEFkZCBhIHBpeGVsIHRvIGF2b2lkIGxhdGVy
IGVkZ2UgYWxpYXNpbmcgd2hlbiByb3RhdGVkLgotICAgICAgICBzaGFkb3dDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6
ZS5oZWlnaHQoKSArIDEpKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+dHJhbnNsYXRlKG1fbGF5
ZXJDb250ZXh0VHJhbnNsYXRpb24pOwotICAgICAgICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xh
dGUobV9sYXllckNvbnRleHRUcmFuc2xhdGlvbik7CisgICAgICAgIHNoYWRvd0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIGlm
IChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8oKSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRl
eHQtPmZpbGxSZWN0KHNoYWRvd2VkUmVjdC5yZWN0KCkpOworICAgICAgICAgICAgc2hhZG93Q29u
dGV4dC5maWxsUmVjdChzaGFkb3dlZFJlY3QucmVjdCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBQYXRoIHBhdGg7CiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHNoYWRv
d2VkUmVjdCk7Ci0gICAgICAgICAgICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAg
ICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBibHVyU2hhZG93QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGls
aW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjCiAgICAgU2NyYXRjaEJ1ZmZl
cjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNoQnVmZmVyUHVyZ2UoKTsKIH0KIAotdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpCit2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYg
aG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBtX2xheWVySW1hZ2Ug
PSBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5z
aXplKCkpOwogICAgIGlmICghbV9sYXllckltYWdlKQpAQCAtNjEwLDEyICs2MTAsMTIgQEAgdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIC8vIE9ubHkgcmVkcmF3IGluIHRoZSBzY3JhdGNoIGJ1
ZmZlciBpZiBpdHMgY2FjaGVkIGNvbnRlbnRzIGRvbid0IG1hdGNoIG91ciBuZWVkcwogICAgIGJv
b2wgcmVkcmF3TmVlZGVkID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2V0Q2FjaGVkSW5z
ZXRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGJ1ZmZlclJlbGF0aXZlUmVjdCwgYnVmZmVyUmVsYXRpdmVIb2xlUmVjdCwgaG9sZVJl
Y3QucmFkaWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250
ZXh0KCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihzaGFk
b3dDb250ZXh0KTsKIAogICAgICAgICAvLyBBZGQgYSBwaXhlbCB0byBhdm9pZCBsYXRlciBlZGdl
IGFsaWFzaW5nIHdoZW4gcm90YXRlZC4KLSAgICAgICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVp
Z2h0KCkgKyAxKSk7Ci0gICAgICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0ZShtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRS
ZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBtX2xheWVyU2l6ZS5oZWlnaHQoKSAr
IDEpKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC50cmFuc2xhdGUobV9sYXllckNvbnRleHRUcmFu
c2xhdGlvbik7CiAKICAgICAgICAgUGF0aCBwYXRoOwogICAgICAgICBwYXRoLmFkZFJlY3QocmVj
dCk7CkBAIC02MjQsOSArNjI0LDkgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KGhvbGVSZWN0KTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICBzaGFk
b3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+ZmlsbFBhdGgocGF0aCk7CisgICAgICAgIHNoYWRv
d0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAgc2hhZG93Q29udGV4
dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAg
ICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyU2hhZG93QnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShtX2xheWVyU2l6ZSkpOwogICAgIH0KQEAgLTY2OCw3ICs2Njgs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgIHRoZSBzaGFkb3cuCiAgKi8KIAotdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUsIGNvbnN0IEludFNp
emUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5n
KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQogewogICAgIG1fbGF5ZXJJbWFnZSA9IFNj
cmF0Y2hCdWZmZXI6OnNpbmdsZXRvbigpLmdldFNjcmF0Y2hCdWZmZXIodGVtcGxhdGVTaXplKTsK
ICAgICBpZiAoIW1fbGF5ZXJJbWFnZSkKQEAgLTY4MiwxMSArNjgyLDExIEBAIHZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uCiAgICAgYm9vbCByZWRyYXdOZWVkZWQgPSBTY3JhdGNoQnVmZmVyOjpzaW5n
bGV0b24oKS5zZXRDYWNoZWRJbnNldFNoYWRvd1ZhbHVlcyhtX2JsdXJSYWRpdXMsIG1fY29sb3Is
IG1fY29sb3JTcGFjZSwgdGVtcGxhdGVCb3VuZHMsIHRlbXBsYXRlSG9sZSwgaG9sZVJlY3QucmFk
aWkoKSk7CiAgICAgaWYgKHJlZHJhd05lZWRlZCkgewogICAgICAgICAvLyBEcmF3IHNoYWRvdyBp
bnRvIGEgbmV3IEltYWdlQnVmZmVyLgotICAgICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0Nv
bnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0KTsKLSAgICAgICAgc2hh
ZG93Q29udGV4dC0+Y2xlYXJSZWN0KHRlbXBsYXRlQm91bmRzKTsKLSAgICAgICAgc2hhZG93Q29u
dGV4dC0+c2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgp
OworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoc2hh
ZG93Q29udGV4dCk7CisgICAgICAgIHNoYWRvd0NvbnRleHQuY2xlYXJSZWN0KHRlbXBsYXRlQm91
bmRzKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwor
ICAgICAgICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgcGF0aC5hZGRSZWN0
KHRlbXBsYXRlQm91bmRzKTsKQEAgLTY5NSwxMyArNjk1LDEzIEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZUhvbGUsIGhvbGVSZWN0LnJhZGlpKCkpKTsKIAotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5maWxsUGF0aChwYXRoKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5m
aWxsUGF0aChwYXRoKTsKIAogICAgICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIodGVtcGxh
dGVTaXplKTsKICAgICB9CiAgICAgRmxvYXRTaXplIG9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGlm
IChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBncmFwaGljc0NvbnRleHQtPmdldENUTSgpOworICAgICAgICBBZmZpbmVUcmFu
c2Zvcm0gdHJhbnNmb3JtID0gZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpOwogICAgICAgICBvZmZz
ZXQuc2NhbGUoMSAvIHRyYW5zZm9ybS54U2NhbGUoKSwgMSAvIHRyYW5zZm9ybS55U2NhbGUoKSk7
CiAgICAgfQogCkBAIC03MjAsMTEgKzcyMCwxMSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbgog
ICAgIGV4dGVyaW9yUGF0aC5hZGRSZWN0KGRlc3RIb2xlQm91bmRzKTsKIAogICAgIHsKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250
ZXh0KTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQp
OwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBhdGgoZXh0ZXJpb3JQYXRoKTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBmaWxsU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9FVkVOT0REKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmZpbGxQYXRoKGV4dGVyaW9yUGF0aCk7CiAgICAgfQogICAgIAogICAgIGRyYXdMYXllclBp
ZWNlcyhncmFwaGljc0NvbnRleHQsIGRlc3RIb2xlQm91bmRzLCBob2xlUmVjdC5yYWRpaSgpLCBl
ZGdlU2l6ZSwgdGVtcGxhdGVTaXplLCBJbm5lclNoYWRvdyk7CkBAIC03MzMsNyArNzMzLDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb24KICAgICBTY3JhdGNoQnVmZmVyOjpzaW5nbGV0b24oKS5z
Y2hlZHVsZVNjcmF0Y2hCdWZmZXJQdXJnZSgpOwogfQogCi12b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBJbnRTaXplJiB0ZW1wbGF0
ZVNpemUsIGNvbnN0IEludFNpemUmIGVkZ2VTaXplKQordm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVT
aXplLCBjb25zdCBJbnRTaXplJiBlZGdlU2l6ZSkKIHsKICAgICBhdXRvJiBzY3JhdGNoQnVmZmVy
ID0gU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRj
aEJ1ZmZlci5nZXRTY3JhdGNoQnVmZmVyKHRlbXBsYXRlU2l6ZSk7CkBAIC03NDYsMjUgKzc0Niwy
NSBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIGJvb2wgcmVkcmF3TmVlZGVkID0gc2Ny
YXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMobV9ibHVyUmFkaXVzLCBtX2NvbG9yLCBt
X2NvbG9yU3BhY2UsIHRlbXBsYXRlU2hhZG93LCBzaGFkb3dlZFJlY3QucmFkaWkoKSwgbV9sYXll
clNpemUpOwogICAgIGlmIChyZWRyYXdOZWVkZWQpIHsKICAgICAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byB0aGUgSW1hZ2VCdWZmZXIuCi0gICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29u
dGV4dCA9IG1fbGF5ZXJJbWFnZS0+Y29udGV4dCgpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHNoYWRvd1N0YXRlU2F2ZXIoKnNoYWRvd0NvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHQmIHNoYWRvd0NvbnRleHQgPSBtX2xheWVySW1hZ2UtPmNvbnRleHQoKTsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKHNoYWRvd0Nv
bnRleHQpOwogCi0gICAgICAgIHNoYWRvd0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3QoMCwg
MCwgdGVtcGxhdGVTaXplLndpZHRoKCksIHRlbXBsYXRlU2l6ZS5oZWlnaHQoKSkpOwotICAgICAg
ICBzaGFkb3dDb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAs
IHRlbXBsYXRlU2l6ZS53aWR0aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAg
c2hhZG93Q29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICAgICAgCiAgICAgICAgIGlmIChzaGFkb3dlZFJlY3QucmFkaWkoKS5pc1plcm8o
KSkKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KHRlbXBsYXRlU2hhZG93KTsK
KyAgICAgICAgICAgIHNoYWRvd0NvbnRleHQuZmlsbFJlY3QodGVtcGxhdGVTaGFkb3cpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFBhdGggcGF0aDsKICAgICAgICAgICAgIHBhdGguYWRk
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0ZW1wbGF0ZVNoYWRvdywgc2hhZG93ZWRSZWN0
LnJhZGlpKCkpKTsKLSAgICAgICAgICAgIHNoYWRvd0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgc2hhZG93Q29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGJsdXJBbmRDb2xvclNoYWRvd0J1ZmZlcih0ZW1wbGF0ZVNpemUpOwogICAgIH0KICAg
ICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXQ7CiAgICAgaWYgKHNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKCkpIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGdyYXBoaWNz
Q29udGV4dC0+Z2V0Q1RNKCk7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBn
cmFwaGljc0NvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgIG9mZnNldC5zY2FsZSgxIC8gdHJhbnNm
b3JtLnhTY2FsZSgpLCAxIC8gdHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICB9CiAKQEAgLTc3OSw3
ICs3NzksNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluZyhHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29ucwogICAgIFNjcmF0Y2hCdWZmZXI6OnNp
bmdsZXRvbigpLnNjaGVkdWxlU2NyYXRjaEJ1ZmZlclB1cmdlKCk7CiB9CiAKLXZvaWQgU2hhZG93
Qmx1cjo6ZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd0JvdW5kcywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFk
aWkmIHJhZGlpLCBjb25zdCBJbnRTaXplJiBidWZmZXJQYWRkaW5nLCBjb25zdCBJbnRTaXplJiB0
ZW1wbGF0ZVNpemUsIFNoYWRvd0RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkIFNoYWRvd0JsdXI6
OmRyYXdMYXllclBpZWNlcyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBy
YWRpaSwgY29uc3QgSW50U2l6ZSYgYnVmZmVyUGFkZGluZywgY29uc3QgSW50U2l6ZSYgdGVtcGxh
dGVTaXplLCBTaGFkb3dEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGNvbnN0IEludFNpemUg
dHdpY2VSYWRpdXMgPSBJbnRTaXplKGJ1ZmZlclBhZGRpbmcud2lkdGgoKSAqIDIsIGJ1ZmZlclBh
ZGRpbmcuaGVpZ2h0KCkgKiAyKTsKIApAQCAtNzk1LDY1ICs3OTUsNjUgQEAgdm9pZCBTaGFkb3dC
bHVyOjpkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEZsb2F0UmUKICAgICBpZiAoZGlyZWN0aW9uID09IE91dGVyU2hhZG93KSB7CiAgICAgICAg
IEZsb2F0UmVjdCBzaGFkb3dJbnRlcmlvcihzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBz
aGFkb3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwog
ICAgICAgICBpZiAoIXNoYWRvd0ludGVyaW9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOwotICAg
ICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvciwgbV9jb2xvclNw
YWNlKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFJlY3Qoc2hhZG93SW50ZXJpb3IpOworICAgICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4
dCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1fY29sb3IsIG1f
Y29sb3JTcGFjZSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xlYXJTaGFkb3coKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUmVjdChzaGFkb3dJbnRlcmlvcik7CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoKmdyYXBoaWNzQ29udGV4dCk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
bV9jb2xvciwgbV9jb2xvclNwYWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93
KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29u
dGV4dCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOwogCiAgICAgLy8gTm90
ZSB0aGF0IGRyYXdpbmcgdGhlIEltYWdlQnVmZmVyIGlzIGZhc3RlciB0aGFuIGNyZWF0aW5nIGEg
SW1hZ2UgYW5kIGRyYXdpbmcgdGhhdCwKICAgICAvLyBiZWNhdXNlIEltYWdlQnVmZmVyOjpkcmF3
KCkga25vd3MgdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gY29weSB0aGUgaW1hZ2UgYml0cy4KICAg
ICBGbG9hdFJlY3QgY2VudGVyUmVjdChzaGFkb3dCb3VuZHMueCgpICsgbGVmdFNsaWNlLCBzaGFk
b3dCb3VuZHMueSgpICsgdG9wU2xpY2UsIGNlbnRlcldpZHRoLCBjZW50ZXJIZWlnaHQpOwotICAg
IGNlbnRlclJlY3QgPSBncmFwaGljc0NvbnRleHQtPnJvdW5kVG9EZXZpY2VQaXhlbHMoY2VudGVy
UmVjdCk7CisgICAgY2VudGVyUmVjdCA9IGdyYXBoaWNzQ29udGV4dC5yb3VuZFRvRGV2aWNlUGl4
ZWxzKGNlbnRlclJlY3QpOwogICAgIAogICAgIC8vIFRvcCBzaWRlLgogICAgIEZsb2F0UmVjdCB0
aWxlUmVjdCA9IEZsb2F0UmVjdChsZWZ0U2xpY2UsIDAsIHRlbXBsYXRlU2lkZUxlbmd0aCwgdG9w
U2xpY2UpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChjZW50ZXJSZWN0Lngo
KSwgY2VudGVyUmVjdC55KCkgLSB0b3BTbGljZSwgY2VudGVyUmVjdC53aWR0aCgpLCB0b3BTbGlj
ZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOworICAgIGdyYXBoaWNzQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgdGlsZVJlY3QpOwogCiAgICAgLy8gRHJhdyB0aGUgYm90dG9tIHNpZGUuCiAgICAg
dGlsZVJlY3Quc2V0WSh0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkgLSBib3R0b21TbGljZSk7CiAgICAg
dGlsZVJlY3Quc2V0SGVpZ2h0KGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdC5zZXRZKGNlbnRl
clJlY3QubWF4WSgpKTsKICAgICBkZXN0UmVjdC5zZXRIZWlnaHQoYm90dG9tU2xpY2UpOwotICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3Qs
IHRpbGVSZWN0KTsKIAogICAgIC8vIExlZnQgc2lkZS4KICAgICB0aWxlUmVjdCA9IEZsb2F0UmVj
dCgwLCB0b3BTbGljZSwgbGVmdFNsaWNlLCB0ZW1wbGF0ZVNpZGVMZW5ndGgpOwogICAgIGRlc3RS
ZWN0ID0gRmxvYXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lnko
KSwgbGVmdFNsaWNlLCBjZW50ZXJSZWN0LmhlaWdodCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQt
PmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RS
ZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAg
ICAvLyBSaWdodCBzaWRlLgogICAgIHRpbGVSZWN0LnNldFgodGVtcGxhdGVTaXplLndpZHRoKCkg
LSByaWdodFNsaWNlKTsKICAgICB0aWxlUmVjdC5zZXRXaWR0aChyaWdodFNsaWNlKTsKICAgICBk
ZXN0UmVjdC5zZXRYKGNlbnRlclJlY3QubWF4WCgpKTsKICAgICBkZXN0UmVjdC5zZXRXaWR0aChy
aWdodFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVy
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBUb3AgbGVmdCBjb3JuZXIuCiAg
ICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgMCwgbGVmdFNsaWNlLCB0b3BTbGljZSk7CiAgICAg
ZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC54KCkgLSBsZWZ0U2xpY2UsIGNlbnRlclJl
Y3QueSgpIC0gdG9wU2xpY2UsIGxlZnRTbGljZSwgdG9wU2xpY2UpOwotICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZGVzdFJlY3QsIHRpbGVSZWN0KTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlQnVmZmVy
KG1fbGF5ZXJJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHRpbGVSZWN0KTsK
IAogICAgIC8vIFRvcCByaWdodCBjb3JuZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QodGVt
cGxhdGVTaXplLndpZHRoKCkgLSByaWdodFNsaWNlLCAwLCByaWdodFNsaWNlLCB0b3BTbGljZSk7
CiAgICAgZGVzdFJlY3QgPSBGbG9hdFJlY3QoY2VudGVyUmVjdC5tYXhYKCksIGNlbnRlclJlY3Qu
eSgpIC0gdG9wU2xpY2UsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRl
c3RSZWN0LCB0aWxlUmVjdCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlciht
X2xheWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAK
ICAgICAvLyBCb3R0b20gcmlnaHQgY29ybmVyLgogICAgIHRpbGVSZWN0ID0gRmxvYXRSZWN0KHRl
bXBsYXRlU2l6ZS53aWR0aCgpIC0gcmlnaHRTbGljZSwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIHJpZ2h0U2xpY2UsIGJvdHRvbVNsaWNlKTsKICAgICBkZXN0UmVjdCA9IEZs
b2F0UmVjdChjZW50ZXJSZWN0Lm1heFgoKSwgY2VudGVyUmVjdC5tYXhZKCksIHJpZ2h0U2xpY2Us
IGJvdHRvbVNsaWNlKTsKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CisgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xheWVySW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRlc3RSZWN0LCB0aWxlUmVjdCk7CiAKICAgICAvLyBCb3R0b20gbGVmdCBjb3Ju
ZXIuCiAgICAgdGlsZVJlY3QgPSBGbG9hdFJlY3QoMCwgdGVtcGxhdGVTaXplLmhlaWdodCgpIC0g
Ym90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpOwogICAgIGRlc3RSZWN0ID0gRmxv
YXRSZWN0KGNlbnRlclJlY3QueCgpIC0gbGVmdFNsaWNlLCBjZW50ZXJSZWN0Lm1heFkoKSwgbGVm
dFNsaWNlLCBib3R0b21TbGljZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2VCdWZm
ZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3Qp
OworICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9sYXllckltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwgdGlsZVJlY3QpOwogfQogCiAKQEAgLTg3MywxOCAr
ODczLDE4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1ckFuZENvbG9yU2hhZG93QnVmZmVyKGNvbnN0
IEludFNpemUmIHRlbXBsYXRlU2l6ZSkKICAgICBibHVyU2hhZG93QnVmZmVyKHRlbXBsYXRlU2l6
ZSk7CiAKICAgICAvLyBNYXNrIHRoZSBpbWFnZSB3aXRoIHRoZSBzaGFkb3cgY29sb3IuCi0gICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpzaGFkb3dDb250ZXh0
KTsKLSAgICBzaGFkb3dDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlSW4pOwotICAgIHNoYWRvd0NvbnRleHQtPnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9y
U3BhY2UpOwotICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdCgwLCAwLCB0ZW1w
bGF0ZVNpemUud2lkdGgoKSwgdGVtcGxhdGVTaXplLmhlaWdodCgpKSk7CisgICAgR3JhcGhpY3ND
b250ZXh0JiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHNoYWRvd0NvbnRleHQpOworICAgIHNo
YWRvd0NvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZUluKTsKKyAg
ICBzaGFkb3dDb250ZXh0LnNldEZpbGxDb2xvcihtX2NvbG9yLCBtX2NvbG9yU3BhY2UpOworICAg
IHNoYWRvd0NvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDAsIDAsIHRlbXBsYXRlU2l6ZS53aWR0
aCgpLCB0ZW1wbGF0ZVNpemUuaGVpZ2h0KCkpKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBTaGFk
b3dCbHVyOjpiZWdpblNoYWRvd0xheWVyKEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBsYXllckFyZWEpCitHcmFwaGljc0NvbnRleHQqIFNoYWRvd0JsdXI6OmJlZ2lu
U2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGxh
eWVyQXJlYSkKIHsKICAgICBhZGp1c3RCbHVyUmFkaXVzKGNvbnRleHQpOwogCi0gICAgSW50UmVj
dCBsYXllclJlY3QgPSBjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFy
ZWEsIGNvbnRleHQtPmNsaXBCb3VuZHMoKSk7CisgICAgSW50UmVjdCBsYXllclJlY3QgPSBjYWxj
dWxhdGVMYXllckJvdW5kaW5nUmVjdChjb250ZXh0LCBsYXllckFyZWEsIGNvbnRleHQuY2xpcEJv
dW5kcygpKTsKIAogICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTg5NSwyNSArODk1LDI1IEBAIEdyYXBoaWNzQ29udGV4dCogU2hhZG93Qmx1
cjo6YmVnaW5TaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQgKmNvbnRleHQsIGNvbnN0IEZsCiAg
ICAgc2NyYXRjaEJ1ZmZlci5zZXRDYWNoZWRTaGFkb3dWYWx1ZXMoRmxvYXRTaXplKCksIENvbG9y
OjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UmVjdCgpLCBGbG9hdFJvdW5kZWRSZWN0
OjpSYWRpaSgpLCBtX2xheWVyU2l6ZSk7CiAgICAgbV9sYXllckltYWdlID0gc2NyYXRjaEJ1ZmZl
ci5nZXRTY3JhdGNoQnVmZmVyKGxheWVyUmVjdC5zaXplKCkpOwogCi0gICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gbV9sYXllckltYWdlLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93
Q29udGV4dC0+c2F2ZSgpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc2hhZG93Q29udGV4dCA9IG1f
bGF5ZXJJbWFnZS0+Y29udGV4dCgpOworICAgIHNoYWRvd0NvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gQWRkIGEgcGl4ZWwgdG8gYXZvaWQgbGF0ZXIgZWRnZSBhbGlhc2luZyB3aGVuIHJvdGF0ZWQu
Ci0gICAgc2hhZG93Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBtX2xheWVyU2l6
ZS53aWR0aCgpICsgMSwgbV9sYXllclNpemUuaGVpZ2h0KCkgKyAxKSk7CisgICAgc2hhZG93Q29u
dGV4dC5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1fbGF5ZXJTaXplLndpZHRoKCkgKyAxLCBt
X2xheWVyU2l6ZS5oZWlnaHQoKSArIDEpKTsKIAotICAgIHNoYWRvd0NvbnRleHQtPnRyYW5zbGF0
ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsKLSAgICByZXR1cm4gc2hhZG93Q29udGV4dDsK
KyAgICBzaGFkb3dDb250ZXh0LnRyYW5zbGF0ZShtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uKTsK
KyAgICByZXR1cm4gJnNoYWRvd0NvbnRleHQ7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6ZW5kU2hh
ZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBTaGFkb3dCbHVyOjplbmRT
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgbV9sYXllckltYWdl
LT5jb250ZXh0KCktPnJlc3RvcmUoKTsKKyAgICBtX2xheWVySW1hZ2UtPmNvbnRleHQoKS5yZXN0
b3JlKCk7CiAKICAgICBibHVyQW5kQ29sb3JTaGFkb3dCdWZmZXIoZXhwYW5kZWRJbnRTaXplKG1f
bGF5ZXJTaXplKSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmUoKmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlKGNvbnRleHQp
OwogCi0gICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIobV9sYXllckltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBGbG9hdFJlY3Qocm91bmRl
ZEludFBvaW50KG1fbGF5ZXJPcmlnaW4pLCBtX2xheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIG1fbGF5ZXJTaXplKSwgY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCkpOworICAg
IGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2xh
eWVySW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bV9sYXllck9yaWdpbiksIG1fbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9s
YXllclNpemUpLCBjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpKTsKIAogICAgIG1fbGF5ZXJJ
bWFnZSA9IDA7CiAgICAgU2NyYXRjaEJ1ZmZlcjo6c2luZ2xldG9uKCkuc2NoZWR1bGVTY3JhdGNo
QnVmZmVyUHVyZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRv
d0JsdXIuaAppbmRleCBlNjI2YjA3NDhkMjIwYThiYzg1NTJhOTFjMTIyZTRiZTc2NjNmNjEzLi4y
MDUwYWI5Y2RmYWYzOWY3YzY2MGExOTdmYTUyZWJiMGI1MjQ5YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCkBAIC02MCwxMSArNjAsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1z
OyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5T
aGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSk7
Ci0gICAgdm9pZCBlbmRTaGFkb3dMYXllcihHcmFwaGljc0NvbnRleHQqKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGJlZ2luU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXllckFyZWEpOworICAgIHZvaWQgZW5kU2hhZG93TGF5ZXIoR3JhcGhpY3NDb250ZXh0
Jik7CiAKLSAgICB2b2lkIGRyYXdSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCk7
CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJv
dW5kZWRSZWN0Jik7CisgICAgdm9pZCBkcmF3SW5zZXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QpOwogCiAg
ICAgdm9pZCBibHVyTGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiwgY29uc3QgSW50U2l6ZSYsIGlu
dCBzdHJpZGUpOwogCkBAIC03NSwyNSArNzUsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIAotICAgIHZvaWQgZHJhd1NoYWRvd0J1ZmZl
cihHcmFwaGljc0NvbnRleHQqKTsKKyAgICB2b2lkIGRyYXdTaGFkb3dCdWZmZXIoR3JhcGhpY3ND
b250ZXh0Jik7CiAKLSAgICB2b2lkIGFkanVzdEJsdXJSYWRpdXMoR3JhcGhpY3NDb250ZXh0Kik7
CisgICAgdm9pZCBhZGp1c3RCbHVyUmFkaXVzKEdyYXBoaWNzQ29udGV4dCYpOwogICAgIAogICAg
IGVudW0gU2hhZG93RGlyZWN0aW9uIHsKICAgICAgICAgT3V0ZXJTaGFkb3csCiAgICAgICAgIElu
bmVyU2hhZG93CiAgICAgfTsKICAgICAKLSAgICBJbnRSZWN0IGNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgbGF5ZXJBcmVhLCBjb25z
dCBJbnRSZWN0JiBjbGlwUmVjdCk7CisgICAgSW50UmVjdCBjYWxjdWxhdGVMYXllckJvdW5kaW5n
UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGxheWVyQXJlYSwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QpOwogICAgIEludFNpemUgdGVtcGxhdGVTaXplKGNvbnN0IEludFNp
emUmIGJsdXJyZWRFZGdlU2l6ZSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmKSBjb25z
dDsKIAotICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QpOwot
ICAgIHZvaWQgZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBJbnRTaXplJiBzaGFkb3dUZW1wbGF0ZVNpemUsIGNv
bnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9pZCBkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEludFNp
emUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3QgSW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsK
IAotICAgIHZvaWQgZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGluZyhHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29u
c3QgSW50UmVjdCYgbGF5ZXJSZWN0KTsKLSAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFNpemUmIHNoYWRvd1RlbXBsYXRlU2l6ZSwgY29uc3Qg
SW50U2l6ZSYgYmx1cnJlZEVkZ2VTaXplKTsKKyAgICB2b2lkIGRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCk7CisgICAgdm9p
ZCBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBJbnRTaXplJiBz
aGFkb3dUZW1wbGF0ZVNpemUsIGNvbnN0IEludFNpemUmIGJsdXJyZWRFZGdlU2l6ZSk7CiAgICAg
Ci0gICAgdm9pZCBkcmF3TGF5ZXJQaWVjZXMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0JiBzaGFkb3dCb3VuZHMsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiwgY29uc3Qg
SW50U2l6ZSYgcm91bmRlZFJhZGl1cywgY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplLCBTaGFk
b3dEaXJlY3Rpb24pOworICAgIHZvaWQgZHJhd0xheWVyUGllY2VzKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93Qm91bmRzLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYsIGNvbnN0IEludFNpemUmIHJvdW5kZWRSYWRpdXMsIGNvbnN0IEludFNpemUmIHRlbXBs
YXRlU2l6ZSwgU2hhZG93RGlyZWN0aW9uKTsKICAgICAKICAgICB2b2lkIGJsdXJTaGFkb3dCdWZm
ZXIoY29uc3QgSW50U2l6ZSYgdGVtcGxhdGVTaXplKTsKICAgICB2b2lkIGJsdXJBbmRDb2xvclNo
YWRvd0J1ZmZlcihjb25zdCBJbnRTaXplJiB0ZW1wbGF0ZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IGM0NzczZDkzMDJlMDc1OGRmZjhjYjBm
NTIyNmE4M2MyZjMzMGMzZWIuLjQ5ZWU2ZThmZTRiNDcyNjNhOTAxMTVjYzY5ZjVmZWEzM2YyZjhk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAgLTEz
NSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQogICAgICAgICB2
aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0ZXIoY29uc3QgRm9udENhc2NhZGUm
LCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIsIGJvb2wgbWlycm9yLCBpbnQgY3Vy
cmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5ndGgsIFN0cmluZyYgbm9ybWFsaXpl
ZFNwYWNlc1N0cmluZ0NhY2hlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3U1ZHR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZvbnQqLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGlu
dCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgZmxvYXQgZmxvYXRXaWR0aFVzaW5nU1ZHRm9udChj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBpbnQmIGNoYXJzQ29uc3VtZWQsIFN0
cmluZyYgZ2x5cGhOYW1lKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhcHBseVNW
R0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGludCBm
cm9tKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEdseXBoVG9Q
YXRoVHJhbnNsYXRvcj4gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IEZvbnQmLCBj
b25zdCBUZXh0UnVuKiwgY29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IG51bUdseXBo
cywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAppbmRleCBlMTkwZGU1OWFmZWVmMTMy
NzU2ZmQ0ZTc3NzhmZTdmOGQ4MjRmNDlhLi5kMDk0MThmZDU0N2ZlOWJhNDRiNTY0M2VkMDBiMjRk
NDExZTY1ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCkBAIC0xODUsOCArMTg1LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGUgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJl
bmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IGY0YzY2
Yzc4YzhlY2VhYjFhOGFjOGRiNTNlNzAxYjVlNjg4OTViNzAuLjI3ZjZiMzFmMDM4Y2U1MjQwODNm
ZWY3NjljMGViODJmMWE4MWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtODMyLDEwICs4MzIs
MTAgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6YXMKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJBVkFz
c2V0U3RhdHVzTG9hZGVkOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9k
ZSgpID09IE1lZGlhUmVuZGVyaW5nVG9MYXllciAmJiAhaW1hZ2VHZW5lcmF0b3IobV9hdmZXcmFw
cGVyKSkgewpAQCAtODQ3LDEwICs4NDcsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXgKICAg
ICBwYWludChjb250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCBj
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlR2VuZXJhdG9yKG1fYXZmV3JhcHBl
cikpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFp
bnQoJXApIiwgdGhpcyk7CkBAIC04NTgsMTMgKzg1OCwxMyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsbwogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZSA9IG1fYXZmV3JhcHBlci0+Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGN1cnJl
bnRNZWRpYVRpbWUoKSwgcmVjdCk7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSAr
IHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwg
LTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CisgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBjb250ZXh0
LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAg
IEZsb2F0UmVjdCBwYWludFJlY3QoRmxvYXRQb2ludCgpLCByZWN0LnNpemUoKSk7Ci0gICAgICAg
IENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFr
ZSgwLCAwLCBwYWludFJlY3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0
KCkpOwotICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVj
dC53aWR0aCgpLCBwYWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIGNv
bnRleHQucmVzdG9yZSgpOwogICAgICAgICBpbWFnZSA9IDA7CiAgICAgfQogICAgIHNldERlbGF5
Q2FsbGJhY2tzKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKaW5kZXggNmNjOWE1NTNmNjM2Nzk2OWE1NGU2
ODBhNWYyMWRlZDlmZWM0MWZhZi4uZTNkYjhkNTBiMzg1YTI5MWI2ODI4ODRmY2IxZTQ2M2EzM2Jk
YjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9y
bUxheWVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgbWVk
aWFUaW1lRm9yVGltZVZhbHVlKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5oCmluZGV4IDlmNTgxZWRmYWQ2OGY4N2MyZDQ1MzUyMmRmMjJlOGU0NjM1M2I3OWUuLmY4
YmFkZGRmNDI4YzhjNjQwYTU4NDk2Nzc0M2VkYjNkZDNkODVkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLmgKQEAgLTE1Miw4ICsxNTIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBv
dmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKICAgICB2b2lkIGRl
c3Ryb3lJbWFnZUdlbmVyYXRvcigpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJ
bWFnZUZvclRpbWVJblJlY3QoZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRXaXRoSW1hZ2VHZW5lcmF0b3IoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX1ZJREVPX09VVFBVVCkKICAg
ICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CkBAIC0yMzIsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gY3JlYXRlUGl4ZWxCdWZmZXIoKTsKICAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIGJvb2wgdmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpOwotICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJ
bWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tCmluZGV4IDY1ZmI0ZDI5NjMyNDBmZWJjODVmMTc5OTFlNDc3ZDUyZmE0ZTNl
ZjkuLjUwM2M0ZmIwMmI5YzRlYWRjMDBmMzc1NGY1MzUwNDNmZTQ2OWU3ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQpAQCAtMTQ5NCw5ICsxNDk0LDkgQEAgbG9uZyBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjphc3NldEVycm9yQ29kZSgpIGNvbnN0CiAgICAgcmV0dXJuIFtl
cnJvciBjb2RlXTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgp
IHx8IGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMTUxNSw5ICsxNTE1LDkgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnQKICAgICBtX3ZpZGVvRnJhbWVIYXNEcmF3biA9IHRydWU7CiB9CiAK
LXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCBjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBXZSBjYW4gaWdub3JlIHRoZSByZXF1ZXN0IGlmIHdlIGFyZSBhbHJlYWR5IHJlbmRlcmlu
ZyB0byBhIGxheWVyLgpAQCAtMTUzMSwxOCArMTUzMSwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRgogICAgIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aEltYWdl
R2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhJbWFn
ZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwYWludFdpdGhJbWFnZUdlbmVyYXRvciglcCkiLCB0aGlzKTsKIAogICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBpbWFnZSA9IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgp
LCByZWN0KTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJl
Y3QueCgpLCByZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKLSAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgICAgICBjb250ZXh0LnRyYW5z
bGF0ZShyZWN0LngoKSwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC5zZXRJbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOwogICAgICAgICBJbnRSZWN0
IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZShyZWN0LndpZHRoKCksIHJlY3QuaGVp
Z2h0KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBwYWludFJlY3QuaGVp
Z2h0KCkpLCBpbWFnZS5nZXQoKSk7CisgICAgICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIHBhaW50UmVjdC53aWR0aCgpLCBw
YWludFJlY3QuaGVpZ2h0KCkpLCBpbWFnZS5nZXQoKSk7CiAgICAgICAgIGltYWdlID0gMDsKICAg
ICB9CiB9CkBAIC0yMzIzLDcgKzIzMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZSgpCiAgICAgICAgIG1fbGFzdEltYWdlID0gY3Jl
YXRlSW1hZ2VGcm9tUGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIuZ2V0KCkpOwogfQogCi12b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgb3V0cHV0UmVjdCkK
IHsKICNpZiAoIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEwMDApCiAgICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgIW1fbGFzdEltYWdlICYmICF2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkp
CkBAIC0yMzQxLDEzICsyMzQxLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0KiBjCiAKICAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dCglcCkiLCB0aGlzKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QoMCwgMCwgQ0dJbWFnZUdl
dFdpZHRoKG1fbGFzdEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChtX2xhc3RJbWFnZS5n
ZXQoKSkpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9IFtmaXJzdEVuYWJs
ZWRWaWRlb1RyYWNrIHByZWZlcnJlZFRyYW5zZm9ybV07CiAgICAgRmxvYXRSZWN0IHRyYW5zZm9y
bWVkT3V0cHV0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS5tYXBSZWN0KG91dHB1dFJl
Y3QpOwogCi0gICAgY29udGV4dC0+Y29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKLSAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsK
KyAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7CisgICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UobV9sYXN0SW1hZ2UuZ2V0KCksIGltYWdlUmVjdC5zaXplKCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IsIHRyYW5zZm9ybWVkT3V0cHV0UmVjdCwgaW1hZ2VSZWN0KTsKIAogICAgIC8v
IElmIHdlIGhhdmUgY3JlYXRlZCBhbiBBVkFzc2V0SW1hZ2VHZW5lcmF0b3IgaW4gdGhlIHBhc3Qg
ZHVlIHRvIG1fdmlkZW9PdXRwdXQgbm90IGhhdmluZyBhbiBhdmFpbGFibGUKICAgICAvLyB2aWRl
byBmcmFtZSwgZGVzdHJveSBpdCBub3cgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVlZGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhNTc1MzRmMjU4OTc5NjMzNjZhNTA0N2Y2NTgwZjI3
OTZhYzYwNTYyLi41MzcxZDY2MjdlY2UxNDNkNTk4ZTU0OGE1ZmU5MGIzM2I3M2NhMDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMubW0KaW5kZXggYzgwNWIzYjI0NWUzNzRmNzkxMDVkYWQ4NzU1NWNmYWRhZmM0ZjAzZS4uZDc3
NzgyODI5NWM2MzBhMTk4NGZmZGY5OWE0MjJjNDFjNTBhMTdmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQpAQCAtNTI0LDEyICs1MjQsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCiAgICAgLy8gTm8tb3Au
CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakM6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpCiB7CiAgICAgLy8gRklYTUUoMTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQog
Ci12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6cGFpbnRDdXJyZW50
RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUlu
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKQogewogICAgIC8vIEZJ
WE1FKDEyNTE1Nyk6IEltcGxlbWVudCBwYWludGluZy4KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
LmgKaW5kZXggNWFlNWI1NTA5ZWQxZmMwOTk1OGQ1MGYyNmY1N2IwNGE1MzlmZWUwNi4uNWEwMDEy
ZWM5ZGEyOTg5M2JmNTgyYjc4Yzk1MTE1OWEwMjZjNDk4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLmgKQEAgLTEyOCw4ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTaXplKGNv
bnN0IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxl
cmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCmluZGV4IGMyNmIzMzU5NzM0ZDIzNGFmZDc5MjI5MmFmZDkzNTcwNDZlMGU2ODkuLjAxZmYy
MmMwOTlmZGI5YTFkOWRkNzkyNTg1YWJjNWQ4ZjQ5N2JiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakMubW0KQEAgLTM2MiwxMiArMzYyLDEyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmNyZWF0ZUltYWdlRnJvbVNhbXBsCiAg
ICAgcmV0dXJuIHF1YXJ0ekltYWdlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIHJlY3QpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
CiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoY29udGV4dCwgcmVjdCk7CiB9CiAKLXZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250
ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiAgICAgLy8gRklYTUUo
MTI1MTU3KTogSW1wbGVtZW50IHBhaW50aW5nLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRl
eCBmMGQzYTdhNzJkYjkyZmRlMWQxYjVmOTkzOGIzYzBjMWU3YWQ2MWYxLi5mNWUzZGUwZTUzNGIw
MTZlZGY2MWI0MGNlNGZhMWE1Mjk1ZDRhNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAt
NjQsNyArNjQsNyBAQCBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUGFzc1JlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+IG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKgogICAgIGNoZWNrRm9yU29saWRD
b2xvcigpOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsCiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKQogewogICAgIGlmICghZHN0LndpZHRoKCkgfHwgIWRz
dC5oZWlnaHQoKSB8fCAhc3JjLndpZHRoKCkgfHwgIXNyYy5oZWlnaHQoKSkKQEAgLTgxLDEzICs4
MSwxMyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0
IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCiAgICAgaWYgKG9wID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZU5vcm1hbCAmJiAhZnJhbWVIYXNBbHBoYUF0
SW5kZXgobV9jdXJyZW50RnJhbWUpKQotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgY29udGV4dC0+c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0
ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCiAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gY2Fpcm9TdXJmYWNlU2l6ZShz
dXJmYWNlLmdldCgpKTsKQEAgLTEwNCw5ICsxMDQsOSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZs
bwogCiAgICAgaWYgKGZyYW1lT3JpZW50YXRpb24gIT0gRGVmYXVsdEltYWdlT3JpZW50YXRpb24p
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJl
Y3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3Qu
eSgpKTsKICAgICAgICAgZHN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAg
ICBjb250ZXh0LT5jb25jYXRDVE0oZnJhbWVPcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVs
dChkc3RSZWN0LnNpemUoKSkpOworICAgICAgICBjb250ZXh0LmNvbmNhdENUTShmcmFtZU9yaWVu
dGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdFJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlm
IChmcmFtZU9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdo
dCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8v
IHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQg
dG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIGNvbnRleHQpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UuZ2V0KCksIGRzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgY29udGV4dCk7CiAKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVy
KCktPmRpZERyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCBhYTEwYzY1YzU2ODQzZTUwMjgwNjhhMzlh
ODcwMjAyYzdiMTRjY2NlLi5mYzUwMzJiNTQ1YWI0NmI2YzdmMjM0ZmZjMTc4NDUzZWU0ODQyOGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Zv
bnRDYWlyby5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNUb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBpbnQgbnVtR2x5cGhzKQorc3Rh
dGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBjb25zdCBGb250
JiBmb250LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCiB7CiAgICAg
Y2Fpcm9fbWF0cml4X3Qgb3JpZ2luYWxUcmFuc2Zvcm07Ci0gICAgZmxvYXQgc3ludGhldGljQm9s
ZE9mZnNldCA9IGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBmbG9hdCBzeW50aGV0
aWNCb2xkT2Zmc2V0ID0gZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpCiAgICAgICAgIGNhaXJvX2dldF9tYXRyaXgoY29udGV4dCwgJm9yaWdp
bmFsVHJhbnNmb3JtKTsKIAotICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjb250ZXh0LCBmb250
LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOworICAgIGNhaXJvX3NldF9zY2FsZWRfZm9u
dChjb250ZXh0LCBmb250LnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgY2Fpcm9f
c2hvd19nbHlwaHMoY29udGV4dCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogCiAgICAgaWYgKHN5bnRo
ZXRpY0JvbGRPZmZzZXQpIHsKQEAgLTY2LDIxICs2NiwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIEdseXBoQnVm
ZmVyRwogICAgICAgICBjYWlyb19zZXRfbWF0cml4KGNvbnRleHQsICZvcmlnaW5hbFRyYW5zZm9y
bSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBGb250KiBmb250
LCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGludCBudW1HbHlwaHMpCitzdGF0aWMgdm9pZCBk
cmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgR2x5cGhCdWZmZXJHbHlwaCogZ2x5
cGhzLCBpbnQgbnVtR2x5cGhzKQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVy
JiBzaGFkb3cgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIo
KTsKIAotICAgIGlmICghKGdyYXBoaWNzQ29udGV4dC0+dGV4dERyYXdpbmdNb2RlKCkgJiBUZXh0
TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCisgICAg
aWYgKCEoZ3JhcGhpY3NDb250ZXh0LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB8
fCBzaGFkb3cudHlwZSgpID09IFNoYWRvd0JsdXI6Ok5vU2hhZG93KQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoIWdyYXBoaWNzQ29udGV4dC0+bXVzdFVzZVNoYWRvd0JsdXIoKSkgeworICAg
IGlmICghZ3JhcGhpY3NDb250ZXh0Lm11c3RVc2VTaGFkb3dCbHVyKCkpIHsKICAgICAgICAgLy8g
T3B0aW1pemUgbm9uLWJsdXJyeSBzaGFkb3dzLCBieSBqdXN0IGRyYXdpbmcgdGV4dCB3aXRob3V0
IHRoZSBTaGFkb3dCbHVyLgotICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9
IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGdyYXBoaWNz
Q29udGV4dC0+c3RhdGUoKS5zaGFkb3dPZmZzZXQpOworICAgICAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0KGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd09mZnNldCk7CiAgICAgICAgIGNh
aXJvX3RyYW5zbGF0ZShjb250ZXh0LCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKLSAgICAgICAgc2V0U291cmNlUkdCQUZyb21Db2xvcihjb250ZXh0LCBncmFw
aGljc0NvbnRleHQtPnN0YXRlKCkuc2hhZG93Q29sb3IpOworICAgICAgICBzZXRTb3VyY2VSR0JB
RnJvbUNvbG9yKGNvbnRleHQsIGdyYXBoaWNzQ29udGV4dC5zdGF0ZSgpLnNoYWRvd0NvbG9yKTsK
ICAgICAgICAgZHJhd0dseXBoc1RvQ29udGV4dChjb250ZXh0LCBmb250LCBnbHlwaHMsIG51bUds
eXBocyk7CiAKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjb250ZXh0KTsKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgRmxvYXRQb2ludCYKICAgICB9CiAKICAgICBjYWlyb190ZXh0X2V4dGVu
dHNfdCBleHRlbnRzOwotICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC0+
cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpLCBnbHlwaHMsIG51bUdseXBocywgJmV4dGVudHMp
OworICAgIGNhaXJvX3NjYWxlZF9mb250X2dseXBoX2V4dGVudHMoZm9udC5wbGF0Zm9ybURhdGEo
KS5zY2FsZWRGb250KCksIGdseXBocywgbnVtR2x5cGhzLCAmZXh0ZW50cyk7CiAgICAgRmxvYXRS
ZWN0IGZvbnRFeHRlbnRzUmVjdChwb2ludC54KCkgKyBleHRlbnRzLnhfYmVhcmluZywgcG9pbnQu
eSgpICsgZXh0ZW50cy55X2JlYXJpbmcsIGV4dGVudHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0KTsK
IAogICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3cuYmVnaW5T
aGFkb3dMYXllcihncmFwaGljc0NvbnRleHQsIGZvbnRFeHRlbnRzUmVjdCkpIHsKQEAgLTk3LDEw
ICs5NywxMCBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFBvaW50JgogICAgIH0KIH0KIAotdm9pZCBGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQq
IGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQgRm9udENhc2NhZGU6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCiAgICAgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGlmICghZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2l6ZSgpKQorICAgIGlmICghZm9udC5wbGF0Zm9ybURhdGEoKS5zaXplKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEdseXBoQnVmZmVyR2x5cGgqIGdseXBocyA9IGNvbnN0
X2Nhc3Q8R2x5cGhCdWZmZXJHbHlwaCo+KGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSk7CkBAIC0x
MTIsMTQgKzExMiwxNCBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBvZmZzZXQg
Kz0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGZyb20gKyBpKS53aWR0aCgpOwogICAgIH0KIAotICAg
IFBsYXRmb3JtQ29udGV4dENhaXJvKiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKKyAgICBQbGF0Zm9ybUNvbnRleHRDYWlybyogcGxhdGZvcm1Db250ZXh0ID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBkcmF3R2x5cGhzU2hhZG93KGNvbnRleHQs
IHBvaW50LCBmb250LCBnbHlwaHMsIG51bUdseXBocyk7CiAKICAgICBjYWlyb190KiBjciA9IHBs
YXRmb3JtQ29udGV4dC0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKIAotICAgIGlmIChjb250
ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIFRleHRNb2RlRmlsbCkgewotICAgICAgICBwbGF0Zm9y
bUNvbnRleHQtPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQtPnN0YXRlKCksIFBsYXRmb3JtQ29u
dGV4dENhaXJvOjpBZGp1c3RQYXR0ZXJuRm9yR2xvYmFsQWxwaGEpOworICAgIGlmIChjb250ZXh0
LnRleHREcmF3aW5nTW9kZSgpICYgVGV4dE1vZGVGaWxsKSB7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dC0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRD
YWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICAgICAgZHJhd0dseXBoc1Rv
Q29udGV4dChjciwgZm9udCwgZ2x5cGhzLCBudW1HbHlwaHMpOwogICAgIH0KIApAQCAtMTI3LDEy
ICsxMjcsMTIgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEcKICAgICAvLyB0d2ljZSB0aGUgc2l6
ZSBvZiB0aGUgd2lkdGggb2YgdGhlIHRleHQgd2Ugd2lsbCBub3QgYXNrIGNhaXJvIHRvIHN0cm9r
ZQogICAgIC8vIHRoZSB0ZXh0IGFzIGV2ZW4gb25lIHNpbmdsZSBzdHJva2Ugd291bGQgY292ZXIg
dGhlIGZ1bGwgd2R0aCBvZiB0aGUgdGV4dC4KICAgICAvLyAgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc1OS4KLSAgICBpZiAoY29udGV4dC0+dGV4dERyYXdp
bmdNb2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LT5zdHJva2VUaGlja25lc3MoKSA8
IDIgKiBvZmZzZXQpIHsKLSAgICAgICAgcGxhdGZvcm1Db250ZXh0LT5wcmVwYXJlRm9yU3Ryb2tp
bmcoY29udGV4dC0+c3RhdGUoKSk7Ci0gICAgICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKGNyLCBj
b250ZXh0LT5zdHJva2VUaGlja25lc3MoKSk7CisgICAgaWYgKGNvbnRleHQudGV4dERyYXdpbmdN
b2RlKCkgJiBUZXh0TW9kZVN0cm9rZSAmJiBjb250ZXh0LnN0cm9rZVRoaWNrbmVzcygpIDwgMiAq
IG9mZnNldCkgeworICAgICAgICBwbGF0Zm9ybUNvbnRleHQtPnByZXBhcmVGb3JTdHJva2luZyhj
b250ZXh0LnN0YXRlKCkpOworICAgICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgY29udGV4
dC5zdHJva2VUaGlja25lc3MoKSk7CiAKICAgICAgICAgLy8gVGhpcyBtYXkgZGlzdHVyYiB0aGUg
Q1RNLCBidXQgd2UgYXJlIGdvaW5nIHRvIGNhbGwgY2Fpcm9fcmVzdG9yZSBzb29uIGFmdGVyLgot
ICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoY3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNj
YWxlZEZvbnQoKSk7CisgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChjciwgZm9udC5wbGF0
Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRoKGNyLCBn
bHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGNhaXJvX3N0cm9rZShjcik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
SGFyZmJ1enpORy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm9IYXJmYnV6ek5HLmNwcAppbmRleCA2Nzg0MGM1ZTk0ZmZmZmUzZjIzNmYwYjgxMjJh
MjIwMWViYWU1M2VkLi40ZmVjMWFhZWIyZWQ5ZDRiNzZlOTM0MzkyZjRlMzJhODYxOWFlOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm9IYXJmYnV6ek5HLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm9IYXJmYnV6ek5HLmNwcApAQCAtNTIsNyArNTIsNyBAQCBmbG9hdCBGb250
Q2FzY2FkZTo6Z2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVu
JiBydW4sIGludCwgaQogICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJh
d0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVu
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0
IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50
IHRvKSBjb25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMg
KyBhZHZhbmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBn
bHlwaEJ1ZmZlcjsKQEAgLTcwLDcgKzcwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21w
bGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAg
ICByZXR1cm4gc3RhcnRQb2ludC54KCkgLSBzdGFydFg7CiB9CiAKLXZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiAvKiBjb250
ZXh0ICovLCBjb25zdCBUZXh0UnVuJiAvKiBydW4gKi8sIGNvbnN0IEF0b21pY1N0cmluZyYgLyog
bWFyayAqLywgY29uc3QgRmxvYXRQb2ludCYgLyogcG9pbnQgKi8sIGludCAvKiBmcm9tICovLCBp
bnQgLyogdG8gKi8pIGNvbnN0Cit2b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0Zv
ckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCYgLyogY29udGV4dCAqLywgY29uc3QgVGV4dFJ1
biYgLyogcnVuICovLCBjb25zdCBBdG9taWNTdHJpbmcmIC8qIG1hcmsgKi8sIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIHBvaW50ICovLCBpbnQgLyogZnJvbSAqLywgaW50IC8qIHRvICovKSBjb25zdAog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggZjhjN2M5NjBmZDlmOWRmNTEzNWVlYjI0OTIzNmQ5Yjc0OGNlZmRkNi4uMmVjMGZiOTlk
YzQ5Y2ZjYzQ1MGI1ZTlkNmE3NWI4MjQzZTFhN2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtODksMTQgKzg5LDE0IEBAIGVudW0gUGF0aERyYXdpbmdTdHlsZSB7CiAgICAg
RmlsbEFuZFN0cm9rZSA9IEZpbGwgKyBTdHJva2UKIH07CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhd2luZ1N0eWxlKQorc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5bGUpCiB7Ci0gICAg
U2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0Js
dXIoKTsKKyAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LT5zaGFkb3dCbHVyKCk7CiAgICAgaWYgKHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgZXh0ZW50cyBv
ZiB0aGUgcmVuZGVyZWQgc29saWQgcGF0aHMuCi0gICAgY2Fpcm9fdCogY2Fpcm9Db250ZXh0ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fpcm9Db250
ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Y2Fpcm9fcGF0aF90LCB2b2lkKCopKGNhaXJvX3BhdGhfdCopPiBwYXRoKGNhaXJvX2NvcHlf
cGF0aChjYWlyb0NvbnRleHQpLCBbXShjYWlyb19wYXRoX3QqIHBhdGgpIHsKICAgICAgICAgY2Fp
cm9fcGF0aF9kZXN0cm95KHBhdGgpOwogICAgIH0pOwpAQCAtMTI5LDE0ICsxMjksMTQgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGF0aERyYXdpbmdTdHlsZSBkcmEKICAgICBpZiAoZHJhd2luZ1N0eWxlICYgRmlsbCkgewogICAg
ICAgICBjYWlyb19zYXZlKGNhaXJvU2hhZG93Q29udGV4dCk7CiAgICAgICAgIGNhaXJvX2FwcGVu
ZF9wYXRoKGNhaXJvU2hhZG93Q29udGV4dCwgcGF0aC5nZXQoKSk7Ci0gICAgICAgIHNoYWRvd0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yRmlsbGluZyhjb250ZXh0LT5zdGF0
ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6Tm9BZGp1c3RtZW50KTsKKyAgICAgICAgc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JGaWxsaW5nKGNvbnRleHQuc3Rh
dGUoKSwgUGxhdGZvcm1Db250ZXh0Q2Fpcm86Ok5vQWRqdXN0bWVudCk7CiAgICAgICAgIGNhaXJv
X2ZpbGwoY2Fpcm9TaGFkb3dDb250ZXh0KTsKICAgICAgICAgY2Fpcm9fcmVzdG9yZShjYWlyb1No
YWRvd0NvbnRleHQpOwogICAgIH0KIAogICAgIGlmIChkcmF3aW5nU3R5bGUgJiBTdHJva2UpIHsK
ICAgICAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9TaGFkb3dDb250ZXh0LCBwYXRoLmdldCgp
KTsKLSAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JT
dHJva2luZyhjb250ZXh0LT5zdGF0ZSgpLCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6RG9Ob3RQcmVz
ZXJ2ZUFscGhhKTsKKyAgICAgICAgc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBy
ZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCksIFBsYXRmb3JtQ29udGV4dENhaXJvOjpE
b05vdFByZXNlcnZlQWxwaGEpOwogICAgICAgICBjYWlyb19zdHJva2UoY2Fpcm9TaGFkb3dDb250
ZXh0KTsKICAgICB9CiAKQEAgLTE0OSwyOCArMTQ5LDI4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhdGhEcmF3aW5nU3R5bGUg
ZHJhCiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoY2Fpcm9Db250ZXh0LCBwYXRoLmdldCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSB2b2lkIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBmaWxsQ3VycmVudENhaXJvUGF0aChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAKLSAgICBjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC0+c3RhdGUoKSwgUGxhdGZv
cm1Db250ZXh0Q2Fpcm86OkFkanVzdFBhdHRlcm5Gb3JHbG9iYWxBbHBoYSk7CisgICAgY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvckZpbGxpbmcoY29udGV4dC5zdGF0ZSgpLCBQ
bGF0Zm9ybUNvbnRleHRDYWlybzo6QWRqdXN0UGF0dGVybkZvckdsb2JhbEFscGhhKTsKICAgICBj
YWlyb19maWxsKGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZEZpbGxDdXJyZW50Q2Fpcm9QYXRo
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF0aFNoYWRvdyhjb250ZXh0
LCBGaWxsKTsKICAgICBmaWxsQ3VycmVudENhaXJvUGF0aChjb250ZXh0KTsKIH0KIAotc3RhdGlj
IGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorc3RhdGljIGlubGluZSB2b2lkIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRD
YWlyb1BhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGRyYXdQYXRoU2hhZG93
KGNvbnRleHQsIFN0cm9rZSk7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTdHJva2luZyhjb250ZXh0LT5zdGF0ZSgpKTsKLSAgICBjYWlyb19zdHJva2UoY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCktPnByZXBhcmVGb3JTdHJva2luZyhjb250ZXh0LnN0YXRlKCkpOworICAgIGNhaXJvX3N0cm9r
ZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
OjpHcmFwaGljc0NvbnRleHQoY2Fpcm9fdCogY3IpCkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAKICAgICBjYWlyb190
KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIHNldFBhdGhPbkNhaXJvQ29udGV4
dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgpKTsKLSAgICBzaGFkb3dBbmRGaWxs
Q3VycmVudENhaXJvUGF0aCh0aGlzKTsKKyAgICBzaGFkb3dBbmRGaWxsQ3VycmVudENhaXJvUGF0
aCgqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBh
dGgmIHBhdGgpCkBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9r
ZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250
ZXh0KCktPmNyKCk7CiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3Jt
UGF0aCgpLT5jb250ZXh0KCkpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC00NTAsNyArNDUwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgo
dGhpcyk7CisgICAgc2hhZG93QW5kRmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UpCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGhhc1NoYWRvdygpKQot
ICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KHRo
aXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93KCp0aGlzLCBGbG9hdFJvdW5kZWRSZWN0KHJlY3Qp
KTsKIAogICAgIGZpbGxSZWN0V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0
LCBjb2xvcik7CiB9CkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBjYWlyb19z
YXZlKGNyKTsKICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwg
d2lkdGgpOwotICAgIHNoYWRvd0FuZFN0cm9rZUN1cnJlbnRDYWlyb1BhdGgodGhpcyk7CisgICAg
c2hhZG93QW5kU3Ryb2tlQ3VycmVudENhaXJvUGF0aCgqdGhpcyk7CiAgICAgY2Fpcm9fcmVzdG9y
ZShjcik7CiB9CiAKQEAgLTEwNDMsNyArMTA0Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpw
bGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25z
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTaGFkb3coKSkKLSAgICAgICAgcGxhdGZv
cm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdyh0aGlzLCByZWN0KTsKKyAg
ICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygqdGhp
cywgcmVjdCk7CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwog
ICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtMTA2MSw3ICsxMDYxLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRoaXMtPm11c3RVc2VTaGFkb3dC
bHVyKCkpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0
U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KCp0aGlzLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QpOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChyZWN0KTsKQEAg
LTEwNzMsNyArMTA3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgY2Fpcm9fdCog
Y3IgPSBwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKICAgICBjYWlyb19zYXZlKGNyKTsKICAgICBz
ZXRQYXRoT25DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHBhdGgucGxhdGZv
cm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgodGhpcyk7Cisg
ICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgoKnRoaXMpOwogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IDQxNWY5ZGM3OWZkYmY5NDAxNTMxYWRiY2Fk
Y2Q5YTI2ZTE3MjVkNTYuLmMyMGY5MmQxYmE2MDdlMTYzZGM0YTllNDA0M2FiN2E5Yjg0MzhjM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX2NvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuICpt
X2RhdGEubV9jb250ZXh0OwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IsIFNjYWxlQmVoYXZpb3IpIGNvbnN0CkBA
IC0xNjAsMjAgKzE2MCwyMCBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29w
eUltYWdlTW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBtYXNrUmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6OmNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG1hc2tSZWN0KSBjb25zdAogewotICAgIGNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1hZ2VNYXNrKG1fZGF0YS5tX3N1cmZhY2Uu
Z2V0KCksIG1hc2tSZWN0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5wdXNoSW1h
Z2VNYXNrKG1fZGF0YS5tX3N1cmZhY2UuZ2V0KCksIG1hc2tSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQ29udGV4dCwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIGJvb2wgdXNlTG93UXVhbGl0eVNj
YWxlKQogewotICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSBkZXN0aW5hdGlvbkNvbnRl
eHQgPT0gY29udGV4dCgpID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3Jl
OworICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5U2NhbGUpKTsKKyAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxlKSk7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIEJsZW5kTW9kZSkKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCkBAIC0zOTUsNyArMzk1LDcgQEAgU3RyaW5n
IEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91
YmxlKiwgQ29vcmRpbmF0ZVMKIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS0+cGxhdGZvcm1Db250
ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFy
Z2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7CiAKICAgICBWZWN0b3I8Y2hh
cj4gZW5jb2RlZEltYWdlOwogICAgIGlmICghaW1hZ2UgfHwgIWVuY29kZUltYWdlKGltYWdlLCBt
aW1lVHlwZSwgJmVuY29kZWRJbWFnZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDdmMzU4YTU0YTMzOTY4NTFh
NDQ5MTg2N2JjMGQ5MWQ5YmJhYTJhODIuLjI1YzM3NmJiNjBmZWRhNjQ2NDk3MjkxMWQ1MDc0M2Y2
YWM2ZjBkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC00MSwxNCArNDEsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgQmxl
bmRNb2RlKQogewogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBuYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghc3VyZmFjZSkgLy8gSWYgaXQncyB0b28g
ZWFybHkgd2Ugd29uJ3QgaGF2ZSBhbiBpbWFnZSB5ZXQuCiAgICAgICAgIHJldHVybjsKIAotICAg
IGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwogICAgIGRyYXdQYXR0
ZXJuVG9DYWlyb0NvbnRleHQoY3IsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoc2l6ZSgpKSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3ApLCBkZXN0
UmVjdCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fp
cm8uY3BwCmluZGV4IDU5OWU1OWRjNTc4NjI1NzI4YjcyYzQ0ZjI2ODU1MTllNDVlYjRkMzMuLmEw
ZTdmZjg3M2JjYjM1YzMwNTliZGE2Y2QzZjQzZTM3MDE2ZjljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVy
blRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNv
bgogICAgICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWly
bzo6ZHJhd1N1cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1
cmZhY2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lkIGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGgg
c21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZhYnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVm
IHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQoKSkgPCAwLjVmKQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7
IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFkZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNh
aXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNo
YWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVy
KCk7CisgICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+
c2hhZG93Qmx1cigpOwogICAgIGlmIChzaGFkb3cudHlwZSgpICE9IFNoYWRvd0JsdXI6Ok5vU2hh
ZG93KSB7CiAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFk
b3cuYmVnaW5TaGFkb3dMYXllcihjb250ZXh0LCBkZXN0UmVjdCkpIHsKICAgICAgICAgICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQoc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNyKCksIHBhdHRlcm4uZ2V0KCksIGRlc3RSZWN0LCAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5oCmluZGV4IDkzNTVlMTNlNGUwM2Q3M2EwMzZmODA5Zjg1NzdhMGQ3YzExMWVmNDMuLjY0MmEz
MDUyY2QyZDhkY2VlNzUxYWY5NWFiZjUwZTQ4MDBkNzAxMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0
Q2Fpcm8uaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEo
KSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdlTWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9CaXRtYXBJbWFnZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCmluZGV4IGIz
ZjIxZWY3NzAwZWU2ZDUwNmNhYzc0MzdiZjFmODhhM2JjNjY0NTAuLjU5YThjZGJkZTZkYTUyOWVj
NTExY2NjMjIwYzQ3MjgwODEwMzJiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0JpdG1hcEltYWdlQ0cuY3BwCkBAIC0yMDMsNyArMjAzLDcgQEAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IEJpdG1hcEltYWdlOjpnZXRDR0ltYWdlQXJyYXkoKQogICAg
IHJldHVybiBhZG9wdENGKGFycmF5KTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24gZGVzY3JpcHRpb24pCit2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbikKIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhcnRBbmltYXRpb24o
RG9Ob3RDYXRjaFVwKTsKQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGCiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgLy8gTmV2ZXIgdXNl
IHN1YnNhbXBsZWQgaW1hZ2VzIGZvciBkcmF3aW5nIGludG8gUERGIGNvbnRleHRzLgotICAgIGlm
ICh3a0NHQ29udGV4dElzUERGQ29udGV4dChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpCisgICAg
aWYgKHdrQ0dDb250ZXh0SXNQREZDb250ZXh0KGN0eHQucGxhdGZvcm1Db250ZXh0KCkpKQogICAg
ICAgICBpbWFnZSA9IGFkb3B0Q0YoY29weVVuc2NhbGVkRnJhbWVBdEluZGV4KG1fY3VycmVudEZy
YW1lKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIENHUmVjdCB0cmFuc2Zvcm1lZERlc3RpbmF0aW9u
UmVjdCA9IENHUmVjdEFwcGx5QWZmaW5lVHJhbnNmb3JtKGRlc3RSZWN0LCBDR0NvbnRleHRHZXRD
VE0oY3R4dC0+cGxhdGZvcm1Db250ZXh0KCkpKTsKKyAgICAgICAgQ0dSZWN0IHRyYW5zZm9ybWVk
RGVzdGluYXRpb25SZWN0ID0gQ0dSZWN0QXBwbHlBZmZpbmVUcmFuc2Zvcm0oZGVzdFJlY3QsIENH
Q29udGV4dEdldENUTShjdHh0LnBsYXRmb3JtQ29udGV4dCgpKSk7CiAgICAgICAgIGZsb2F0IHN1
YnNhbXBsaW5nU2NhbGUgPSBzdGQ6Om1pbjxmbG9hdD4oMSwgc3RkOjptYXgodHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS53aWR0aCAvIHNyY1JlY3Qud2lkdGgoKSwgdHJhbnNmb3JtZWRE
ZXN0aW5hdGlvblJlY3Quc2l6ZS5oZWlnaHQgLyBzcmNSZWN0LmhlaWdodCgpKSk7CiAKICAgICAg
ICAgaW1hZ2UgPSBmcmFtZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIHN1YnNhbXBsaW5nU2NhbGUp
OwpAQCAtMjQ1LDcgKzI0NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGCiAgICAgaWYgKGRl
c2NyaXB0aW9uLnJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKCkgPT0gUmVzcGVjdEltYWdlT3JpZW50
YXRpb24pCiAgICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogCi0gICAgY3R4dC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBp
bWFnZVNpemUsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjdHh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcodGhp
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg5MzVlODBkZmE5M2ZiNWFhYTIxM2ZhYTI1
ZGM1MzBhMjhiN2JhYjkuLjk0YWFhYTkzMDViM2UwZDQ2YmViNTlkODIxNjk4MThlNjEwNDJhNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MDMsMTQgKzUwMywxNCBAQCBzdGF0aWMgdm9p
ZCByZWxlYXNlSW1hZ2VEYXRhKHZvaWQqLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpCiAgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBp
bnQgaW1hZ2VXaWR0aCwgaW50IGltYWdlSGVpZ2h0LCBpbnQgY2FudmFzV2lkdGgsIGludCBjYW52
YXNIZWlnaHQsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnZVdpZHRoLCBpbnQgaW1hZ2VIZWlnaHQsIGludCBjYW52YXNXaWR0aCwgaW50IGNhbnZhc0hl
aWdodCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghaW1hZ2VQaXhlbHMg
fHwgaW1hZ2VXaWR0aCA8PSAwIHx8IGltYWdlSGVpZ2h0IDw9IDAgfHwgY2FudmFzV2lkdGggPD0g
MCB8fCBjYW52YXNIZWlnaHQgPD0gMCB8fCAhY29udGV4dCkKKyAgICBpZiAoIWltYWdlUGl4ZWxz
IHx8IGltYWdlV2lkdGggPD0gMCB8fCBpbWFnZUhlaWdodCA8PSAwIHx8IGNhbnZhc1dpZHRoIDw9
IDAgfHwgY2FudmFzSGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVybjsKICAgICBpbnQgcm93Qnl0
ZXMgPSBpbWFnZVdpZHRoICogNDsKICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRh
dGFQcm92aWRlcjsKIAotICAgIGlmIChjb250ZXh0LT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7
CisgICAgaWYgKGNvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICB1bnNp
Z25lZCBjaGFyKiBjb3BpZWRQaXhlbHM7CiAKICAgICAgICAgaWYgKCF0cnlGYXN0Q2FsbG9jKGlt
YWdlSGVpZ2h0LCByb3dCeXRlcykuZ2V0VmFsdWUoY29waWVkUGl4ZWxzKSkKQEAgLTUzMiwxMSAr
NTMyLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5z
aWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgLy8gV2Ugd2FudCB0byBjb21w
bGV0ZWx5IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgZnJhbWUncwogICAgIC8vIHJlbmRlcmluZyBy
ZXN1bHRzLgogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKLSAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLSAgICBjb250ZXh0
LT50cmFuc2xhdGUoMCwgLWltYWdlSGVpZ2h0KTsKLSAgICBjb250ZXh0LT5zZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LT5kcmF3TmF0
aXZlSW1hZ2UoY2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBj
YW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVD
b3B5KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgwLCAtaW1hZ2VIZWlnaHQpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBjYW52YXNSZWN0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IDA4MGY3MmY0
Mzg2MzVhYTk2ZGQzYjFjYTFhYjVhOTdlN2FlMzMyMjguLmM1MjZkNTRlNjg1MTJkNGIyZmFhNjc4
ZmE0NjM2NWJlNDljMjY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTcxMiw3ICs3MTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENH
U2l6ZVplcm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0
YXRlKTsKLSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0aGlzLCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3UmVjdFNoYWRvdygq
dGhpcywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CiAgICAgfQogCiAgICAgQ0dDb250ZXh0Rmls
bFJlY3QoY29udGV4dCwgcmVjdCk7CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclMKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29u
dGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAogICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRT
aGFkb3cobV9zdGF0ZSk7Ci0gICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1Jl
Y3RTaGFkb3coKnRoaXMsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOwogICAgIH0KIAogICAgIENH
Q29udGV4dEZpbGxSZWN0KGNvbnRleHQsIHJlY3QpOwpAQCAtNzcxLDcgKzc3MSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihw
bGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKICAgICAgICAgU2hhZG93Qmx1
ciBjb250ZXh0U2hhZG93KG1fc3RhdGUpOwotICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0
U2hhZG93KHRoaXMsIHJlY3QpOworICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93
KCp0aGlzLCByZWN0KTsKICAgICB9CiAKICAgICBjb25zdCBGbG9hdFJlY3QmIHIgPSByZWN0LnJl
Y3QoKTsKQEAgLTgyNCw3ICs4MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgICAg
ICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IocGxhdGZvcm1Db250ZXh0KCksIENHU2l6ZVpl
cm8sIDAsIDApOwogCiAgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhtX3N0YXRlKTsK
LSAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGhpcywgcmVjdCwgcm91bmRl
ZEhvbGVSZWN0KTsKKyAgICAgICAgY29udGV4dFNoYWRvdy5kcmF3SW5zZXRTaGFkb3coKnRoaXMs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CiAgICAgfQogCiAgICAgZmlsbFBhdGgocGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCmluZGV4IGJiOWRlZWIwZjgxYTE3YmJjNGU3YWM2MzdiMDg3YjFjNzY3OTg3ODUuLmEw
OTMwMTQ5N2MyNTZiMTA0Zjg1MmI3MTIzZTQ0YWM1NGY5NDMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0x
NDMsOSArMTQzLDkgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBDb2xvclNwYWMKICAgICAgICAgbV9kYXRhLmNv
bnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0LmdldCgp
KTsKICAgICB9CiAKLSAgICBjb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAg
IGNvbnRleHQoKS0+dHJhbnNsYXRlKDAsIC1tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgY29udGV4dCgpLT5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNj
YWxlKTsKKyAgICBjb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgY29udGV4
dCgpLnRyYW5zbGF0ZSgwLCAtbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUuaGVpZ2h0KCkpOworICAg
IGNvbnRleHQoKS5hcHBseURldmljZVNjYWxlRmFjdG9yKG1fcmVzb2x1dGlvblNjYWxlKTsKIAog
ICAgIHN1Y2Nlc3MgPSB0cnVlOwogfQpAQCAtMTU0LDE4ICsxNTQsMTggQEAgSW1hZ2VCdWZmZXI6
On5JbWFnZUJ1ZmZlcigpCiB7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogSW1hZ2VCdWZmZXI6OmNv
bnRleHQoKSBjb25zdAorR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNv
bnN0CiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAo
bV9kYXRhLnN1cmZhY2UpCi0gICAgICAgIHJldHVybiAmbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLnN1cmZhY2UtPmVuc3VyZUdy
YXBoaWNzQ29udGV4dCgpOwogI2VuZGlmCi0gICAgcmV0dXJuIG1fZGF0YS5jb250ZXh0LmdldCgp
OworICAgIHJldHVybiAqbV9kYXRhLmNvbnRleHQ7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmZs
dXNoQ29udGV4dCgpIGNvbnN0CiB7Ci0gICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVDcm9wcGVk
SW1hZ2VJZk5lY2Vzc2FyeShDR0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CkBAIC0yMTAsMTMgKzIxMCwxMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0
Q29weUltYWdlTW9kZSgpCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlO
YXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29uc3QKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxl
cmF0ZWRDb250ZXh0KCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpKSB7CiAgICAgICAgIHN3aXRjaCAoY29weUJlaGF2aW9yKSB7CiAgICAgICAgIGNhc2UgRG9u
dENvcHlCYWNraW5nU3RvcmU6CiAgICAgICAgICAgICBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNy
ZWF0ZShtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZS53aWR0aCgpLCBtX2RhdGEuYmFja2luZ1N0b3Jl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIG1fZGF0YS5ieXRlc1BlclJvdy51bnNhZmVHZXQoKSwgbV9k
YXRhLmNvbG9yU3BhY2UsIG1fZGF0YS5iaXRtYXBJbmZvLCBtX2RhdGEuZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDb3B5QmFja2luZ1N0b3JlOgotICAgICAgICAgICAgaW1hZ2Ug
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCkpKTsKKyAgICAgICAgICAgIGltYWdlID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGVJbWFnZShjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yMzEsMjkgKzIzMSwyOSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6
OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVy
biBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGRl
c3RDb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIENvbG9yU3BhY2Ugc3R5
bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBib29s
IHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBVTlVTRURfUEFSQU0odXNlTG93UXVhbGl0eVNj
YWxlKTsKLSAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSAoZGVzdENvbnRleHQgPT0gY29udGV4
dCgpKSA/IENvbG9yU3BhY2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CisgICAgQ29sb3JT
cGFjZSBjb2xvclNwYWNlID0gKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpKSA/IENvbG9yU3Bh
Y2VEZXZpY2VSR0IgOiBzdHlsZUNvbG9yU3BhY2U7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gaW1hZ2U7Ci0gICAgaWYgKGRlc3RDb250ZXh0ID09IGNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKKyAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250
ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoQ29weUJhY2tpbmdTdG9yZSk7IC8vIERyYXdpbmcgaW50byBv
dXIgb3duIGJ1ZmZlciwgbmVlZCB0byBkZWVwIGNvcHkuCiAgICAgZWxzZQogICAgICAgICBpbWFn
ZSA9IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKICAgICBGbG9hdFJl
Y3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
bV9yZXNvbHV0aW9uU2NhbGUsIG1fcmVzb2x1dGlvblNjYWxlKTsKLSAgICBkZXN0Q29udGV4dC0+
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgY29s
b3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0
b3JlU2l6ZSwgY29sb3JTcGFjZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCogZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlLCBtX3Jlc29sdXRpb25TY2FsZSk7CiAK
LSAgICBpZiAoIWNvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewotICAgICAgICBp
ZiAoZGVzdENvbnRleHQgPT0gY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LT5pc0FjY2VsZXJhdGVk
Q29udGV4dCgpKSB7CisgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
eworICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KICAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVzdFJlY3QsIGJsZW5kTW9kZSk7CiAgICAgICAg
IH0gZWxzZSB7CkBAIC0yNjYsMTEgKzI2NiwxMSBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQqIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyYwog
ICAgIH0KIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6Y2xpcChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHRUb0NsaXAsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3ZvaWQgSW1hZ2VCdWZmZXI6
OmNsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0VG9DbGlwLCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7CiAgICAgRmxvYXRTaXplIGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZSA9
IHNjYWxlU2l6ZVRvVXNlclNwYWNlKHJlY3Quc2l6ZSgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6
ZSwgaW50ZXJuYWxTaXplKCkpOwogCi0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dFRv
Q2xpcCA9IGNvbnRleHRUb0NsaXAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJl
ZiBwbGF0Zm9ybUNvbnRleHRUb0NsaXAgPSBjb250ZXh0VG9DbGlwLnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIC8vIEZJWE1FOiBUaGlzIGltYWdlIG5lZWRzIHRvIGJlIGdyYXlzY2FsZSB0byBiZSB1
c2VkIGFzIGFuIGFscGhhIG1hc2sgaGVyZS4KICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2UgPSBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwogICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShwbGF0Zm9ybUNvbnRleHRUb0NsaXAsIHJlY3QueCgpLCByZWN0LnkoKSAr
IGJhY2tpbmdTdG9yZVNpemVJblVzZXJTcGFjZS5oZWlnaHQoKSk7CkBAIC0yODMsMzEgKzI4Mywz
MSBAQCB2b2lkIEltYWdlQnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCogY29udGV4dFRvQ2xp
cCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjbwogCiBQYXNzUmVmUHRyPFVpbnQ4Q2xhbXBlZEFy
cmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKGNvbnN0IEludFJlY3Qm
IHJlY3QsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgY29uc3QKIHsKLSAgICBp
ZiAoY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0KCku
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkKICAgICAgICAgZmx1c2hDb250ZXh0KCk7CiAKICAgICBJ
bnRSZWN0IHNyY1JlY3QgPSByZWN0OwogICAgIGlmIChjb29yZGluYXRlU3lzdGVtID09IExvZ2lj
YWxDb29yZGluYXRlU3lzdGVtKQogICAgICAgICBzcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNj
YWxlKTsKIAotICAgIHJldHVybiBtX2RhdGEuZ2V0RGF0YShzcmNSZWN0LCBpbnRlcm5hbFNpemUo
KSwgY29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKKyAgICByZXR1
cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpLCB0cnVlLCAxKTsKIH0KIAogUGFzc1JlZlB0cjxVaW50OENsYW1w
ZWRBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50
UmVjdCYgcmVjdCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSBjb25zdAogewot
ICAgIGlmIChjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAog
ICAgIEludFJlY3Qgc3JjUmVjdCA9IHJlY3Q7CiAgICAgaWYgKGNvb3JkaW5hdGVTeXN0ZW0gPT0g
TG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIHNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwogCi0gICAgcmV0dXJuIG1fZGF0YS5nZXREYXRhKHNyY1JlY3QsIGludGVybmFs
U2l6ZSgpLCBjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCksIGZhbHNlLCAxKTsKKyAg
ICByZXR1cm4gbV9kYXRhLmdldERhdGEoc3JjUmVjdCwgaW50ZXJuYWxTaXplKCksIGNvbnRleHQo
KS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpLCBmYWxzZSwgMSk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dEJ5dGVBcnJheShNdWx0aXBseSBtdWx0aXBsaWVkLCBVaW50OENsYW1wZWRBcnJheSog
c291cmNlLCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5h
dGVTeXN0ZW0pCiB7Ci0gICAgaWYgKCFjb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkp
IHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAg
IEludFJlY3Qgc2NhbGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CiAgICAgICAgIEludFNpemUg
c2NhbGVkU291cmNlU2l6ZSA9IHNvdXJjZVNpemU7CiAgICAgICAgIGlmIChjb29yZGluYXRlU3lz
dGVtID09IExvZ2ljYWxDb29yZGluYXRlU3lzdGVtKSB7CkBAIC0zMjYsMTAgKzMyNiwxMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgVWludDhD
bGFtcGVkQXJyYXkqIHNvdXJjZSwgYwogICAgIGlmICghc291cmNlQ29weSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc291cmNlQ29weS0+bV9kYXRhLnB1dERhdGEoc291cmNlLCBzb3VyY2VTaXpl
LCBzb3VyY2VSZWN0LCBJbnRQb2ludCgtc291cmNlUmVjdC54KCksIC1zb3VyY2VSZWN0LnkoKSks
IHNvdXJjZUNvcHktPmludGVybmFsU2l6ZSgpLCBzb3VyY2VDb3B5LT5jb250ZXh0KCktPmlzQWNj
ZWxlcmF0ZWRDb250ZXh0KCksIG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkLCAxKTsKKyAgICBz
b3VyY2VDb3B5LT5tX2RhdGEucHV0RGF0YShzb3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3Qs
IEludFBvaW50KC1zb3VyY2VSZWN0LngoKSwgLXNvdXJjZVJlY3QueSgpKSwgc291cmNlQ29weS0+
aW50ZXJuYWxTaXplKCksIHNvdXJjZUNvcHktPmNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4
dCgpLCBtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCwgMSk7CiAKICAgICAvLyBTZXQgdXAgY29u
dGV4dCBmb3IgdXNpbmcgZHJhd0ltYWdlIGFzIGEgZGlyZWN0IGJpdCBjb3B5Ci0gICAgQ0dDb250
ZXh0UmVmIGRlc3RDb250ZXh0ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBD
R0NvbnRleHRSZWYgZGVzdENvbnRleHQgPSBjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAg
ICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShkZXN0Q29udGV4dCk7CiAgICAgaWYgKGNvb3JkaW5hdGVT
eXN0ZW0gPT0gTG9naWNhbENvb3JkaW5hdGVTeXN0ZW0pCiAgICAgICAgIENHQ29udGV4dENvbmNh
dENUTShkZXN0Q29udGV4dCwgQWZmaW5lVHJhbnNmb3JtKHdrR2V0VXNlclRvQmFzZUNUTShkZXN0
Q29udGV4dCkpLmludmVyc2UoKSk7CkBAIC00MzAsNyArNDMwLDcgQEAgU3RyaW5nIEltYWdlQnVm
ZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFs
aXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUpKTsKIAotICAgIGlmIChjb250ZXh0KCktPmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29u
dGV4dCgpKQogICAgICAgICBmbHVzaENvbnRleHQoKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpID0gdXRpRnJvbU1JTUVUeXBlKG1pbWVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAKaW5kZXggYmMyZDdkMzU5M2M2NDUx
MDMxYTIxNTcwZTVhYTMyMGUwYWE1NjY5Yi4uMjBlOTNhZGE1NmU4OWI2NDViN2ZjZjM4MWE4MDBk
OTdmYzYzNzkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VDRy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VD
YWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKK3ZvaWQgSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
b3AsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAg
ICAgaWYgKCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQpAQCAtOTUsMTAgKzk1LDEwIEBA
IHZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QKICAgICBpZiAoIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0g
Y3R4dC0+cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjdHh0KTsKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGN0eHQucGxhdGZv
cm1Db250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGN0
eHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3QpOwotICAgIGN0
eHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKICAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcAppbmRleCBiMTlmYjA4MWU0Mzg2MjMyYjUxY2IxZGVkMWIxNmI2MzBiM2E3NjY5Li5m
NGIwNDg1NzFlYzk4Mzk2MTNjNDRkMjQ5ZDJiNDJhNzk1NGNkZmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtOTgsNyArOTgsNyBAQCBib29sIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIHJldHVybiBtX2RvY3VtZW50OyAvLyBSZXR1cm4gdHJ1
ZSBpZiBzaXplIGlzIGF2YWlsYWJsZS4KIH0KIAotYm9vbCBQREZEb2N1bWVudEltYWdlOjpjYWNo
ZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdAorYm9vbCBQREZEb2N1
bWVudEltYWdlOjpjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25z
dAogewogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA3LDcgKzEwNyw3IEBAIGJvb2wgUERGRG9jdW1l
bnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LT5nZXRDVE0o
R3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2Uo
ZGVjb21wb3NlZFRyYW5zZm9ybSk7CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0
OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5z
Zm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm07CiAgICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERl
Y29tcG9zZWRUcmFuc2Zvcm0pOwpAQCAtMTE3LDcgKzExNyw3IEBAIGJvb2wgUERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorc3RhdGljIHZvaWQgdHJhbnNmb3Jt
Q29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNj
YWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgIGZsb2F0IHZTY2Fs
ZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwpAQCAtMTM1LDEyICsxMzUs
MTIgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWMKICAgICAgICAgfQogICAgIH0KIAotICAgIGNv
bnRleHQtPnRyYW5zbGF0ZShzcmNSZWN0LngoKSAqIGhTY2FsZSwgc3JjUmVjdC55KCkgKiB2U2Nh
bGUpOwotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAg
ICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworICAgIGNvbnRleHQu
dHJhbnNsYXRlKHNyY1JlY3QueCgpICogaFNjYWxlLCBzcmNSZWN0LnkoKSAqIHZTY2FsZSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOwogfQogCi12b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1MsIHNvbWUgY2xp
ZW50cyB1c2UgbG93LXF1YWxpdHkgaW1hZ2UgaW50ZXJwb2xhdGlvbiBhbHdheXMsIHdoaWNoIHRo
cm93cyBvZmYgdGhpcyBvcHRpbWl6YXRpb24sCkBAIC0xNTIsMjQgKzE1MiwyMCBAQCB2b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdAogI2Vsc2UKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4aXN0aW5nIGlt
YWdlLCByZXVzZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGxvdy1xdWFsaXR5IHBhaW50LCBldmVuIGlm
IGNhY2hlIHBhcmFtZXRlcnMgZG9uJ3QgbWF0Y2g7CiAgICAgLy8gd2UnbGwgcmVyZW5kZXIgd2hl
biB3ZSBkbyB0aGUgc3Vic2VxdWVudCBoaWdoLXF1YWxpdHkgcGFpbnQuCi0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBjb250ZXh0LT5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5KCk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1
YWxpdHkgPSBjb250ZXh0LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICBib29sIHJl
cGFpbnRJZk5lY2Vzc2FyeSA9IGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25O
b25lICYmIGludGVycG9sYXRpb25RdWFsaXR5ICE9IEludGVycG9sYXRpb25Mb3c7CiAjZW5kaWYK
IAogICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlciB8fCAoIWNhY2hlUGFyYW1ldGVyc01hdGNo
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpICYmIHJlcGFpbnRJZk5lY2Vzc2FyeSkpIHsKLSAg
ICAgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CisgICAgICAg
IG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoRmxv
YXRSZWN0KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpLnNpemUoKSk7CiAgICAgICAgIGlmICgh
bV9jYWNoZWRJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgp
OwotICAgICAgICBpZiAoIWJ1ZmZlckNvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY2FjaGVkSW1h
Z2VCdWZmZXIgPSBudWxscHRyOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCYgYnVmZmVyQ29udGV4dCA9IG1fY2FjaGVkSW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKIAogICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVy
Q29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7CiAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwogCi0gICAgICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKEdy
YXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7CisgICAgICAgIG1f
Y2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0
ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblNpemUg
PSBkc3RSZWN0LnNpemUoKTsKICAgICAgICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsK
IApAQCAtMTgyLDcgKzE3OCw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgfQogfQog
Ci12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkwLDExICsxODYsMTEgQEAgdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAogICAgIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCk7CiAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOwogCiAgICAg
ICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKG1fY2FjaGVkSW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IGRzdFJlY3QpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9jYWNoZWRJ
bWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0UmVjdCk7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCk7CkBA
IC0yNDQsMjYgKzI0MCwyNiBAQCB1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAogICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3Vt
ZW50LmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3Jl
ZXMpCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKIHsKICAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwg
c2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0
KCkpOwogICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCi0gICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShzaXpl
LndpZHRoKCksIDApOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwogCi0gICAgY29udGV4dC0+cm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3Rh
dGlvbkRlZ3JlZXMpKSk7CisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgc2l6ZSgpLCBtX3JvdGF0aW9uRGVncmVlcyk7CiAK
LSAgICBjb250ZXh0LT50cmFuc2xhdGUoLW1fY3JvcEJveC54KCksIC1tX2Nyb3BCb3gueSgpKTsK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LngoKSwgLW1fY3JvcEJveC55KCkpOwog
CiAgICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotICAgIENHQ29udGV4dERy
YXdQREZQYWdlKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4
dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSkpOwogfQogCiAjZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmgKaW5kZXggMWIyOWM5MzQxMTUwMGI2Nzc4ODBlMWM2YzU0ZGQxOWU0ZTg0OTkw
MC4uMjE3YWNkMGVkYjI2NGMwZTA5YzhhZGY1ZWU0MjcxNjUxMTdkZTg4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBs
ZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc3LDEwICs3NywxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Kik7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KTsKKyAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsK
IAogI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCiAgICAgUmV0YWluUHRyPFBE
RkRvY3VtZW50PiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5kZXggMjA3OWZmNjg5
YjkxNTkwMjM4MTgzOGU5Y2Q5N2U0NmQxNTgzNjRmNi4uNDRmYWFlMWE4MDAzYTVlYjFhMWE5ZWRi
MmU5ZGNhNDFjMDc3NmJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC05MSwxMyArOTEsMTMg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZFVzZUxldHRlcnByZXNzRWZmZWN0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBzaG93TGV0
dGVycHJlc3NlZEdseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBo
cywgY29uc3QgQ0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hv
d0xldHRlcnByZXNzZWRHbHlwaHNXaXRoQWR2YW5jZXMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IGNvbnN0IEZvbnQmIGZvbnQsIENHQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBDR0dseXBoKiBn
bHlwaHMsIGNvbnN0IENHU2l6ZSogYWR2YW5jZXMsIHNpemVfdCBjb3VudCkKIHsKICNpZiBFTkFC
TEUoTEVUVEVSUFJFU1MpCiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC0+cGxhdGZvcm1EYXRh
KCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0gZm9udC5wbGF0
Zm9ybURhdGEoKTsKICAgICBpZiAocGxhdGZvcm1EYXRhLm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWwpIHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciB2ZXJ0aWNhbCB0
ZXh0LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzEzNzM3Mjk4Pi4KICAgICAgICAgcmV0dXJuOwpAQCAt
MTU4LDE0ICsxNTgsMTQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RhdGljIHZvaWQgc2hv
d0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCog
Zm9udCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3Qg
Q0dTaXplKiBhZHZhbmNlcywgc2l6ZV90IGNvdW50KQorc3RhdGljIHZvaWQgc2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29uc3QgRm9udCYgZm9udCwgQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IENHR2x5cGgqIGdseXBocywgY29uc3QgQ0dTaXplKiBh
ZHZhbmNlcywgc2l6ZV90IGNvdW50KQogewogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBwb2ludC54KCksIHBv
aW50LnkoKSk7CiAKLSAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEgPSBm
b250LT5wbGF0Zm9ybURhdGEoKTsKKyAgICBjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9y
bURhdGEgPSBmb250LnBsYXRmb3JtRGF0YSgpOwogICAgIFZlY3RvcjxDR1BvaW50LCAyNTY+IHBv
c2l0aW9ucyhjb3VudCk7CiAgICAgaWYgKHBsYXRmb3JtRGF0YS5pc0NvbG9yQml0bWFwRm9udCgp
KQogICAgICAgICBmaWxsVmVjdG9yV2l0aEhvcml6b250YWxHbHlwaFBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvbnRleHQsIGFkdmFuY2VzLCBjb3VudCk7CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IHZvaWQgc2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRm9udCogZm9udCwgQ0cKIAogICAgICAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0g
PSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRUZXh0TWF0cml4KGNvbnRleHQp
KTsKIAotICAgICAgICBDR1BvaW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBv
aW50LnkoKSArIGZvbnQtPmZvbnRNZXRyaWNzKCkuZmxvYXRBc2NlbnQoSWRlb2dyYXBoaWNCYXNl
bGluZSkgLSBmb250LT5mb250TWV0cmljcygpLmZsb2F0QXNjZW50KCkpOworICAgICAgICBDR1Bv
aW50IHBvc2l0aW9uID0gRmxvYXRQb2ludChwb2ludC54KCksIHBvaW50LnkoKSArIGZvbnQuZm9u
dE1ldHJpY3MoKS5mbG9hdEFzY2VudChJZGVvZ3JhcGhpY0Jhc2VsaW5lKSAtIGZvbnQuZm9udE1l
dHJpY3MoKS5mbG9hdEFzY2VudCgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CiAgICAgICAgICAgICBDR1NpemUgdHJhbnNsYXRpb24gPSBDR1NpemVBcHBs
eUFmZmluZVRyYW5zZm9ybSh0cmFuc2xhdGlvbnNbaV0sIHJvdGF0ZUxlZnRUcmFuc2Zvcm0pOwog
ICAgICAgICAgICAgcG9zaXRpb25zW2ldID0gQ0dQb2ludEFwcGx5QWZmaW5lVHJhbnNmb3JtKENH
UG9pbnRNYWtlKHBvc2l0aW9uLnggLSB0cmFuc2xhdGlvbi53aWR0aCwgcG9zaXRpb24ueSArIHRy
YW5zbGF0aW9uLmhlaWdodCksIHRyYW5zZm9ybSk7CkBAIC0yNDYsMzUgKzI0NiwzNSBAQCBzdGF0
aWMgQ0dTaXplIGRpbGF0aW9uU2l6ZUZvclRleHRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB9
CiAjZW5kaWYKIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZl
ciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
KSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwg
aW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSBj
b25zdAogewotICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSA9IGZvbnQt
PnBsYXRmb3JtRGF0YSgpOworICAgIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0
YSA9IGZvbnQucGxhdGZvcm1EYXRhKCk7CiAgICAgaWYgKCFwbGF0Zm9ybURhdGEuc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBib29sIHNob3VsZFNtb290aEZvbnRzOwogICAgIGJv
b2wgY2hhbmdlRm9udFNtb290aGluZzsKLSAgICBib29sIG1hdGNoQW50aWFsaWFzZWRBbmRTbW9v
dGhlZEZvbnRzID0gY29udGV4dC0+YW50aWFsaWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7Cisg
ICAgYm9vbCBtYXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGNvbnRleHQuYW50aWFs
aWFzZWRGb250RGlsYXRpb25FbmFibGVkKCk7CiAgICAgCiAgICAgc3dpdGNoIChmb250RGVzY3Jp
cHRpb24oKS5mb250U21vb3RoaW5nKCkpIHsKICAgICBjYXNlIEFudGlhbGlhc2VkOiB7Ci0gICAg
ICAgIGNvbnRleHQtPnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsKKyAgICAgICAgY29udGV4dC5z
ZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRzID0gZmFs
c2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBtYXRjaEFu
dGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOyAvLyBDU1MgaGFzIG9wdGVkIGludG8g
c3RyaWN0bHkgYW50aWFsaWFzZWQgZm9udHMuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFN1YnBpeGVsQW50aWFsaWFzZWQ6IHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkQW50
aWFsaWFzKHRydWUpOworICAgICAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyh0cnVlKTsK
ICAgICAgICAgc2hvdWxkU21vb3RoRm9udHMgPSB0cnVlOwogICAgICAgICBjaGFuZ2VGb250U21v
b3RoaW5nID0gdHJ1ZTsKICAgICAgICAgbWF0Y2hBbnRpYWxpYXNlZEFuZFNtb290aGVkRm9udHMg
PSB0cnVlOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOb1Ntb290aGluZzogewot
ICAgICAgICBjb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXMoZmFsc2UpOworICAgICAgICBjb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFNtb290aEZvbnRz
ID0gZmFsc2U7CiAgICAgICAgIGNoYW5nZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogICAgICAgICBt
YXRjaEFudGlhbGlhc2VkQW5kU21vb3RoZWRGb250cyA9IGZhbHNlOwpAQCAtMzE5LDcgKzMxOSw3
IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgCiAgICAgQ0dDb250ZXh0U2V0Rm9udChj
Z0NvbnRleHQsIHBsYXRmb3JtRGF0YS5jZ0ZvbnQoKSk7CiAKLSAgICBib29sIHVzZUxldHRlcnBy
ZXNzRWZmZWN0ID0gc2hvdWxkVXNlTGV0dGVycHJlc3NFZmZlY3QoKmNvbnRleHQpOworICAgIGJv
b2wgdXNlTGV0dGVycHJlc3NFZmZlY3QgPSBzaG91bGRVc2VMZXR0ZXJwcmVzc0VmZmVjdChjb250
ZXh0KTsKICAgICBGbG9hdFBvaW50IHBvaW50ID0gYW5jaG9yUG9pbnQ7CiAKICAgICBDR0FmZmlu
ZVRyYW5zZm9ybSBtYXRyaXggPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwpAQCAtMzM5LDkg
KzMzOSw5IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGb250KiBmb250LCBjb25zdCBHCiAgICAgQ0dDb250ZXh0U2V0VGV4dE1h
dHJpeChjZ0NvbnRleHQsIG1hdHJpeCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgQ0dDb250
ZXh0U2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGNnQ29udGV4dCwgY29udGV4dC0+c2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkpOworICAgIENHQ29udGV4dFNldFNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250cyhjZ0NvbnRleHQsIGNvbnRleHQuc2hvdWxkU3VicGl4ZWxRdWFudGl6
ZUZvbnRzKCkpOwogI2Vsc2UKLSAgICBzZXRDR0ZvbnRSZW5kZXJpbmdNb2RlKGNnQ29udGV4dCwg
W2RyYXdGb250IHJlbmRlcmluZ01vZGVdLCBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50aXpl
Rm9udHMoKSk7CisgICAgc2V0Q0dGb250UmVuZGVyaW5nTW9kZShjZ0NvbnRleHQsIFtkcmF3Rm9u
dCByZW5kZXJpbmdNb2RlXSwgY29udGV4dC5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoKSk7
CiAjZW5kaWYKICAgICBDR0NvbnRleHRTZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0
YS5zaXplKCkpOwogCkBAIC0zNTAsMTEgKzM1MCwxMSBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3Qg
RwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2Ug
PSBjb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC5maWxsQ29sb3JTcGFjZSgpOwor
ICAgIGNvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRleHRDVE0g
PSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC0+c3ludGhldGljQm9sZE9mZnNldCgpOworICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZXh0Q1RN
ID0gY29udGV4dC5nZXRDVE0oKTsKKyAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0ID0gZm9u
dC5zeW50aGV0aWNCb2xkT2Zmc2V0KCk7CiAgICAgaWYgKHN5bnRoZXRpY0JvbGRPZmZzZXQgJiYg
IWNvbnRleHRDVE0uaXNJZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSkgewogICAgICAg
ICBGbG9hdFNpemUgaG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMgPSBjb250ZXh0Q1RN
Lm1hcFNpemUoRmxvYXRTaXplKDEsIDApKTsKICAgICAgICAgZmxvYXQgaG9yaXpvbnRhbFVuaXRM
ZW5ndGhJbkRldmljZVBpeGVscyA9IHNxcnRmKGhvcml6b250YWxVbml0U2l6ZUluRGV2aWNlUGl4
ZWxzLndpZHRoKCkgKiBob3Jpem9udGFsVW5pdFNpemVJbkRldmljZVBpeGVscy53aWR0aCgpICsg
aG9yaXpvbnRhbFVuaXRTaXplSW5EZXZpY2VQaXhlbHMuaGVpZ2h0KCkgKiBob3Jpem9udGFsVW5p
dFNpemVJbkRldmljZVBpeGVscy5oZWlnaHQoKSk7CkBAIC0zNjIsMjAgKzM2MiwyMCBAQCB2b2lk
IEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgRwogICAgICAgICAgICAgc3ludGhldGljQm9sZE9mZnNldCAvPSBo
b3Jpem9udGFsVW5pdExlbmd0aEluRGV2aWNlUGl4ZWxzOwogICAgIH07CiAKLSAgICBib29sIGhh
c1NpbXBsZVNoYWRvdyA9IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmls
bCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgIXBsYXRmb3JtRGF0
YS5pc0NvbG9yQml0bWFwRm9udCgpICYmICghY29udGV4dC0+c2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMoKSB8fCBjb250ZXh0Q1RNLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpICYm
ICFjb250ZXh0LT5pc0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICBib29sIGhhc1NpbXBsZVNo
YWRvdyA9IGNvbnRleHQudGV4dERyYXdpbmdNb2RlKCkgPT0gVGV4dE1vZGVGaWxsICYmIHNoYWRv
d0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAmJiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JC
aXRtYXBGb250KCkgJiYgKCFjb250ZXh0LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgY29u
dGV4dENUTS5pc0lkZW50aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKSAmJiAhY29udGV4dC5p
c0luVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CiAgICAg
ICAgIC8vIFBhaW50IHNpbXBsZSBzaGFkb3dzIG91cnNlbHZlcyBpbnN0ZWFkIG9mIHJlbHlpbmcg
b24gQ0cgc2hhZG93cywgdG8gYXZvaWQgbG9zaW5nIHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAg
ICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yID0g
Y29udGV4dC0+ZmlsbENvbG9yKCk7CisgICAgICAgIGNvbnRleHQuY2xlYXJTaGFkb3coKTsKKyAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC5maWxsQ29sb3IoKTsKICAgICAgICAgQ29s
b3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxw
aGEoKSAvIDI1NSk7Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzaGFk
b3dGaWxsQ29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBmbG9hdCBzaGFkb3dUZXh0
WCA9IHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpOwogICAgICAgICAvLyBJZiBzaGFk
b3dzIGFyZSBpZ25vcmluZyB0cmFuc2Zvcm1zLCB0aGVuIHdlIGhhdmVuJ3QgYXBwbGllZCB0aGUg
WSBjb29yZGluYXRlIGZsaXAgeWV0LCBzbyBkb3duIGlzIG5lZ2F0aXZlLgotICAgICAgICBmbG9h
dCBzaGFkb3dUZXh0WSA9IHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChjb250
ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKKyAgICAgICAgZmxvYXQg
c2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgKiAoY29udGV4
dC5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8gLTEgOiAxKTsKICAgICAgICAgc2hvd0dseXBo
c1dpdGhBZHZhbmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSksIGZvbnQs
IGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZyb20pLCBzdGF0aWNfY2FzdDxjb25zdCBD
R1NpemUqPihnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSksIG51bUdseXBocyk7CiAgICAgICAg
IGlmIChzeW50aGV0aWNCb2xkT2Zmc2V0KQogICAgICAgICAgICAgc2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhGbG9hdFBvaW50KHNoYWRvd1RleHRYICsgc3ludGhldGljQm9sZE9mZnNldCwgc2hhZG93
VGV4dFkpLCBmb250LCBjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSkpLCBudW1HbHlw
aHMpOwotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGZpbGxDb2xvciwgZmlsbENvbG9y
U3BhY2UpOwogICAgIH0KIAogICAgIGlmICh1c2VMZXR0ZXJwcmVzc0VmZmVjdCkKQEAgLTM4Niw3
ICszODYsNyBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRm9udCogZm9udCwgY29uc3QgRwogICAgICAgICBzaG93R2x5cGhzV2l0
aEFkdmFuY2VzKEZsb2F0UG9pbnQocG9pbnQueCgpICsgc3ludGhldGljQm9sZE9mZnNldCwgcG9p
bnQueSgpKSwgZm9udCwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIHN0YXRp
Y19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pKSwgbnVtR2x5
cGhzKTsKIAogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICAgICAgY29udGV4dC5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQog
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMTAwCkBAIC02NjAsNyAr
NjYwLDcgQEAgZmxvYXQgRm9udENhc2NhZGU6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBpbnQgZnIKICAgICByZXR1cm4gaW5pdGlhbEFkdmFu
Y2U7CiB9CiAKLWZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAorZmxvYXQgRm9udENhc2NhZGU6OmRyYXdDb21wbGV4
VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhp
cyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGdseXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZv
ciBlYWNoIGdseXBoLgogICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwpAQCAtNjc4LDcgKzY3
OCw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgcmV0dXJuIHN0YXJ0UG9pbnQueCgp
IC0gc3RhcnRYOwogfQogCi12b2lkIEZvbnRDYXNjYWRlOjpkcmF3RW1waGFzaXNNYXJrc0ZvckNv
bXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBj
b25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJv
bSwgaW50IHRvKSBjb25zdAordm9pZCBGb250Q2FzY2FkZTo6ZHJhd0VtcGhhc2lzTWFya3NGb3JD
b21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZy
b20sIGludCB0bykgY29uc3QKIHsKICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKICAgICBm
bG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQo
cnVuLCBmcm9tLCB0bywgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBoYXNpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0ltYWdlQnVmZmVyRWZsLmNw
cAppbmRleCAxNDRjNmE1MjBlNGM1ZGFkNzU0NDcyNTg4YWJmOTRmMDgyNGE3YWViLi5hZmNmNzU5
NzI3OTM3ZmRjNmFjNzM3NmYwNDkwNWY4ZmQyOThkODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvSW1hZ2VCdWZmZXJFZmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9JbWFnZUJ1ZmZlckVmbC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5LCBDb28KIHsKICAgICBBU1NFUlQoTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWltZVR5cGUp
KTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRl
eHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCkpOworICAgIGNhaXJvX3N1cmZhY2VfdCogaW1h
Z2UgPSBjYWlyb19nZXRfdGFyZ2V0KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSk7
CiAKICAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZEltYWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBjMTRmNjBm
YzY2OWJlNDY2NDUwMmVjOTRlMTYzM2ZjN2QwODM0NWQ1Li4wODlmNDUwNTIzMzlhZTBiMmJmMjk2
YTBmYTc0ZTU2YzExYzg3ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTY4LDE1ICs2OCwxNSBAQCB2b2lkIEZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdElt
YWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQog
ICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVz
dWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQg
PSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVy
ID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIyID0g
aW4yLT5hc0ltYWdlQnVmZmVyKCk7CiAgICAgQVNTRVJUKGltYWdlQnVmZmVyKTsKICAgICBBU1NF
UlQoaW1hZ2VCdWZmZXIyKTsKIAotICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgp
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBv
c2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5w
dXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAppbmRleCAzNjNiYjM4ZmYxNTFlZTU1NTQ0MDkxNGNjYzhhNDU0Nzg2ZWMxOWM2Li44NzY2
YWVjYjIyMzNjOWFhOTNiM2Y1OThmZjJlNjMxMzhmMjU2OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVy
KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFn
ZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7CiAKICAgICBJbnRS
ZWN0IGltYWdlUmVjdChJbnRQb2ludCgpLCByZXN1bHRJbWFnZS0+bG9naWNhbFNpemUoKSk7CiAg
ICAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBwaXhlbEFycmF5ID0gcmVzdWx0SW1hZ2UtPmdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShpbWFnZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCAz
NmJlZmU3YTI4ZTAyODE4YjY3YWI3NzkwNWRhMzJjODFjMDRlMzYxLi5mY2M4MWU4NzEzOGZiZGYz
ZWMxMDc3MDk2OTdiNDFhMzc5YTE5NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcyLDcgKzI3
Miw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgSW1h
Z2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBp
ZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBm
aWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogCiAgICAgSW1hZ2VC
dWZmZXIqIGltYWdlQnVmZmVyID0gaW4tPmFzSW1hZ2VCdWZmZXIoKTsKICAgICBJbWFnZUJ1ZmZl
ciogaW1hZ2VCdWZmZXIyID0gaW4yLT5hc0ltYWdlQnVmZmVyKCk7CkBAIC0yODEsOCArMjgxLDgg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIHN3aXRj
aCAobV90eXBlKSB7CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVkVSOgotICAgICAg
ICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2lu
Z1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX0lOOiB7CiAgICAgICAgIC8vIEFw
cGxpZXMgb25seSB0byB0aGUgaW50ZXJzZWN0ZWQgcmVnaW9uLgpAQCAtMjk0LDIxICsyOTQsMjEg
QEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50
UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRl
UGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAg
ICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFkanVzdGVkRGVzdGluYXRp
b25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwg
YWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKKyAgICAgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGFk
anVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoK
LSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlcjIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZl
cjItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVEZXN0aW5hdGlvbk91dCk7CisgICAgICAgIGZp
bHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7
CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyMiwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRl
UGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyMi0+bG9naWNhbFNp
emUoKSksIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BVE9QOgotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVn
aW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgICAgICBmaWx0
ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VS
R0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRl
U291cmNlQXRvcCk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdl
QnVmZmVyMiwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgQ29tcG9zaXRlU291cmNlQXRvcCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfWE9SOgotICAgICAgICBm
aWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2
aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3Qo
KSkpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIs
IENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgQ29tcG9zaXRlWE9SKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIyLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uT2ZJ
bnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOworICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3Qo
SW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBDb21wb3NpdGVYT1IpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93
LmNwcAppbmRleCA1ZTdjOTA0NTBmOGIwN2Q2M2Y3ZjIwOTdkNzQzZThjMGE2MTA2OTZmLi42MzNl
YmM2NjBiMWQ3NmNiNGJkOTg4NmUwMTFlMGI4Mzc1Yjk1YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3Bw
CkBAIC04OSwxMSArODksMTAgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UgPSBpbi0+YXNJbWFnZUJ1ZmZl
cigpOwogICAgIEFTU0VSVChzb3VyY2VJbWFnZSk7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiByZXN1
bHRDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQocmVzdWx0Q29u
dGV4dCk7Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0QWxwaGEobV9zaGFkb3dPcGFjaXR5KTsKLSAg
ICByZXN1bHRDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoc291cmNlSW1hZ2UsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25XaXRoT2Zmc2V0KTsKLSAgICByZXN1bHRDb250ZXh0LT5z
ZXRBbHBoYSgxKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIHJlc3VsdENvbnRleHQgPSByZXN1bHRJ
bWFnZS0+Y29udGV4dCgpOworICAgIHJlc3VsdENvbnRleHQuc2V0QWxwaGEobV9zaGFkb3dPcGFj
aXR5KTsKKyAgICByZXN1bHRDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQpOworICAgIHJlc3VsdENv
bnRleHQuc2V0QWxwaGEoMSk7CiAKICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coYmx1clJh
ZGl1cywgb2Zmc2V0LCBtX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIApAQCAt
MTA1LDExICsxMDQsMTEgQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAKICAgICByZXN1bHRJbWFnZS0+cHV0Qnl0ZUFycmF5KFByZW11bHRpcGxpZWQsIHNyY1Bp
eGVsQXJyYXkuZ2V0KCksIHNoYWRvd0FyZWEuc2l6ZSgpLCBzaGFkb3dBcmVhLCBJbnRQb2ludCgp
LCBJbWFnZUJ1ZmZlcjo6QmFja2luZ1N0b3JlQ29vcmRpbmF0ZVN5c3RlbSk7CiAKLSAgICByZXN1
bHRDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlSW4pOwotICAg
IHJlc3VsdENvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRl
UGFpbnRSZWN0KCkuc2l6ZSgpKSwgbV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
Ci0gICAgcmVzdWx0Q29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZURlc3Rp
bmF0aW9uT3Zlcik7CisgICAgcmVzdWx0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlSW4pOworICAgIHJlc3VsdENvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpLCBtX3NoYWRvd0NvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICByZXN1bHRDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbk92ZXIpOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRl
eHQoKS0+ZHJhd0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
cmF3aW5nUmVnaW9uKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cihzb3VyY2VJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CiB9CiAK
IHZvaWQgRkVEcm9wU2hhZG93OjpkdW1wKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCmluZGV4IGM0OTg2MGMwZjA4N2M4YWZk
OGZkZTU5MDllZDhlMjkzOGMzMzM3ZGEuLjdlZDQyOWYwMzM5NmU4MmM4OTZiNTM2NzAyMjZkMDE4
YWIyMzcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEZFRmxvb2Q6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvbG9yIGNvbG9yID0g
Y29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENvbG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgp
KTsKLSAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSksIGNvbG9yLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmZpbGxSZWN0KEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSwgY29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMjZi
OTMyYWNmZjc1MjMzNjAwM2Q4YWM1MDFlOTM2NTljMzdhOGJmMC4uZmNjZGQ0NWUzODVhZTQyMzBi
YTNjOTE4ZDcwYTI5OTI3NGFiMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC00NywxMCArNDcsMTAgQEAgdm9p
ZCBGRU1lcmdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghcmVzdWx0SW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9
IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBmaWx0ZXJDb250
ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdChp
KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVm
ZmVyKCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4t
PmFic29sdXRlUGFpbnRSZWN0KCkpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9m
ZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcAppbmRleCBhNDRjMjFkNmFlOWFjYjk3YWNhNTM2MzI1ZjhjMzc1NzFhNGUyZjllLi5m
ZmVhNjM4NjgxYWE0YTk3ZTg0MDgwYTFiN2M4N2U4NDM5ZDQ5OWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAt
ODcsNyArODcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+
YWJzb2x1dGVQYWludFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIo
KTsKICAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1f
ZHgpLCBmaWx0ZXIuYXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKLSAgICByZXN1bHRJbWFnZS0+
Y29udGV4dCgpLT5kcmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbik7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5k
cmF3SW1hZ2VCdWZmZXIoaW4tPmFzSW1hZ2VCdWZmZXIoKSwgQ29sb3JTcGFjZURldmljZVJHQiwg
ZHJhd2luZ1JlZ2lvbik7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhk
MzE3MmQ5ODFkN2NkMTJkOTc2ZWIwNDNkZDNkMmM3YmViZTA0ZDMuLjVkYzQ3ZGQ2ZWNmOTMxYWVh
NWY4MDlkYmJkNzU0ZDAwYTM1Y2VhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTY3LDkgKzY3LDkgQEAgdm9pZCBG
RVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogdGlsZUltYWdlQ29udGV4dCA9IHRp
bGVJbWFnZS0+Y29udGV4dCgpOwotICAgIHRpbGVJbWFnZUNvbnRleHQtPnRyYW5zbGF0ZSgtaW5N
YXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7Ci0gICAgdGls
ZUltYWdlQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGluLT5hc0ltYWdlQnVmZmVyKCksIENvbG9y
U3BhY2VEZXZpY2VSR0IsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOworICAg
IEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgp
OworICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngo
KSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKKyAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbi0+YXNJbWFnZUJ1ZmZlcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IHRpbGVJbWFnZS0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpOwogICAgIGlmICghdGls
ZUltYWdlQ29weSkKQEAgLTgwLDkgKzgwLDkgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZl
Y3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRp
b24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0
ZXJuVHJhbnNmb3JtKTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKFdU
Rjo6bW92ZShwYXR0ZXJuKSk7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOworICAgIGZp
bHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGOjptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0
ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRS
ZWN0KCkuc2l6ZSgpKSk7CiB9CiAKIHZvaWQgRkVUaWxlOjpkdW1wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAppbmRleCBjOThkNWI5ODVhZjNiYjFlNWIwYzBjMjI2YmI0NWZjNjA1NGY0MzNjLi5iYTE0NzEy
YTNjZjg0MDc0ZTcwNzRjY2I4ZDAxNmQzMjE3MzAzNDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBA
IC00NjYsNyArNDY2LDYgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VC
dWZmZXJSZXN1bHQoKQogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQobV9pbWFnZUJ1ZmZlclJlc3VsdC0+Y29udGV4dCgp
KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmNwcAppbmRleCAzYTdhNTAyODQzYjUxNDJlNDU3YmFkNDdmMDQ5MmMzYjhlNTYxMWRiLi43MGIx
ZDU1NjRmNmYwM2IxMzM5ODBhYmQ1OTlhYzMwNjgwYmU1NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcApA
QCAtNTEsMTQgKzUxLDE0IEBAIHZvaWQgU291cmNlQWxwaGE6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyID0gaW5wdXRFZmZlY3QoMCktPmFzSW1hZ2VC
dWZmZXIoKTsKICAgICBBU1NFUlQoaW1hZ2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGltYWdl
UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBmaWx0
ZXJDb250ZXh0LT5maWxsUmVjdChpbWFnZVJlY3QsIENvbG9yOjpibGFjaywgQ29sb3JTcGFjZURl
dmljZVJHQik7Ci0gICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVy
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpLCBDb21wb3NpdGVEZXN0aW5hdGlvbklu
KTsKKyAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KGltYWdlUmVjdCwgQ29sb3I6OmJsYWNrLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiB9CiAKIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKaW5kZXggNWMyNjUyNDhkMDkzMmQ4NjU4NDBmNjlhZWJkZDcyMTIyY2UxN2UyMy4uMzE5
OGIwMzc4M2E1YzJiNDlhZWE5ZWViM2U5Zjg5ODIyODNkYmM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlIHx8ICFmaWx0ZXIuc291cmNlSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+ZHJhd0ltYWdl
QnVmZmVyKGZpbHRlci5zb3VyY2VJbWFnZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2lu
dCgpKTsKKyAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXIu
c291cmNlSW1hZ2UoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9pbnQoKSk7CiB9CiAKIHZv
aWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggNjRhMjNkMWYyZDkzYWJmZTdjYzJkYWE4
NzY1MWY4NTQ2NjNmNDVmYy4uZTVmMjg2YTU0MzBjODE0NjEyYWM5NzAyZjRlNThkN2E3ZjUxMjQw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcApAQCAtNTAyLDE0ICs1MDIsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgbV9zaXplID0gc2l6
ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKLSAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKCFtX3BsYXllci0+dmlzaWJsZSgpKQpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+
aW1hZ2UoKS5nZXQoKSksIENvbG9yU3BhY2VTUkdCLAorICAgIGNvbnRleHQuZHJhd0ltYWdlKHJl
aW50ZXJwcmV0X2Nhc3Q8SW1hZ2UqPihnc3RJbWFnZS0+aW1hZ2UoKS5nZXQoKSksIENvbG9yU3Bh
Y2VTUkdCLAogICAgICAgICByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCBDb21wb3NpdGVDb3B5KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
LmgKaW5kZXggMzEzNTczM2QxYjE5OGU2NWFmNWIzODI0ZTVjMmQ4NjcxZmI2ZjJkOS4uZDJmODhl
ODc1NGM1NmQ5MDM2YTQ3MmRlM2Y2NWJjNDlmYTJkN2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNpemVDaGFuZ2VkKCk7CiAKICAgICB2b2lkIHRyaWdnZXJSZXBhaW50
KEdzdFNhbXBsZSopOwotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25z
dCB7IHJldHVybiAwLjA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0TWFjLm1tCmluZGV4IDAyYzQ4ZDhmYjM2NjVm
OGNhZTI0OGJkMmFiNzZmNzE4MTg3NGI5MTIuLmFjZTE5MDU0YjlkYTUxMGE3MTkxZDAwYjRlNWJm
NmIyZGRjZDc4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc0NvbnRleHRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dE1hYy5tbQpAQCAtMjU2LDcgKzI1Niw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvckRvY3VtZW50TWFya2VyKGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50LCBmbG9hdCB3CiAKICAgICAvLyBEcmF3IHVuZGVybGluZS4KICNpZiAhUExB
VEZPUk0oSU9TKQotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
dGhpcyk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgqdGhp
cyk7CiAgICAgTlNHcmFwaGljc0NvbnRleHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3ND
b250ZXh0IGN1cnJlbnRDb250ZXh0XTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IChDR0Nv
bnRleHRSZWYpW2N1cnJlbnRDb250ZXh0IGdyYXBoaWNzUG9ydF07CiAjZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ljb25NYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQppbmRleCBmZDEzYWJm
YjY4MmUyMWJiOWEwOGE4ZjY0ZmJlOWUwMTRiMmY1N2YzLi5mNDEwMjdmNTJlYjhmYjk5ZWRmMjJj
NjdmMDFiMGQ4YzMyNTFlMTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSWNvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSWNvbk1hYy5tbQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEljb246OnBhaW50KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChj
b250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudEdDKCZjb250ZXh0KTsKKyAgICBMb2Nh
bEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50R0MoY29udGV4dCk7CiAKICAgICBb
bV9uc0ltYWdlIGRyYXdJblJlY3Q6cmVjdCBmcm9tUmVjdDpOU01ha2VSZWN0KDAsIDAsIFttX25z
SW1hZ2Ugc2l6ZV0ud2lkdGgsIFttX25zSW1hZ2Ugc2l6ZV0uaGVpZ2h0KSBvcGVyYXRpb246TlND
b21wb3NpdGVTb3VyY2VPdmVyIGZyYWN0aW9uOjEuMGZdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaAppbmRleCAwMWU4NmYxY2M5MmE1Zjk2NzBjMmJjODBjYzk5YjIyNzNhMTU2MWU4Li4x
OTZkZWNjNjQ0N2JiMTQwZGQ4ZGNjMDk5YWEzODUwZDhjOWRmOWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQuaApAQCAtMTI3LDggKzEyNyw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJh
bWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JSZW5kZXJpbmcoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGE3YTIxMzdkYzAzMzg2YzQ1OGY1NjVkOWMz
MjVhMTJjNmM2MTA5OTQuLmE0YzAwYjc3MWY1ODdiMjFjYjEzMjFmMmI1ZmI1MzUwN2UwNjk1MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTExODQsNyArMTE4NCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlcGFpbnQoKQogICAgIG1fcGxheWVyLT5yZXBh
aW50KCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZy
YW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7CiAgICAg
aWQgcXRWaWRlb1JlbmRlcmVyID0gbV9xdFZpZGVvUmVuZGVyZXIuZ2V0KCk7CiAgICAgaWYgKCFx
dFZpZGVvUmVuZGVyZXIgJiYgY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmlu
Z01vdmllTGF5ZXIpIHsKQEAgLTExOTcsOSArMTE5Nyw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4CiAgICAgcGFpbnQoY29udGV4dCwgcik7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHIpCiB7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQorICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSB8fCBtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQogICAgICAgICByZXR1
cm47CiAgICAgaWQgcXRWaWRlb1JlbmRlcmVyID0gbV9xdFZpZGVvUmVuZGVyZXIuZ2V0KCk7CiAg
ICAgaWYgKCFxdFZpZGVvUmVuZGVyZXIpCkBAIC0xMjExLDEyICsxMjExLDEyIEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByCiAgICAgRmxvYXRTaXplIHNjYWxlRmFjdG9yKDEuMGYsIC0xLjBmKTsK
ICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0KEZsb2F0UG9pbnQoKSwgci5zaXplKCkpOwogCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICBjb250
ZXh0LT50cmFuc2xhdGUoci54KCksIHIueSgpICsgci5oZWlnaHQoKSk7Ci0gICAgY29udGV4dC0+
c2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQudHJhbnNsYXRlKHIueCgpLCByLnkoKSAr
IHIuaGVpZ2h0KCkpOworICAgIGNvbnRleHQuc2NhbGUoc2NhbGVGYWN0b3IpOworICAgIGNvbnRl
eHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTG93KTsKIAotICAg
IG5ld0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBo
aWNzUG9ydDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOk5PXTsKKyAgICBuZXdD
b250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1Bv
cnQ6Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSBmbGlwcGVkOk5PXTsKIAogICAgIFtOU0dyYXBo
aWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CiAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNl
dEN1cnJlbnRDb250ZXh0Om5ld0NvbnRleHRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQppbmRleCAw
ZGNmNmMxY2E5Y2ZmZDJkMjNkNmY0OGM1YzkxNjQzZTFjMTAwNWI3Li5iZmFhZmE5MzU3MDAwN2Q1
ZmRjMjM1M2IwMWIyNGQxNDQ1MzFhZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQpAQCAtNjks
MTkgKzY5LDE5IEBAIHVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07CiB9CiAKLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQordm9pZCBQREZE
b2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAg
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudENvbnRleHQoY29udGV4
dCk7CiAKICAgICAvLyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQgYnkgUERGS2l0IGJ1dCBh
cmUgbm90IHNhdmVkCiAgICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0ZSBzdGFjay4gKDxyZGFy
Oi8vcHJvYmxlbS8xNDk1MTc1OT4pCi0gICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRl
eHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAg
ICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9u
dFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBi
b29sIGFsbG93c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXph
dGlvbiA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIFtbbV9kb2N1bWVudCBwYWdlQXRJbmRleDowXSBk
cmF3V2l0aEJveDprUERGRGlzcGxheUJveENyb3BCb3hdOwogCi0gICAgQ0dDb250ZXh0U2V0QWxs
b3dzRm9udFNtb290aGluZyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21vb3Ro
aW5nKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uKTsKKyAg
ICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIGFsbG93c1Ntb290aGluZyk7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVs
UXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVh
bnRpemF0aW9uKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TENvbW1vbi5jcHAKaW5kZXggZjM0MmFkOTU0ZjA2MjQxMTRlN2FiZTEzNzQ1ZDVmYzU0YzIwZjc1
ZS4uYjZlZmE0MWI2ZmYwNmQ1MDI0MTY0NWM1YmFkYmQzZGM2OGI3N2I0YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNjksOCArMTY5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMo
SW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgp
LCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgaW1h
Z2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGltYWdlQnVmZmVyLT5pbnRlcm5hbFNp
emUoKS5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAjZWxzZQotICAgIHBhaW50
VG9DYW52YXMocGl4ZWxzLmdldCgpLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLndpZHRoKCksIGlt
YWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBt
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXpl
KCkud2lkdGgoKSwgaW1hZ2VCdWZmZXItPmludGVybmFsU2l6ZSgpLmhlaWdodCgpLCBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpKTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCmluZGV4IDZjMDgyNTgyOTA5NWRiNzlmYTU0OGI2ZTdj
YjM3NjZiNDNjOTAzZjMuLjY4Y2UzMTNlMWYwZjc0N2VhY2ZmNmRhYTk2MGJmMDQ4MGVkNmYyZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCB2b2lkIEJpdG1hcFRleHR1
cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNz
TGF5ZXIqCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBjb250
ZXh0LT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHRleHR1cmVNYXBwZXItPmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7Ci0gICAgY29udGV4dC0+c2V0VGV4dERyYXdpbmdNb2RlKHRl
eHR1cmVNYXBwZXItPnRleHREcmF3aW5nTW9kZSgpKTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KCkpOworICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXItPnRleHRE
cmF3aW5nTW9kZSgpKTsKIAogICAgIEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsKICAg
ICBzb3VyY2VSZWN0LnNldExvY2F0aW9uKG9mZnNldCk7Ci0gICAgY29udGV4dC0+dHJhbnNsYXRl
KC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7Ci0gICAgc291cmNlTGF5ZXItPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBzb3VyY2VSZWN0KTsKKyAgICBjb250ZXh0LnRyYW5z
bGF0ZSgtb2Zmc2V0LngoKSwgLW9mZnNldC55KCkpOworICAgIHNvdXJjZUxheWVyLT5wYWludEdy
YXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0LCBzb3VyY2VSZWN0KTsKIAogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBpbWFnZUJ1ZmZlci0+Y29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KTsKICAgICBpZiAoIWltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udENHV2luLmNwcAppbmRleCBjNDkwYjExMTYxZmQ4ZTI3MjNhYTk2NjJkMWI1
MDAzOTQ2MzE2NjhiLi5hMjdhMmVmNmZlY2Y3ZTg4ZDJhYTM1ZjFlOGNhYTY1MjU2MWFmY2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2lu
LmNwcApAQCAtMTI3LDI1ICsxMjcsMjUgQEAgc3RhdGljIENHUGF0aFJlZiBjcmVhdGVQYXRoRm9y
R2x5cGgoSERDIGhkYywgR2x5cGggZ2x5cGgpCiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKLXZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKK3ZvaWQg
Rm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQs
IGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwKICAgICBp
bnQgZnJvbSwgaW50IG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7
Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKTsKICAgICBib29sIHNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBXZWJD
b3JlU2hvdWxkVXNlRm9udFNtb290aGluZygpOwogCiAgICAgc3dpdGNoKGZvbnREZXNjcmlwdGlv
bigpLmZvbnRTbW9vdGhpbmcoKSkgewogICAgIGNhc2UgQW50aWFsaWFzZWQ6IHsKLSAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaG91bGRBbnRpYWxpYXModHJ1ZSk7CiAgICAgICAgIHNob3VsZFVzZUZv
bnRTbW9vdGhpbmcgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU3Vi
cGl4ZWxBbnRpYWxpYXNlZDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNob3VsZEFu
dGlhbGlhcyh0cnVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZEFudGlhbGlh
cyh0cnVlKTsKICAgICAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IHRydWU7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5vU21vb3RoaW5nOiB7Ci0gICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CiAgICAgICAgIHNob3VsZFVzZUZvbnRTbW9v
dGhpbmcgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTU5LDcgKzE1OSw3IEBA
IHZvaWQgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsCiAKICAgICB1aW50MzJfdCBvbGRGb250U21vb3RoaW5n
U3R5bGUgPSB3a1NldEZvbnRTbW9vdGhpbmdTdHlsZShjZ0NvbnRleHQsIHNob3VsZFVzZUZvbnRT
bW9vdGhpbmcpOwogCi0gICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhID0g
Zm9udC0+cGxhdGZvcm1EYXRhKCk7CisgICAgY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZv
cm1EYXRhID0gZm9udC5wbGF0Zm9ybURhdGEoKTsKIAogICAgIENHQ29udGV4dFNldEZvbnQoY2dD
b250ZXh0LCBwbGF0Zm9ybURhdGEuY2dGb250KCkpOwogCkBAIC0xNzgsNDMgKzE3OCw0MyBAQCB2
b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGb250KiBmb250LAogICAgIEZsb2F0U2l6ZSB0cmFuc2xhdGlvbiA9IGdseXBo
QnVmZmVyLm9mZnNldEF0KGZyb20pOwogCiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250
ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsKLSAgICB3a1NldENHQ29udGV4dEZvbnRSZW5kZXJp
bmdTdHlsZShjZ0NvbnRleHQsIGZvbnQtPmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC0+cGxh
dGZvcm1EYXRhKCkudXNlR0RJKCkpOworICAgIHdrU2V0Q0dDb250ZXh0Rm9udFJlbmRlcmluZ1N0
eWxlKGNnQ29udGV4dCwgZm9udC5pc1N5c3RlbUZvbnQoKSwgZmFsc2UsIGZvbnQucGxhdGZvcm1E
YXRhKCkudXNlR0RJKCkpOwogCiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9h
dCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ugc2hh
ZG93Q29sb3JTcGFjZTsKLSAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICBncmFw
aGljc0NvbnRleHQuZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogCi0gICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFw
aGljc0NvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IFRleHRNb2RlRmlsbCAmJiBzaGFkb3dD
b2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRvd0JsdXIgJiYgKCFncmFwaGljc0NvbnRleHQtPnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LT5nZXRDVE0oKS5pc0lkZW50
aXR5T3JUcmFuc2xhdGlvbk9yRmxpcHBlZCgpKTsKKyAgICBib29sIGhhc1NpbXBsZVNoYWRvdyA9
IGdyYXBoaWNzQ29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZUZpbGwgJiYgc2hh
ZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICghZ3JhcGhpY3NDb250ZXh0LnNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKCkgfHwgZ3JhcGhpY3NDb250ZXh0LmdldENUTSgpLmlzSWRl
bnRpdHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkpOwogICAgIGlmIChoYXNTaW1wbGVTaGFkb3cp
IHsKICAgICAgICAgLy8gUGFpbnQgc2ltcGxlIHNoYWRvd3Mgb3Vyc2VsdmVzIGluc3RlYWQgb2Yg
cmVseWluZyBvbiBDRyBzaGFkb3dzLCB0byBhdm9pZCBsb3Npbmcgc3VicGl4ZWwgYW50aWFsaWFz
aW5nLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPmNsZWFyU2hhZG93KCk7Ci0gICAgICAgIENv
bG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCk7Ci0gICAgICAgIENv
bG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNwYWNl
KCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGVhclNoYWRvdygpOworICAgICAgICBDb2xv
ciBmaWxsQ29sb3IgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yKCk7CisgICAgICAgIENvbG9y
U3BhY2UgZmlsbENvbG9yU3BhY2UgPSBncmFwaGljc0NvbnRleHQuZmlsbENvbG9yU3BhY2UoKTsK
ICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dD
b2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0NvbG9yLmFscGhhKCkgKiBm
aWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0Rmls
bENvbG9yKHNoYWRvd0ZpbGxDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENvbG9yLCBzaGFkb3dDb2xvclNwYWNl
KTsKICAgICAgICAgZmxvYXQgc2hhZG93VGV4dFggPSBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53
aWR0aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCk7CiAgICAgICAgIC8vIElmIHNoYWRvd3MgYXJl
IGlnbm9yaW5nIHRyYW5zZm9ybXMsIHRoZW4gd2UgaGF2ZW4ndCBhcHBsaWVkIHRoZSBZIGNvb3Jk
aW5hdGUgZmxpcCB5ZXQsIHNvIGRvd24gaXMgbmVnYXRpdmUuCi0gICAgICAgIGZsb2F0IHNoYWRv
d1RleHRZID0gcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQu
aGVpZ2h0KCkgKiAoZ3JhcGhpY3NDb250ZXh0LT5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpID8g
LTEgOiAxKTsKKyAgICAgICAgZmxvYXQgc2hhZG93VGV4dFkgPSBwb2ludC55KCkgKyB0cmFuc2xh
dGlvbi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSAqIChncmFwaGljc0NvbnRleHQu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSA/IC0xIDogMSk7CiAgICAgICAgIENHQ29udGV4dFNl
dFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHNoYWRvd1RleHRYLCBzaGFkb3dUZXh0WSk7CiAgICAg
ICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZl
ci5nbHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFk
dmFuY2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKLSAgICAgICAgaWYgKGZvbnQtPnN5bnRoZXRpY0Jv
bGRPZmZzZXQoKSkgewotICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29u
dGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09mZnNldC53aWR0
aCgpICsgZm9udC0+c3ludGhldGljQm9sZE9mZnNldCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlv
bi5oZWlnaHQoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CisgICAgICAgIGlmIChmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKSkgeworICAgICAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0
aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIHNoYWRvd09m
ZnNldC53aWR0aCgpICsgZm9udC5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRy
YW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgICAg
IENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5n
bHlwaHMoZnJvbSksIHN0YXRpY19jYXN0PGNvbnN0IENHU2l6ZSo+KGdseXBoQnVmZmVyLmFkdmFu
Y2VzKGZyb20pKSwgbnVtR2x5cGhzKTsKICAgICAgICAgfQotICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKICAg
ICB9CiAKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkg
KyB0cmFuc2xhdGlvbi53aWR0aCgpLCBwb2ludC55KCkgKyB0cmFuc2xhdGlvbi5oZWlnaHQoKSk7
CiAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVm
ZmVyLmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIu
YWR2YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwotICAgIGlmIChmb250LT5zeW50aGV0aWNCb2xk
T2Zmc2V0KCkpIHsKLSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwg
cG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZz
ZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkpOworICAgIGlmIChmb250LnN5
bnRoZXRpY0JvbGRPZmZzZXQoKSkgeworICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24o
Y2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgpICsgZm9udC5zeW50aGV0
aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpKTsKICAgICAg
ICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVy
LmdseXBocyhmcm9tKSwgc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaXplKj4oZ2x5cGhCdWZmZXIuYWR2
YW5jZXMoZnJvbSkpLCBudW1HbHlwaHMpOwogICAgIH0KIAogICAgIGlmIChoYXNTaW1wbGVTaGFk
b3cpCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBncmFwaGlj
c0NvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Is
IHNoYWRvd0NvbG9yU3BhY2UpOwogCiAgICAgd2tSZXN0b3JlRm9udFNtb290aGluZ1N0eWxlKGNn
Q29udGV4dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250V2luLmNwcAppbmRleCAzYTBjYjMwYmU3NmMwY2U3
NDFjNTRmZWNhZGM3YzQ4ZWEzOWNkZWUzLi5kYjk2M2MyZjY0MGJkZmE0YTNhNjQ4NTQ0OGE0OWEw
YzlmNThjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRm9udFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRXaW4uY3BwCkBAIC05MSw3ICs5MSw3IEBAIGZsb2F0IEZvbnRDYXNjYWRlOjpnZXRHbHlw
aHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwgaW50IGZyCiAg
ICAgcmV0dXJuIGJlZm9yZVdpZHRoOwogfQogCi1mbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBs
ZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25z
dCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK2Zsb2F0IEZvbnRD
YXNjYWRlOjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRvKSBj
b25zdAogewogICAgIC8vIFRoaXMgZ2x5cGggYnVmZmVyIGhvbGRzIG91ciBnbHlwaHMgKyBhZHZh
bmNlcyArIGZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KICAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1
ZmZlcjsKQEAgLTEwOCw3ICsxMDgsNyBAQCBmbG9hdCBGb250Q2FzY2FkZTo6ZHJhd0NvbXBsZXhU
ZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIHJl
dHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAotdm9pZCBGb250Q2FzY2FkZTo6ZHJh
d0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFRleHRSdW4mIHJ1biwgY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgaW50IGZyb20sIGludCB0bykgY29uc3QKK3ZvaWQgRm9udENhc2NhZGU6OmRy
YXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBmcm9tLCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgR2x5cGhCdWZmZXIg
Z2x5cGhCdWZmZXI7CiAgICAgZmxvYXQgaW5pdGlhbEFkdmFuY2UgPSBnZXRHbHlwaHNBbmRBZHZh
bmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgZnJvbSwgdG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1w
aGFzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ljb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25X
aW4uY3BwCmluZGV4IGVlODhlMjA1YmMxMzdlNTYyMDA0MGMwYzFmZmJkZjkwOGE0ZWZhMmYuLmE3
ODA3MGQ5YWFhZjdmNGUyYTMxODllZTE0OGE2YTVjNzkzODhjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSWNvbldpbi5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcikKICAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93Q29udGV4dCgmY29udGV4dCwg
ZW5jbG9zaW5nSW50UmVjdChyKSk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dDb250
ZXh0KGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocikpOwogICAgIERyYXdJY29uRXgod2luZG93
Q29udGV4dC5oZGMoKSwgci54KCksIHIueSgpLCBtX2hJY29uLCByLndpZHRoKCksIHIuaGVpZ2h0
KCksIDAsIDAsIERJX05PUk1BTCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAppbmRleCA3MjNlYWRiZmQ1ZGMyMTVmMzMw
M2RlMDNjMzU4ZWJhOGE2OTA0MTI0Li4wODM0NzA3ZGE5YmFmNzExY2JmNzI4MTczNmYyNTIyZjdm
MTFhNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCkBAIC03Niw5ICs3Niw5IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhC
SVRNQVBPZlNpemUoSEJJVE1BUCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6OnNpemUoKTsKICAgICBpZiAoc2l6ZSkKLSAg
ICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKCZnYywgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3Vy
Y2VTaXplKGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZv
LmJtSGVpZ2h0KSwgKnNpemUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZUNvcHkpOwog
ICAgIGVsc2UKLSAgICAgICAgZHJhdygmZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZv
LmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIENvbG9yU3BhY2VEZXZpY2VSR0IsIENv
bXBvc2l0ZUNvcHksIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdp
ZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBA
IC04Niw3ICs4Niw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUoSEJJVE1B
UCBibXAsIGNvbnN0IEludFNpemUqIHNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQq
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwg
Q29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
KQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3ApCiB7CiAgICAgc2l6ZV90IGZyYW1lcyA9IGZyYW1lQ291bnQoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGZyYW1lczsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggNGZkNjM5
NGJjZDk4ODUzODVlNGMxZjVhMGFmYTNiNjRlNmE4NjQ5ZC4uYzc0MDM0N2JhMWJiNzc2Y2M0N2Ey
ODkzZGRmYTI3ZDgxNTU0MzVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtNzksNyArNzksNyBAQCBib29s
IEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXpl
KiBzaXplKQogCiAgICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IEJpdG1hcEltYWdlOjpzaXplKCk7
CiAgICAgaWYgKHNpemUpCi0gICAgICAgIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSgmZ2Ms
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQp
LCAqc2l6ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlQ29weSk7CisgICAgICAgIGRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcElu
Zm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksICpzaXplLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBDb21wb3NpdGVDb3B5KTsKICAgICBlbHNlCiAgICAgICAgIGRyYXcoJmdjLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIApAQCAtODksNyArODksNyBAQCBib29sIEJpdG1hcElt
YWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFt
ZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wKQogewogICAgIHNpemVfdCBmcmFt
ZXMgPSBmcmFtZUNvdW50KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZXM7ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xv
Y2FsV2luZG93c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Mb2NhbFdpbmRvd3NDb250ZXh0LmgKaW5kZXggY2Y1MWIwMDgxMDg4NTlmMDMxNTdhY2IyZWE2
NjNjZmQ5MGVmMWJiMS4uM2FkZGMxNDRmYzcxZjc2MjQwYWY5OTY5NGZmMDVlMDY5ZDIxYjQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0xvY2FsV2lu
ZG93c0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TG9jYWxXaW5kb3dzQ29udGV4dC5oCkBAIC0zNCwyNCArMzQsMjQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTG9jYWxXaW5kb3dzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoTG9jYWxXaW5kb3dzQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgTG9jYWxXaW5kb3dzQ29udGV4
dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCwg
Ym9vbCBzdXBwb3J0QWxwaGFCbGVuZCA9IHRydWUsIGJvb2wgbWF5Q3JlYXRlQml0bWFwID0gdHJ1
ZSkKKyAgICBMb2NhbFdpbmRvd3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIHN1cHBvcnRBbHBoYUJsZW5kID0gdHJ1ZSwg
Ym9vbCBtYXlDcmVhdGVCaXRtYXAgPSB0cnVlKQogICAgICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0
KGdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgLCBtX3JlY3QocmVjdCkKICAgICAgICAgLCBtX3N1
cHBvcnRBbHBoYUJsZW5kKHN1cHBvcnRBbHBoYUJsZW5kKQogICAgICAgICAsIG1fbWF5Q3JlYXRl
Qml0bWFwKG1heUNyZWF0ZUJpdG1hcCkKICAgICB7Ci0gICAgICAgIG1faGRjID0gbV9ncmFwaGlj
c0NvbnRleHQtPmdldFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwg
bV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2hkYyA9IG1fZ3JhcGhpY3NDb250ZXh0Lmdl
dFdpbmRvd3NDb250ZXh0KG1fcmVjdCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVC
aXRtYXApOwogICAgIH0KIAogICAgIH5Mb2NhbFdpbmRvd3NDb250ZXh0KCkKICAgICB7Ci0gICAg
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVj
dCwgbV9zdXBwb3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOworICAgICAgICBtX2dy
YXBoaWNzQ29udGV4dC5yZWxlYXNlV2luZG93c0NvbnRleHQobV9oZGMsIG1fcmVjdCwgbV9zdXBw
b3J0QWxwaGFCbGVuZCwgbV9tYXlDcmVhdGVCaXRtYXApOwogICAgIH0KIAogICAgIEhEQyBoZGMo
KSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4
dCogbV9ncmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtX2dyYXBoaWNzQ29u
dGV4dDsKICAgICBIREMgbV9oZGM7CiAgICAgSW50UmVjdCBtX3JlY3Q7CiAgICAgYm9vbCBtX3N1
cHBvcnRBbHBoYUJsZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1dpZGdldEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNw
cAppbmRleCBhN2JhNDJhMmViM2UzOWU0Mjc2NTVhNDg4MzIwYzNkYzBmMmQ3NzAyLi4yZWUzMTgy
MGNlYTBhNGRkMGYxZmU3Y2E5OGY3MjQ3MWRhMGM2NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcApAQCAtODAsNyArODAsNyBAQCB2b2lkIFdpZGdldDo6aGlk
ZSgpCiAgICAgICAgIGd0a193aWRnZXRfaGlkZShwbGF0Zm9ybVdpZGdldCgpKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lkZ2V0SU9TLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dpZGdldElPUy5tbQppbmRleCBhOGRmY2MzMjFiYWRm
ZWQyNzEwZmVlYzUwOGQyN2NjMTNhODEzMWNhLi4wZTM2NWVmMDg4NGFkMmM4YTZkNjcyNWY3NGM3
NTg3OGM1OTAwMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2lk
Z2V0SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XaWRnZXRJT1MubW0K
QEAgLTE0MSwxNCArMTQxLDE0IEBAIE5TVmlldyogV2lkZ2V0OjpnZXRPdXRlclZpZXcoKSBjb25z
dAogICAgIHJldHVybiB2aWV3OwogfQogCi12b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByKQordm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgcCwgY29uc3QgSW50UmVjdCYgcikKIHsKLSAgICBpZiAocC0+cGFpbnRpbmdEaXNhYmxl
ZCgpKQorICAgIGlmIChwLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIE5TVmlldyAqdmlldyA9IGdldE91dGVyVmlldygpOwogCi0gICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHAtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dD
b250ZXh0KTsKIAogICAgIE5TUmVjdCB2aWV3RnJhbWUgPSBbdmlldyBmcmFtZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCBiNTA1ZmMxMzhkNTgx
YTdhNDFmMWJlYTYzZmNlNTI2ZTg1NDYxZmRiLi41ZmIwNTJkNDU2N2RhMDBiZDgyZGUyMWM5YWQ2
OTAxMDU1ZDVkOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0ltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VN
YWMubW0KQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChOU1N0cmlu
ZyAqc3RyaW5nLCBOU1BvaW50IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgogICAgICAg
ICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNw
YWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwog
ICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwg
Z3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhhICogMjU1KSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAgICAgICAgIAotICAgICAgICB3ZWJDb3JlRm9udC5kcmF3VGV4dCgmZ3JhcGhpY3NDb250
ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICog
cG9pbnQueSkpKSk7CisgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4
dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQueSA6ICgtMSAqIHBv
aW50LnkpKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFmbGlwcGVkKQogICAgICAgICAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggNThiNjQ3MmNmMmUwN2M2YjkwODA0MDI4N2ViNjJjNWE5MDI3ZWYwMS4uNDhmZWIyZWE0ZDE5
ZDQwYTA5NWM5ZGZlZDViOTc2MmJhYzg2NzY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaApAQCAtMjks
MTEgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dChHcmFwaGljc0NvbnRleHQmKTsKICAgICB+TG9jYWxDdXJyZW50R3JhcGhpY3NDb250
ZXh0KCk7CiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCgpOwogcHJpdmF0ZToKLSAgICBHcmFw
aGljc0NvbnRleHQqIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0
JiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0OwogICAgIE5TR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVk
TlNHcmFwaGljc0NvbnRleHQ7CiAgICAgYm9vbCBtX2RpZFNldEdyYXBoaWNzQ29udGV4dDsKIH07
CkBAIC00MSw4ICs0MSw4IEBAIHByaXZhdGU6CiBjbGFzcyBDb250ZXh0Q29udGFpbmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZXh0Q29udGFpbmVyKTsKIHB1YmxpYzoKLSAgICBD
b250ZXh0Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KQotICAgICAg
ICA6IG1fZ3JhcGhpY3NDb250ZXh0KGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkp
CisgICAgQ29udGV4dENvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkK
KyAgICAgICAgOiBtX2dyYXBoaWNzQ29udGV4dChncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250
ZXh0KCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQubW0KaW5kZXggMjYzMmY2NjQz
YmZlMGY2OWEzNDI3MTE2Zjg3ODExYWI1ZDllMGNkZS4uMTM5ZGQ2NjViYzFiZWIxMGI3NWE0ZTQz
ZWNmZDdmNzIwNzE4MTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0xvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tCkBAIC0yNCwxMSArMjQsMTEg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6
OkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCkKLSAgICA6IG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KGZhbHNlKQorTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0OjpMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQpCisgICAgOiBtX3NhdmVkR3JhcGhpY3NDb250ZXh0KGdyYXBo
aWNzQ29udGV4dCkKKyAgICAsIG1fZGlkU2V0R3JhcGhpY3NDb250ZXh0KGZhbHNlKQogewotICAg
IG1fc2F2ZWRHcmFwaGljc0NvbnRleHQgPSBncmFwaGljc0NvbnRleHQ7Ci0gICAgZ3JhcGhpY3ND
b250ZXh0LT5zYXZlKCk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsKIAogICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSB0aGlzLT5jZ0NvbnRleHQoKTsKICAgICBpZiAoY2dDb250ZXh0
ID09IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIGdyYXBoaWNzUG9ydF0pIHsK
QEAgLTQ5LDEyICs0OSwxMiBAQCBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQ6On5Mb2NhbEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoKQogICAgICAgICBbbV9zYXZlZE5TR3JhcGhpY3NDb250ZXh0
IHJlbGVhc2VdOwogICAgIH0KIAotICAgIG1fc2F2ZWRHcmFwaGljc0NvbnRleHQtPnJlc3RvcmUo
KTsKKyAgICBtX3NhdmVkR3JhcGhpY3NDb250ZXh0LnJlc3RvcmUoKTsKIH0KIAogQ0dDb250ZXh0
UmVmIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dDo6Y2dDb250ZXh0KCkKIHsKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gbV9zYXZlZEdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IG1fc2F2ZWRHcmFwaGljc0NvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgcmV0dXJuIGNnQ29udGV4dDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IDc3
ZjJkODA4Y2M2NDg1NzExYjFhOTJlYzhmOGJjYjk3YzM4YzY4NjYuLmMzMzc2NWZjMjVkMGRjM2Jh
NWYxZjJlNTU5OTllYThjNzUyOGFiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KQEAgLTUxMyw3ICs1MTMsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXImIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjbwogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAgICAgICAgIGNvbnRleHQuY2xpcChkYW1hZ2VSZWN0KTsKICAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoc2Nyb2xsYmFyLmZyYW1lUmVjdCgpLngoKSwgc2Nyb2xsYmFyLmZy
YW1lUmVjdCgpLnkoKSk7Ci0gICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2Nh
bENvbnRleHQoJmNvbnRleHQpOworICAgICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQg
bG9jYWxDb250ZXh0KGNvbnRleHQpOwogICAgICAgICBzY3JvbGxiYXJQYWludGVyUGFpbnQoc2Ny
b2xsYmFyTWFwKCktPmdldCgmc2Nyb2xsYmFyKS5nZXQoKSwgc2Nyb2xsYmFyLmVuYWJsZWQoKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5oCmluZGV4IGY4ZWUx
NmViOWVhMTIxNDNiMjEyNWYwOGFmZDYzNjA2Y2M4NDE3MTIuLjNiYWRlN2E2NmUwOWQ3OTYzNjgx
MTNlNDQ2NzllMDgyZjdmODQzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5oCkBAIC01MiwxMyArNTIsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNvbnRy
b2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJvbFBhcnQgcGFydCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFydDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBwYWludChDb250cm9sUGFydCwgQ29udHJvbFN0YXRlcyYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZpZXcqLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgaW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBhcnQsIGNvbnN0IENv
bnRyb2xTdGF0ZXMmLCBGbG9hdFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIC8vIEZJWE1FOiBPbmNlIFJlbmRlclRoZW1lTWFjIGlzIGNvbnZlcnRlZCBvdmVy
IHRvIHVzZSBUaGVtZSB0aGVuIHRoaXMgY2FuIGJlIGludGVybmFsIHRvIFRoZW1lTWFjLgogICAg
IHN0YXRpYyBOU1ZpZXcqIGVuc3VyZWRWaWV3KFNjcm9sbFZpZXcqLCBjb25zdCBDb250cm9sU3Rh
dGVzJiwgYm9vbCB1c2VVbnBhcmVudGVkVmlldyA9IGZhbHNlKTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRGb2N1c1JpbmdDbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBzdGF0aWMgYm9vbCBk
cmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxs
ICovLCBib29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8s
IGZsb2F0IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKKyAgICBzdGF0aWMgYm9vbCBkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwqLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBOU1ZpZXcqLCBib29sIC8qIGRyYXdCdXR0b25DZWxsICovLCBi
b29sIC8qIGRyYXdGb2N1c1JpbmcgKi8sIGJvb2wgLyogdXNlSW1hZ2VCdWZmZXIgKi8sIGZsb2F0
IC8qIGRldmljZVNjYWxlRmFjdG9yICovKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCA1MWNmZDBkZTNhM2I1
OWZlNDk3ZTk2YTAwOGJhOGNlOGJmZjk4ZjA4Li4xYmQ1MDlmNTcwYzg0MTYxMDMwYzg1Mzc4OTVk
N2UzNmVhMTU2YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC0zNzYsNyArMzc2LDcgQEAgc3RhdGljIGJvb2wgZHJhd0NlbGxGb2N1c1JpbmcoTlNDZWxsICpj
ZWxsLCBOU1JlY3QgY2VsbEZyYW1lLCBOU1ZpZXcgKmNvbnRyb2xWaWUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRv
blR5cGUsIENvbnRyb2xTdGF0ZXMmIGNvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3Jv
bGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNj
YWxlRmFjdG9yKQorc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJvbFBhcnQgYnV0
dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNj
cm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdl
U2NhbGVGYWN0b3IpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAKQEAgLTQw
MCw3ICs0MDAsNyBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZUJ1dHRvbihDb250cm9sUGFydCBi
dXR0b25UeXBlLCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdAogICAgIH0KICAgICBjb250cm9s
U3RhdGVzLnNldERpcnR5KGZhbHNlKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwogCiAgICAgTlNDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IFt0b2dn
bGVCdXR0b25DZWxsIGNvbnRyb2xTaXplXTsKICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBidXR0
b25UeXBlID09IENoZWNrYm94UGFydCA/IGNoZWNrYm94U2l6ZXMoKVtjb250cm9sU2l6ZV0gOiBy
YWRpb1NpemVzKClbY29udHJvbFNpemVdOwpAQCAtNDEyLDkgKzQxMiw5IEBAIHN0YXRpYyB2b2lk
IHBhaW50VG9nZ2xlQnV0dG9uKENvbnRyb2xQYXJ0IGJ1dHRvblR5cGUsIENvbnRyb2xTdGF0ZXMm
IGNvbnRyb2xTdGF0CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICBpbmZs
YXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAg
ICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29t
RmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGlu
ZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZh
Y3Rvciwgem9vbUZhY3RvcikpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVk
UmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
aW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2Nh
bGUoRmxvYXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAK
ICAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KGNvbnRleHQpOwpA
QCAtNDMxLDExICs0MzEsMTEgQEAgc3RhdGljIHZvaWQgcGFpbnRUb2dnbGVCdXR0b24oQ29udHJv
bFBhcnQgYnV0dG9uVHlwZSwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXQKIAogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMDAwCiAgICAgaWYgKFt0b2dnbGVCdXR0
b25DZWxsIF9zdGF0ZUFuaW1hdGlvblJ1bm5pbmddKSB7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5z
bGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKLSAgICAgICAgY29udGV4
dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgw
LCAtaW5mbGF0ZWRSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoaW5m
bGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUo
RmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbmZsYXRl
ZFJlY3QuaGVpZ2h0KCkpOwogCi0gICAgICAgIFt0b2dnbGVCdXR0b25DZWxsIF9yZW5kZXJDdXJy
ZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkgYXRM
b2NhdGlvbjpOU01ha2VQb2ludCgwLCAwKV07CisgICAgICAgIFt0b2dnbGVCdXR0b25DZWxsIF9y
ZW5kZXJDdXJyZW50QW5pbWF0aW9uRnJhbWVJbkNvbnRleHQ6Y29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSBhdExvY2F0aW9uOk5TTWFrZVBvaW50KDAsIDApXTsKICAgICAgICAgaWYgKCFbdG9nZ2xl
QnV0dG9uQ2VsbCBfc3RhdGVBbmltYXRpb25SdW5uaW5nXSAmJiBpc0NlbGxGb2N1c2VkKQogICAg
ICAgICAgICAgbmVlZHNSZXBhaW50ID0gVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRo
Vmlld0ludG9Db250ZXh0KHRvZ2dsZUJ1dHRvbkNlbGwuZ2V0KCksIGNvbnRleHQsIGluZmxhdGVk
UmVjdCwgdmlldywgZmFsc2UsIHRydWUsIHVzZUltYWdlQnVmZmVyLCBkZXZpY2VTY2FsZUZhY3Rv
cik7CiAgICAgfSBlbHNlCkBAIC01MjAsMTQgKzUyMCwxNCBAQCBzdGF0aWMgTlNCdXR0b25DZWxs
ICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0
YXRlcwogICAgIHJldHVybiBjZWxsOwogfQogICAgIAotc3RhdGljIHZvaWQgcGFpbnRCdXR0b24o
Q29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21G
YWN0b3IsIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBm
bG9hdCBwYWdlU2NhbGVGYWN0b3IpCitzdGF0aWMgdm9pZCBwYWludEJ1dHRvbihDb250cm9sUGFy
dCBwYXJ0LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Ny
b2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3RvcikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKICAgICAKICAg
ICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJv
bCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCiAgICAgQ29udHJvbFN0YXRlczo6
U3RhdGVzIHN0YXRlcyA9IGNvbnRyb2xTdGF0ZXMuc3RhdGVzKCk7CiAgICAgTlNCdXR0b25DZWxs
ICpidXR0b25DZWxsID0gYnV0dG9uKHBhcnQsIGNvbnRyb2xTdGF0ZXMsIEludFNpemUoem9vbWVk
UmVjdC5zaXplKCkpLCB6b29tRmFjdG9yKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKIAogICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbYnV0
dG9uQ2VsbCBjb250cm9sU2l6ZV07CiAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gYnV0dG9uU2l6
ZXMoKVtjb250cm9sU2l6ZV07CkBAIC01NDcsOSArNTQ3LDkgQEAgc3RhdGljIHZvaWQgcGFpbnRC
dXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgR3Jh
cGhpY3MKICAgICAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICAgICAgaW5m
bGF0ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAg
ICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAv
IHpvb21GYWN0b3IpOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVj
dC54KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7
CisgICAgICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFj
dG9yKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwg
LWluZmxhdGVkUmVjdC55KCkpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtNTk5LDcgKzU5
OSw3IEBAIHN0YXRpYyBOU0NvbnRyb2xTaXplIHN0ZXBwZXJDb250cm9sU2l6ZUZvckZvbnQoY29u
c3QgRm9udENhc2NhZGUmIGZvbnQpCiAgICAgcmV0dXJuIE5TTWluaUNvbnRyb2xTaXplOwogfQog
Ci1zdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9v
bUZhY3RvciwgU2Nyb2xsVmlldyopCitzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0
YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
em9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xsVmlldyopCiB7CiAgICAgLy8gV2Ug
ZG9uJ3QgdXNlIE5TU3RlcHBlckNlbGwgYmVjYXVzZSB0aGVyZSBhcmUgbm8gd2F5cyB0byBkcmF3
IGFuCiAgICAgLy8gTlNTdGVwcGVyQ2VsbCB3aXRoIHRoZSB1cCBidXR0b24gaGlnaGxpZ2h0ZWQu
CkBAIC02MTcsMTMgKzYxNywxMyBAQCBzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0
YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0CiAgICAgICAgIGRy
YXdJbmZvLmtpbmQgPSBrVGhlbWVJbmNEZWNCdXR0b247CiAKICAgICBJbnRSZWN0IHJlY3Qoem9v
bWVkUmVjdCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250
ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CiAgICAgaWYgKHpvb21GYWN0b3IgIT0gMS4wZikgewogICAgICAgICByZWN0LnNldFdpZHRoKHJl
Y3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICByZWN0LnNldEhlaWdodChyZWN0Lmhl
aWdodCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyZWN0Lngo
KSwgcmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rv
ciwgem9vbUZhY3RvcikpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAt
cmVjdC55KCkpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkp
OworICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9y
KSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAg
ICB9CiAgICAgQ0dSZWN0IGJvdW5kcyhyZWN0KTsKICAgICBDR1JlY3QgYmFja2dyb3VuZEJvdW5k
czsKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAKIGNvbnN0IGZsb2F0IGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCA9IDMuMGY7CiAKLWJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCogY2VsbCwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGluZmxhdGVkUmVjdCwgTlNWaWV3KiB2aWV3LCBib29sIGRyYXdC
dXR0b25DZWxsLCBib29sIGRyYXdGb2N1c1JpbmcsIGJvb2wgdXNlSW1hZ2VCdWZmZXIsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKQorYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dp
dGhWaWV3SW50b0NvbnRleHQoTlNDZWxsKiBjZWxsLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgaW5mbGF0ZWRSZWN0LCBOU1ZpZXcqIHZpZXcsIGJvb2wgZHJhd0J1
dHRvbkNlbGwsIGJvb2wgZHJhd0ZvY3VzUmluZywgYm9vbCB1c2VJbWFnZUJ1ZmZlciwgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IpCiB7CiAgICAgQVNTRVJUKGRyYXdCdXR0b25DZWxsIHx8IGRyYXdG
b2N1c1JpbmcpOwogICAgIGJvb2wgbmVlZHNSZXBhaW50ID0gZmFsc2U7CkBAIC02NzksNyArNjc5
LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRl
eHQoTlNDZWxsKiBjZWxsLCBHcmFwaGljc0NvbnQKICAgICAgICAgICAgIGlmIChkcmF3Rm9jdXNS
aW5nKQogICAgICAgICAgICAgICAgIG5lZWRzUmVwYWludCA9IGRyYXdDZWxsRm9jdXNSaW5nKGNl
bGwsIGltYWdlQnVmZmVyRHJhd1JlY3QsIHZpZXcpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZVNSR0IsIGlu
ZmxhdGVkUmVjdC5sb2NhdGlvbigpIC0gRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlU1JHQiwgaW5mbGF0ZWRS
ZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWlu
dDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpAQCAtODQwLDcgKzg0MCw3IEBAIHZv
aWQgVGhlbWVNYWM6OmluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0IHBhcnQsIGNv
bnN0IENvbnRyb2xTdGF0ZXMmIHN0CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQog
Ci12b2lkIFRoZW1lTWFjOjpwYWludChDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3RhdGVzJiBz
dGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB6b29tZWRS
ZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3LCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKQordm9pZCBUaGVtZU1hYzo6cGFp
bnQoQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0YXRlcyYgc3RhdGVzLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3Rv
ciwgU2Nyb2xsVmlldyogc2Nyb2xsVmlldywgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0
IHBhZ2VTY2FsZUZhY3RvcikKIHsKICAgICBzd2l0Y2ggKHBhcnQpIHsKICAgICAgICAgY2FzZSBD
aGVja2JveFBhcnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lk
Z2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRl
eCA1NGQ5Yzg1N2RmNDAyYjgyZDdhN2QxMzBmOGY3NjE4NWUyYmQ3OWFhLi5iMzBmZDgxMzQzYzA2
YWNkODliYThmOWUyZjY3NDM3NmY2ZWFkMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0KQEAgLTE4NSw5ICsxODUsOSBAQCBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0
ZXJWaWV3KCkgY29uc3QKICAgICByZXR1cm4gdmlldzsKIH0KIAotdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcikKK3ZvaWQgV2lkZ2V0OjpwYWlu
dChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IEludFJlY3QmIHIpCiB7Ci0gICAgaWYgKHAtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBOU1ZpZXcgKnZpZXcgPSBnZXRPdXRlclZpZXcoKTsKIApAQCAtMjI5LDcg
KzIyOSw3IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IElu
dFJlY3QmIHIpCiAgICAgICAgICAgICBzY3JvbGxWaWV3ID0gMDsKICAgICB9CiAKLSAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gcC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IHAucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQVNTRVJUKGNnQ29udGV4
dCA9PSBbY3VycmVudENvbnRleHQgZ3JhcGhpY3NQb3J0XSk7CiAgICAgQ0dDb250ZXh0U2F2ZUdT
dGF0ZShjZ0NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuY3BwCmluZGV4IDNiNDk3NjYwY2M5NjhiMzAxZGNmMDY3ZTQzZjhlYzU4ODk3MWQxMjYuLjQ2
YTdjYjcxMTIyYTA0ZTI2YjZiYTJlMTYxOTAzN2E4YmFkOGQ3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikKIHsKIH0K
IAotdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JikKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaAppbmRleCAxYzFmMjE4MmU5NTkzN2M3YWM0
NWJiNTg3NGJlZGZjMGIwY2QxMmIwLi4wMzI2MWZhYzYyZjQzZmM4YWEyYzBkNzEwNzc4MzY2MjA3
YTUzYjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb25NZWRpYVRpbWUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmluZGV4IDRkZjdlNWViM2Ux
Mjg4MjY0MTNjNDUwY2IzZjAwY2NlN2JhM2VkYTIuLjY0NDQ4OTM4ZjNhOWRmYmI2ZGQ5NDIzMDlj
ZTQ4OTYxYmIyMjE5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
b3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBQb3B1cE1lbnVXaW46OnBhaW50KGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QsIEhEQyBoZGMpCiAgICAgfQogCiAgICAgaWYgKG1fc2Ny
b2xsYmFyKQotICAgICAgICBtX3Njcm9sbGJhci0+cGFpbnQoJmNvbnRleHQsIGRhbWFnZVJlY3Qp
OworICAgICAgICBtX3Njcm9sbGJhci0+cGFpbnQoY29udGV4dCwgZGFtYWdlUmVjdCk7CiAKICAg
ICBIV25kREMgaFduZERDOwogICAgIEhEQyBsb2NhbERDID0gaGRjID8gaGRjIDogaFduZERDLnNl
dEhXbmQobV9wb3B1cCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lV2luLmNwcAppbmRleCBjNjU0YWIxMDMxOWY3MTUwNGQxNGY3ZTIxYWU3ZDE1NjVh
NGYwOTBiLi4zYTA5NDQ0MjNiNjg0YjgzODFiN2E0M2E5YTg5NmIzOWFmOWI0MzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcgogICAgIGlmIChzY3JvbGxi
YXJUaGVtZSkKICAgICAgICAgYWxwaGFCbGVuZCA9IElzVGhlbWVCYWNrZ3JvdW5kUGFydGlhbGx5
VHJhbnNwYXJlbnQoc2Nyb2xsYmFyVGhlbWUsIHBhcnQsIHN0YXRlKTsKIAotICAgIExvY2FsV2lu
ZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoJmNvbnRleHQsIHJlY3QsIGFscGhhQmxlbmQpOwor
ICAgIExvY2FsV2luZG93c0NvbnRleHQgd2luZG93c0NvbnRleHQoY29udGV4dCwgcmVjdCwgYWxw
aGFCbGVuZCk7CiAgICAgUkVDVCB0aGVtZVJlY3QocmVjdCk7CiAKICAgICBpZiAoc2Nyb2xsYmFy
VGhlbWUpCkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGIKICAgICBp
ZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIGFscGhhQmxlbmQgPSBJc1RoZW1lQmFja2dyb3Vu
ZFBhcnRpYWxseVRyYW5zcGFyZW50KHNjcm9sbGJhclRoZW1lLCBTUF9CVVRUT04sIHhwU3RhdGUp
OwogCi0gICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVj
dCwgYWxwaGFCbGVuZCk7CisgICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChj
b250ZXh0LCByZWN0LCBhbHBoYUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAg
ICBpZiAoc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xs
YmFyVGhlbWUsIHdpbmRvd3NDb250ZXh0LmhkYygpLCBTUF9CVVRUT04sIHhwU3RhdGUsICZ0aGVt
ZVJlY3QsIDApOwpAQCAtMzcyLDcgKzM3Miw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhCiAg
ICAgYm9vbCBhbHBoYUJsZW5kID0gZmFsc2U7CiAgICAgaWYgKHNjcm9sbGJhclRoZW1lKQogICAg
ICAgICBhbHBoYUJsZW5kID0gSXNUaGVtZUJhY2tncm91bmRQYXJ0aWFsbHlUcmFuc3BhcmVudChz
Y3JvbGxiYXJUaGVtZSwgc2Nyb2xsYmFyLm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IFNQX1RIVU1CSE9SIDogU1BfVEhVTUJWRVJULCBzdGF0ZSk7Ci0gICAgTG9jYWxXaW5k
b3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dCgmY29udGV4dCwgcmVjdCwgYWxwaGFCbGVuZCk7Cisg
ICAgTG9jYWxXaW5kb3dzQ29udGV4dCB3aW5kb3dzQ29udGV4dChjb250ZXh0LCByZWN0LCBhbHBo
YUJsZW5kKTsKICAgICBSRUNUIHRoZW1lUmVjdChyZWN0KTsKICAgICBpZiAoc2Nyb2xsYmFyVGhl
bWUpIHsKICAgICAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgd2luZG93
c0NvbnRleHQuaGRjKCksIHNjcm9sbGJhci5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIgPyBTUF9USFVNQkhPUiA6IFNQX1RIVU1CVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVy
ZXIuY3BwCmluZGV4IDk0ZTA5NDkxMGUyOGYzMDllMDNjNWUwMzMzZWFiMWQ0ZjQ4ZjBjNmMuLmRm
NTdlNWEzZTZkOTI3MmEwYTljMmVmOTg3MTI5OTNlZThhZjM5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTUxLDcg
KzUxLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBpZiAoaXNPbmVMZWZ0VG9SaWdo
dFJ1bihydW4pKQotICAgICAgICBmb250LmRyYXdUZXh0KCZjb250ZXh0LCBydW4sIHBvaW50KTsK
KyAgICAgICAgZm9udC5kcmF3VGV4dChjb250ZXh0LCBydW4sIHBvaW50KTsKICAgICBlbHNlCiAg
ICAgICAgIGNvbnRleHQuZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgcG9pbnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2lkZ2V0V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCmluZGV4IDI3MWUzNmQ1Y2IzMTBmNWY2
ODg3ZGQyMzc5MGE5YjZiYTQ2OGYwYTAuLjlhY2UxYTE0ODUyNDlkNzU2ZTFiZDNlMjJlN2UxNjA2
NDA1ZTlkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaWRnZXRXaW4uY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJiBjdXJz
b3IpCiAgICAgdmlldy0+aG9zdFdpbmRvdygpLT5zZXRDdXJzb3IoY3Vyc29yKTsKIH0KIAotdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQordm9pZCBX
aWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNwcAppbmRleCA0NjlmN2VmZWU4N2Y3
NTIxNDIyNTI2ZGM2NjVhNmM0MTZkNGVmODM1Li4yZThmZDBiYjBhMmUwYmE0M2I2ZWM1NTYwYTQz
NGQ2YmZmZmRiNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBz
aXNCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAK
QEAgLTQyLDE0ICs0MiwxNCBAQCBFbGxpcHNpc0JveDo6RWxsaXBzaXNCb3goUmVuZGVyQmxvY2tG
bG93JiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpcwogCiB2b2lkIEVsbGlw
c2lzQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkKIHsK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUgPSB0aGlzLT5saW5lU3R5bGUoKTsKICAgICBDb2xvciB0
ZXh0Q29sb3IgPSBsaW5lU3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEZpbGxDb2xvcik7Ci0gICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LT5maWxsQ29s
b3IoKSkKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHRleHRDb2xvciwgbGluZVN0eWxl
LmNvbG9yU3BhY2UoKSk7CisgICAgaWYgKHRleHRDb2xvciAhPSBjb250ZXh0LmZpbGxDb2xvcigp
KQorICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcih0ZXh0Q29sb3IsIGxpbmVTdHlsZS5jb2xv
clNwYWNlKCkpOwogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7CiAgICAgaWYgKGxpbmVTdHls
ZS50ZXh0U2hhZG93KCkpIHsKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KExheW91dFNpemUo
bGluZVN0eWxlLnRleHRTaGFkb3coKS0+eCgpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT55KCkp
LAorICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhMYXlvdXRTaXplKGxpbmVTdHlsZS50ZXh0U2hh
ZG93KCktPngoKSwgbGluZVN0eWxlLnRleHRTaGFkb3coKS0+eSgpKSwKICAgICAgICAgICAgIGxp
bmVTdHlsZS50ZXh0U2hhZG93KCktPnJhZGl1cygpLCBsaW5lU3R5bGUudGV4dFNoYWRvdygpLT5j
b2xvcigpLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgc2V0U2hhZG93ID0gdHJ1
ZTsKICAgICB9CkBAIC02MSwxOCArNjEsMTggQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgTGEKICAg
ICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0IGNvbG9yIGZvciBwYWludGluZyB0aGUgdGV4dC4K
ICAgICAgICAgQ29sb3IgZm9yZWdyb3VuZCA9IHBhaW50SW5mby5mb3JjZVRleHRDb2xvcigpID8g
cGFpbnRJbmZvLmZvcmNlZFRleHRDb2xvcigpIDogYmxvY2tGbG93KCkuc2VsZWN0aW9uRm9yZWdy
b3VuZENvbG9yKCk7CiAgICAgICAgIGlmIChmb3JlZ3JvdW5kLmlzVmFsaWQoKSAmJiBmb3JlZ3Jv
dW5kICE9IHRleHRDb2xvcikKLSAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihmb3Jl
Z3JvdW5kLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0
RmlsbENvbG9yKGZvcmVncm91bmQsIGxpbmVTdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdheXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3Jy
ZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgotICAgIGNvbnRleHQtPmRyYXdUZXh0KGZvbnQsIFJl
bmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxp
bmVTdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50
T2Zmc2V0LngoKSwgeSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNz
KCkuYXNjZW50KCkpKTsKKyAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIFJlbmRlckJsb2NrOjpj
b25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIGxpbmVTdHlsZSwgQWxs
b3dUcmFpbGluZ0V4cGFuc2lvbiksIExheW91dFBvaW50KHgoKSArIHBhaW50T2Zmc2V0LngoKSwg
eSgpICsgcGFpbnRPZmZzZXQueSgpICsgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCkp
KTsKIAogICAgIC8vIFJlc3RvcmUgdGhlIHJlZ3VsYXIgZmlsbCBjb2xvci4KLSAgICBpZiAodGV4
dENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQotICAgICAgICBjb250ZXh0LT5zZXRGaWxs
Q29sb3IodGV4dENvbG9yLCBsaW5lU3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICBpZiAodGV4dENv
bG9yICE9IGNvbnRleHQuZmlsbENvbG9yKCkpCisgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9y
KHRleHRDb2xvciwgbGluZVN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICBpZiAoc2V0U2hhZG93
KQotICAgICAgICBjb250ZXh0LT5jbGVhclNoYWRvdygpOworICAgICAgICBjb250ZXh0LmNsZWFy
U2hhZG93KCk7CiAKICAgICBwYWludE1hcmt1cEJveChwYWludEluZm8sIHBhaW50T2Zmc2V0LCBs
aW5lVG9wLCBsaW5lQm90dG9tLCBsaW5lU3R5bGUpOwogfQpAQCAtMTE5LDcgKzExOSw3IEBAIElu
dFJlY3QgRWxsaXBzaXNCb3g6OnNlbGVjdGlvblJlY3QoKQogICAgIHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KHNlbGVjdGlvblJlY3QpOwogfQogCi12b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVj
dGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCkK
K3ZvaWQgRWxsaXBzaXNCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250KQogewogICAgIENvbG9yIHRleHRDb2xvciA9IHN0
eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICBDb2xvciBj
ID0gYmxvY2tGbG93KCkuc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCk7CkBAIC0xMzIsMTIgKzEz
MiwxMiBAQCB2b2lkIEVsbGlwc2lzQm94OjpwYWludFNlbGVjdGlvbihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYQogICAgICAgICBjID0gQ29sb3IoMHhmZiAt
IGMucmVkKCksIDB4ZmYgLSBjLmdyZWVuKCksIDB4ZmYgLSBjLmJsdWUoKSk7CiAKICAgICBjb25z
dCBSb290SW5saW5lQm94JiByb290Qm94ID0gcm9vdCgpOwotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBhbHdh
eXMgTFRSPyBGaXggYnkgcGFzc2luZyBjb3JyZWN0IHRleHQgcnVuIGZsYWdzIGJlbG93LgogICAg
IExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdCA9IExheW91dFJlY3QoeCgpICsgcGFpbnRPZmZzZXQu
eCgpLCB5KCkgKyBwYWludE9mZnNldC55KCkgKyByb290Qm94LnNlbGVjdGlvblRvcCgpLCAwLCBy
b290Qm94LnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJsb2Nr
Ojpjb25zdHJ1Y3RUZXh0UnVuKCZibG9ja0Zsb3coKSwgZm9udCwgbV9zdHIsIHN0eWxlLCBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uKTsKICAgICBmb250LmFkanVzdFNlbGVjdGlvblJlY3RGb3JUZXh0
KHJ1biwgc2VsZWN0aW9uUmVjdCwgMCwgLTEpOwotICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5k
ZXJlcigpLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHNXaXRoV3JpdGluZ0RpcmVjdGlvbihzZWxlY3Rpb25SZWN0LCByZW5kZXJlcigpLmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSwgcnVuLmx0cigpKSwgYywgc3R5bGUuY29sb3JTcGFj
ZSgpKTsKIH0KIAogYm9vbCBFbGxpcHNpc0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0
QWN0aW9uIGhpdFRlc3RBY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRWxsaXBzaXNCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5o
CmluZGV4IDI3ZTkxMmZmZmEwM2E1NGUxMjRkOWJkMzJmYzcxOTE2NjMxY2IyNTEuLjQ0YzA1ZGFm
MWFkMjRiY2ZiMDhmYzNjNDljZGExNGFiNzZjZjExMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5oCkBAIC00Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWlu
dE1hcmt1cEJveChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBjb25zdCBSZW5kZXJTdHls
ZSYpOwogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQogICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0KLSAgICB2b2lkIHBhaW50U2VsZWN0aW9u
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGb250Q2FzY2FkZSYpOworICAgIHZvaWQgcGFpbnRTZWxlY3Rpb24oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZv
bnRDYXNjYWRlJik7CiAgICAgSW5saW5lQm94KiBtYXJrdXBCb3goKSBjb25zdDsKIAogICAgIGJv
b2wgbV9zaG91bGRQYWludE1hcmt1cEJveDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IDYyZGFjNGI4YjQ2MjIzODdiOGRjY2U3
OGZlYTIwOTJkMjE0NDBlNWMuLjU3NTdlOWE4NTE4M2MwNzY4MGJhMTlmNGE2YTMyMWU2NTc2ZDFj
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5k
ZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRl
cmVyLmNwcApAQCAtODAsNyArODAsNyBAQCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6fkZpbHRlckVm
ZmVjdFJlbmRlcmVyKCkKIAogR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6
aW5wdXRDb250ZXh0KCkKIHsKLSAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJjZUltYWdl
KCktPmNvbnRleHQoKSA6IDA7CisgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291cmNlSW1h
Z2UoKS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAogUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKQEAgLTQxNyw3ICs0MTcsNyBA
QCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjpiZWdpbkZpbHRlckVmZmVjdCgpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI6OmFw
cGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCogZGVzdGluYXRpb25Db250ZXh0KQordm9p
ZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlcjo6YXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3ND
b250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1faGF2ZUZpbHRlckVm
ZmVjdCAmJiBtX3JlbmRlckxheWVyLT5maWx0ZXJSZW5kZXJlcigpKTsKICAgICBGaWx0ZXJFZmZl
Y3RSZW5kZXJlciogZmlsdGVyID0gbV9yZW5kZXJMYXllci0+ZmlsdGVyUmVuZGVyZXIoKTsKQEAg
LTQyOSw3ICs0MjksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyOjphcHBseUZp
bHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQqIGRlc3RpbmF0aW9uQwogICAgIExheW91dFJlY3Qg
ZGVzdFJlY3QgPSBmaWx0ZXItPm91dHB1dFJlY3QoKTsKICAgICBkZXN0UmVjdC5tb3ZlKG1fcGFp
bnRPZmZzZXQueCgpLCBtX3BhaW50T2Zmc2V0LnkoKSk7CiAKLSAgICBkZXN0aW5hdGlvbkNvbnRl
eHQtPmRyYXdJbWFnZUJ1ZmZlcihmaWx0ZXItPm91dHB1dCgpLCBtX3JlbmRlckxheWVyLT5yZW5k
ZXJlcigpLnN0eWxlKCkuY29sb3JTcGFjZSgpLAorICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoZmlsdGVyLT5vdXRwdXQoKSwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwKICAgICAgICAgc25hcFJlY3RUb0RldmljZVBpeGVscyhkZXN0
UmVjdCwgbV9yZW5kZXJMYXllci0+cmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIAogICAgIGZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCmluZGV4IGJl
YjNmNzdjNDhhMGEyYjRmYTEzYjZlNjQ1NmNiM2E3N2E5YjBmNjguLjNlMTMzN2QzZDE1Zjc2MTE5
MzRkNWM2ZDU3NmE5ZjE4MjAxNDc4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcHJlcGFyZUZpbHRlckVmZmVjdChSZW5kZXJMYXllciosIGNvbnN0IExheW91dFJlY3Qm
IGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgYm9vbCBiZWdpbkZpbHRlckVmZmVjdCgpOwot
ICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0KiBkZXN0aW5hdGlvbkNv
bnRleHQpOworICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0
aW5hdGlvbkNvbnRleHQpOwogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4
dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VR
dWFsaXR5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFs
aXR5Q29udHJvbGxlci5jcHAKaW5kZXggYzRhNmU0M2M2NzIyZjQxMGY3YmY5MGQxMDhiOGM1NjBj
MzIwMDA5Yy4uNmZiODM0MjQyNzQ3OTQ0MThjYTgwMzNkN2I0ZGFkNzFiN2QxMzRhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ltYWdlUXVhbGl0eUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVyLmNw
cApAQCAtOTksMTEgKzk5LDExIEBAIHZvaWQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6cmVzdGFy
dFRpbWVyKCkKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChjTG93UXVhbGl0eVRpbWVUaHJlc2hv
bGQpOwogfQogCi1ib29sIEltYWdlUXVhbGl0eUNvbnRyb2xsZXI6OnNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9i
amVjdCwgSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkICpsYXllciwgY29uc3QgTGF5b3V0U2l6ZSYg
c2l6ZSkKK2Jvb2wgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRBdExvd1F1YWxp
dHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0
LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQgKmxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXpl
KQogewogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBub3QgYSBiaXRtYXAgaW1hZ2UsIHRoZW4gbm9u
ZSBvZiB0aGlzIGlzIHJlbGV2YW50IGFuZCB3ZSBqdXN0IHBhaW50IGF0IGhpZ2gKICAgICAvLyBx
dWFsaXR5LgotICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGlt
YWdlLT5pc1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgIGlmICghaW1hZ2UgfHwgIShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpIHx8IGltYWdlLT5p
c1BERkRvY3VtZW50SW1hZ2UoKSkgfHwgY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAob2JqZWN0LT5zdHlsZSgpLmltYWdlUmVu
ZGVyaW5nKCkpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXI6OnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUgog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgY3VycmVudFRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAg
Ym9vbCBjb250ZXh0SXNTY2FsZWQgPSAhY3VycmVudFRyYW5zZm9ybS5pc0lkZW50aXR5T3JUcmFu
c2xhdGlvbk9yRmxpcHBlZCgpOwogICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIHNpemUgPT0g
aW1hZ2VTaXplKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVjdC4gSWYg
d2UgaGFkIGEgc2NhbGUgaW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoaXMg
b2JqZWN0IGZyb20gdGhlIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lt
YWdlUXVhbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNWQ3ZWU5MmY1N2NlYTM2YmE2NzYzMzliODY4
NmZjYTM1Y2JhNWJkLi5kMTRkYzQ5YWE3OWFmMzE1ZGFjOGUxZDUxMjFjMzQwMjYwZWY2NWUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW1hZ2VRdWFsaXR5Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbWFnZVF1YWxpdHlDb250cm9sbGVy
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgSW1hZ2VRdWFsaXR5Q29udHJvbGxlciB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSW1hZ2VRdWFsaXR5Q29udHJvbGxlcihjb25zdCBSZW5kZXJWaWV3
Jik7CiAKLSAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCos
IFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25zdCB2b2lkKiBsYXllciwgY29uc3Qg
TGF5b3V0U2l6ZSYpOworICAgIGJvb2wgc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3ND
b250ZXh0JiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IHZvaWQqIGxheWVy
LCBjb25zdCBMYXlvdXRTaXplJik7CiAgICAgdm9pZCByZW5kZXJlcldpbGxCZURlc3Ryb3llZChS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIHsgcmVtb3ZlT2JqZWN0KCZyZW5kZXJlcik7
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAppbmRleCAzNTliZWQ2NTYzMWYxN2RmODU0OWI3ZWMzNDYwYThiMDkzZmUwMWY5Li5hODc0Y2Rj
MWM3ZDFkMWU3OGU0Yjc3NjA5OWVjY2EwYzhiNGIzYjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMjIwLDggKzEyMjAsOCBAQCB2b2lkIElubGlu
ZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBDb2xvciYgYywgYwogICAgICAgICByZW5kZXJlcigpLnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIHRoaXMs
IHJlY3Quc2l6ZSgpLCBvcCk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykK
ICAgICBlbHNlIGlmIChyZW5kZXJlcigpLnN0eWxlKCkuYm94RGVjb3JhdGlvbkJyZWFrKCkgPT0g
RENMT05FKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlv
dXRSZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwg
cmVjdC55KCksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRG
aWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgQmFja2dyb3Vu
ZEJsZWVkTm9uZSwgdGhpcywgcmVjdC5zaXplKCksIG9wKTsKICAgICB9CiAjZW5kaWYKQEAgLTEy
NTIsOCArMTI1Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjCiAgICAgICAgIExheW91dFVu
aXQgc3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBMYXlv
dXRVbml0KHdpZHRoKCkpOwogICAgICAgICBMYXlvdXRVbml0IHN0cmlwSGVpZ2h0ID0gaXNIb3Jp
em9udGFsKCkgPyBMYXlvdXRVbml0KGhlaWdodCgpKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCi0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcChMYXlvdXRSZWN0KHJlY3Qu
eCgpLCByZWN0LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAoTGF5b3V0UmVjdChyZWN0LngoKSwgcmVjdC55KCksIHdp
ZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChwYWludEluZm8sIGMsIGZpbGxMYXllciwgTGF5b3V0UmVjdChzdHJpcFgsIHN0cmlwWSwg
c3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCBCYWNrZ3JvdW5kQmxlZWROb25lLCB0aGlzLCByZWN0
LnNpemUoKSwgb3ApOwogICAgIH0KIH0KQEAgLTEzMzcsNyArMTMzNyw3IEBAIHZvaWQgSW5saW5l
Rmxvd0JveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dFBvaW50IGFkanVzdGVk
UGFpbnRvZmZzZXQgPSBwYWludE9mZnNldCArIGxvY2FsUmVjdC5sb2NhdGlvbigpOwotICAgIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAgICAgTGF5b3V0UmVjdCBw
YWludFJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRvZmZzZXQsIGZyYW1lUmVjdC5zaXpl
KCkpOwogICAgIC8vIFNoYWRvdyBjb21lcyBmaXJzdCBhbmQgaXMgYmVoaW5kIHRoZSBiYWNrZ3Jv
dW5kIGFuZCBib3JkZXIuCiAgICAgaWYgKCFyZW5kZXJlcigpLmJveFNoYWRvd1Nob3VsZEJlQXBw
bGllZFRvQmFja2dyb3VuZChhZGp1c3RlZFBhaW50b2Zmc2V0LCBCYWNrZ3JvdW5kQmxlZWROb25l
LCB0aGlzKSkKQEAgLTEzODIsOCArMTM4Miw4IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAg
ICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVj
dC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRoOwogCiAgICAgICAgIExheW91dFJlY3QgY2xp
cFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUltYWdlU3RyaXAodGhpcywgYm9yZGVySW1hZ2Us
IHBhaW50UmVjdCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOworICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgIGNv
bnRleHQuY2xpcChjbGlwUmVjdCk7CiAgICAgICAgIHJlbmRlcmVyKCkucGFpbnRCb3JkZXIocGFp
bnRJbmZvLCBMYXlvdXRSZWN0KHN0cmlwWCwgc3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdo
dCksIGxpbmVTdHlsZSk7CiAgICAgfQogfQpAQCAtMTQxNSw4ICsxNDE1LDggQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludE1hc2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mZnMKICAgICAgICAgCiAgICAgICAgIGNvbXBvc2l0ZU9wID0gQ29tcG9zaXRl
RGVzdGluYXRpb25JbjsKICAgICAgICAgaWYgKHB1c2hUcmFuc3BhcmVuY3lMYXllcikgewotICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVEZXN0aW5hdGlvbkluKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKDEuMGYpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7CisgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4wZik7CiAgICAg
ICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xNDI3LDE0ICsxNDI3LDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNr
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAg
Ym9vbCBoYXNCb3hJbWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNhblJlbmRl
cigmcmVuZGVyZXIoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAg
aWYgKCFoYXNCb3hJbWFnZSB8fCAhbWFza0JveEltYWdlLT5pc0xvYWRlZCgpKSB7CiAgICAgICAg
IGlmIChwdXNoVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAgcmV0dXJuOyAvLyBEb24ndCBwYWlu
dCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gbG9hZC4KICAgICB9CiAK
ICAgICAvLyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2UgYXJlIHRoZSBvbmx5IGJveCBmb3Ig
dGhpcyBvYmplY3QuICBJbiB0aG9zZQogICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUgY2FsbCB0
byBkcmF3IGlzIHJlcXVpcmVkLgogICAgIGlmICghcHJldkxpbmVCb3goKSAmJiAhbmV4dExpbmVC
b3goKSkgewotICAgICAgICByZW5kZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZv
LmNvbnRleHQsIExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldCwgZnJhbWVSZWN0LnNpemUo
KSksIHJlbmRlcmVyKCkuc3R5bGUoKSwgbWFza05pbmVQaWVjZUltYWdlLCBjb21wb3NpdGVPcCk7
CisgICAgICAgIHJlbmRlcmVyKCkucGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4
dCgpLCBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIGZyYW1lUmVjdC5zaXplKCkpLCBy
ZW5kZXJlcigpLnN0eWxlKCksIG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGhhdmUgYSBtYXNrIGltYWdlIHRoYXQgc3BhbnMgbXVs
dGlwbGUgbGluZXMuCiAgICAgICAgIC8vIFdlIG5lZWQgdG8gYWRqdXN0IF90eCBhbmQgX3R5IGJ5
IHRoZSB3aWR0aCBvZiBhbGwgcHJldmlvdXMgbGluZXMuCkBAIC0xNDUwLDEzICsxNDUwLDEzIEBA
IHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzCiAgICAgICAgIExheW91dFVuaXQgc3RyaXBIZWlnaHQg
PSBpc0hvcml6b250YWwoKSA/IGZyYW1lUmVjdC5oZWlnaHQoKSA6IHRvdGFsTG9naWNhbFdpZHRo
OwogCiAgICAgICAgIExheW91dFJlY3QgY2xpcFJlY3QgPSBjbGlwUmVjdEZvck5pbmVQaWVjZUlt
YWdlU3RyaXAodGhpcywgbWFza05pbmVQaWVjZUltYWdlLCBwYWludFJlY3QpOwotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoY2xpcFJlY3QpOwotICAgICAgICByZW5k
ZXJlcigpLnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3Qo
c3RyaXBYLCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0KSwgcmVuZGVyZXIoKS5zdHls
ZSgpLCBtYXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoY2xpcFJlY3QpOworICAgICAgICByZW5kZXJlcigp
LnBhaW50TmluZVBpZWNlSW1hZ2UocGFpbnRJbmZvLmNvbnRleHQoKSwgTGF5b3V0UmVjdChzdHJp
cFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQpLCByZW5kZXJlcigpLnN0eWxlKCks
IG1hc2tOaW5lUGllY2VJbWFnZSwgY29tcG9zaXRlT3ApOwogICAgIH0KICAgICAKICAgICBpZiAo
cHVzaFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5lbmRUcmFuc3Bh
cmVuY3lMYXllcigpOwogfQogCiBJbmxpbmVCb3gqIElubGluZUZsb3dCb3g6OmZpcnN0TGVhZkNo
aWxkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA5ZTZkMmNlYzBmZDQ1NDNhNjdhYTc4ZmJjMmQ3MWQyZGY4MjQwYjhiLi5mMzUxM2RjM2Q1
MmNjN2M1NGRhZDcwYjQ5YTExYzJjZmYxNGQ2ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBJbmxpbmVUZXh0
Qm94OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
ID0gKnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CiAKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlID0g
dGhpcy0+bGluZVN0eWxlKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgK
aW5kZXggMTViMWYyNDEyODI3NDRkYzViZDZkYjVjMmY5Y2RmMTc4ODViODk4NC4uZGRiYzkzMzUw
YTczMmEzMTU1Yzc3NGVjYTI4NDk0NDNjNGI0MzY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YWludEluZm8uaApAQCAtNDksMjAgKzQ5LDMxIEBAIHR5cGVkZWYgSGFzaE1hcDxPdmVybGFwVGVz
dFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAgKiAodHh8
dHkpIGlzIHRoZSBjYWxjdWxhdGVkIHBvc2l0aW9uIG9mIHRoZSBwYXJlbnQKICAqLwogc3RydWN0
IFBhaW50SW5mbyB7Ci0gICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFpbnRCZWhh
dmlvciBuZXdQYWludEJlaGF2aW9yLAorICAgIFBhaW50SW5mbyhHcmFwaGljc0NvbnRleHQmIG5l
d0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIG5ld1JlY3QsIFBhaW50UGhhc2UgbmV3UGhhc2Us
IFBhaW50QmVoYXZpb3IgbmV3UGFpbnRCZWhhdmlvciwKICAgICAgICAgUmVuZGVyT2JqZWN0KiBu
ZXdTdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4q
IG5ld091dGxpbmVPYmplY3RzID0gbnVsbHB0ciwKICAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0
TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogbmV3UGFpbnRDb250YWluZXIgPSBudWxscHRyKQotICAgICAgICAgICAgOiBjb250
ZXh0KG5ld0NvbnRleHQpCi0gICAgICAgICAgICAsIHJlY3QobmV3UmVjdCkKKyAgICAgICAgICAg
IDogcmVjdChuZXdSZWN0KQogICAgICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKICAgICAgICAg
ICAgICwgcGFpbnRCZWhhdmlvcihuZXdQYWludEJlaGF2aW9yKQogICAgICAgICAgICAgLCBzdWJ0
cmVlUGFpbnRSb290KG5ld1N1YnRyZWVQYWludFJvb3QpCiAgICAgICAgICAgICAsIG91dGxpbmVP
YmplY3RzKG5ld091dGxpbmVPYmplY3RzKQogICAgICAgICAgICAgLCBvdmVybGFwVGVzdFJlcXVl
c3RzKG92ZXJsYXBUZXN0UmVxdWVzdHMpCiAgICAgICAgICAgICAsIHBhaW50Q29udGFpbmVyKG5l
d1BhaW50Q29udGFpbmVyKQorICAgICAgICAgICAgLCBtX2NvbnRleHQoJm5ld0NvbnRleHQpCiAg
ICAgewogICAgIH0KIAorICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQobV9jb250ZXh0KTsKKyAgICAgICAgcmV0dXJuICptX2NvbnRleHQ7
CisgICAgfQorCisgICAgdm9pZCBzZXRDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
KyAgICB7CisgICAgICAgIG1fY29udGV4dCA9ICZjb250ZXh0OworICAgIH0KKwogICAgIHZvaWQg
dXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiAgICAgewogICAgICAgICBpZiAoIXN1YnRyZWVQYWludFJvb3QpCkBAIC05Myw3ICsx
MDQsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKGxvY2FsVG9BbmNlc3RvclRy
YW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29u
dGV4dC0+Y29uY2F0Q1RNKGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybSk7CisgICAgICAgIGNvbnRl
eHQoKS5jb25jYXRDVE0obG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtKTsKIAogICAgICAgICBpZiAo
cmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMsNyArMTE0LDYg
QEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIHJlY3Quc2V0U2l6ZShMYXlvdXRTaXplKHRy
YW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dDsKICAgICBMYXlvdXRSZWN0IHJlY3Q7CiAgICAgUGFpbnRQaGFzZSBwaGFzZTsKICAgICBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3I7CkBAIC0xMTEsNiArMTIxLDkgQEAgc3RydWN0IFBh
aW50SW5mbyB7CiAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG91dGxpbmVPYmplY3Rz
OyAvLyB1c2VkIHRvIGxpc3Qgb3V0bGluZXMgdGhhdCBzaG91bGQgYmUgcGFpbnRlZCBieSBhIGJs
b2NrIHdpdGggaW5saW5lIGNoaWxkcmVuCiAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVy
bGFwVGVzdFJlcXVlc3RzOwogICAgIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50
Q29udGFpbmVyOyAvLyB0aGUgbGF5ZXIgb2JqZWN0IHRoYXQgb3JpZ2luYXRlcyB0aGUgY3VycmVu
dCBwYWludGluZworCitwcml2YXRlOgorICAgIEdyYXBoaWNzQ29udGV4dCogbV9jb250ZXh0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggOWFkZTc5NGE1N2YxZDAwY2E3NDY1YjRjYzNmZDBmOGM4NjAzYzUy
YS4uODY0OTZkZmE5Yjc1MGEzOWZhYzc3NWM5ZDExZGM5NjRjOTJkYmRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDIwLDcgKzE0MjAsNyBAQCB2b2lk
IFJlbmRlckJsb2NrOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgIC8vIHotaW5kZXguICBXZSBwYWludCBhZnRlciB3ZSBwYWlu
dGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUgc2Nyb2xsYmFycyB3aWxsCiAg
ICAgLy8gc2l0IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAgICBpZiAoKHBoYXNlID09
IFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQgfHwgcGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkQmxv
Y2tCYWNrZ3JvdW5kKSAmJiBoYXNPdmVyZmxvd0NsaXAoKSAmJiBzdHlsZSgpLnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFICYmIHBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpICYm
ICFwYWludEluZm8ucGFpbnRSb290QmFja2dyb3VuZE9ubHkoKSkKLSAgICAgICAgbGF5ZXIoKS0+
cGFpbnRPdmVyZmxvd0NvbnRyb2xzKHBhaW50SW5mby5jb250ZXh0LCByb3VuZGVkSW50UG9pbnQo
YWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7Cisg
ICAgICAgIGxheWVyKCktPnBhaW50T3ZlcmZsb3dDb250cm9scyhwYWludEluZm8uY29udGV4dCgp
LCByb3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHNuYXBwZWRJbnRSZWN0KHBh
aW50SW5mby5yZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGVudHMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTE1
MTYsOSArMTUxNiw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q2FyZXQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICBpZiAoY2FyZXRQ
YWludGVyID09IHRoaXMgJiYgKGlzQ29udGVudEVkaXRhYmxlIHx8IGNhcmV0QnJvd3NpbmcpKSB7
CiAgICAgICAgIGlmICh0eXBlID09IEN1cnNvckNhcmV0KQotICAgICAgICAgICAgZnJhbWUoKS5z
ZWxlY3Rpb24oKS5wYWludENhcmV0KHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNldCwgcGFp
bnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5zZWxlY3Rpb24oKS5wYWludENhcmV0
KHBhaW50SW5mby5jb250ZXh0KCksIHBhaW50T2Zmc2V0LCBwYWludEluZm8ucmVjdCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGZyYW1lKCkucGFnZSgpLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkucGFpbnREcmFnQ2FyZXQoJmZyYW1lKCksIHBhaW50SW5mby5jb250ZXh0LCBwYWludE9mZnNl
dCwgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgZnJhbWUoKS5wYWdlKCktPmRyYWdDYXJl
dENvbnRyb2xsZXIoKS5wYWludERyYWdDYXJldCgmZnJhbWUoKSwgcGFpbnRJbmZvLmNvbnRleHQo
KSwgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKQEAgLTE1MzgsMTYg
KzE1MzgsMTYgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAgICAgICAgICAgICAvLyBv
dmVyZmxvd3MgcmVnaW9uIFggYW5kIGlzIGFuIHVuc3BsaXR0YWJsZSBlbGVtZW50IChsaWtlIGFu
IGltYWdlKS4KICAgICAgICAgICAgICAgICAvLyBUaGUgc2FtZSBhcHBsaWVzIGZvciBhIGJveCBv
dmVyZmxvd2luZyB0aGUgdG9wIG9mIHJlZ2lvbiBYIHdoZW4gdGhhdCBib3ggaXMgYWxzbyBmcmFn
bWVudGVkIGluIHJlZ2lvbiBYLTEuCiAKLSAgICAgICAgICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2F2ZSgpOworICAgICAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwog
ICAgICAgICAgICAgICAgIGRpZENsaXBUb1JlZ2lvbiA9IHRydWU7CiAKLSAgICAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcChkb3duY2FzdDxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+
KCpwYWludEluZm8ucGFpbnRDb250YWluZXIpLmRlY29yYXRpb25zQ2xpcFJlY3RGb3JCb3hJbk5h
bWVkRmxvd0ZyYWdtZW50KCp0aGlzLCAqbmFtZWRGbG93RnJhZ21lbnQpKTsKKyAgICAgICAgICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXAoZG93bmNhc3Q8UmVuZGVyTmFtZWRGbG93VGhy
ZWFkPigqcGFpbnRJbmZvLnBhaW50Q29udGFpbmVyKS5kZWNvcmF0aW9uc0NsaXBSZWN0Rm9yQm94
SW5OYW1lZEZsb3dGcmFnbWVudCgqdGhpcywgKm5hbWVkRmxvd0ZyYWdtZW50KSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIHBhaW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChkaWRDbGlwVG9SZWdpb24p
Ci0gICAgICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMTc2NSw3ICsxNzY1LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rpb24o
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE8KICAgICAgICAg
TGF5b3V0VW5pdCBsYXN0VG9wID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBsYXN0TGVmdCA9IGxv
Z2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KCp0aGlzLCBsYXN0VG9wLCBjYWNoZSk7CiAgICAgICAg
IExheW91dFVuaXQgbGFzdFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KCp0aGlz
LCBsYXN0VG9wLCBjYWNoZSk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAgICAgTGF5b3V0
UmVjdCBnYXBSZWN0c0JvdW5kcyA9IHNlbGVjdGlvbkdhcHMoKnRoaXMsIHBhaW50T2Zmc2V0LCBM
YXlvdXRTaXplKCksIGxhc3RUb3AsIGxhc3RMZWZ0LCBsYXN0UmlnaHQsIGNhY2hlLCAmcGFpbnRJ
bmZvKTsKICAgICAgICAgaWYgKCFnYXBSZWN0c0JvdW5kcy5pc0VtcHR5KCkpIHsKQEAgLTE3OTYs
NyArMTc5Niw3IEBAIHN0YXRpYyB2b2lkIGNsaXBPdXRQb3NpdGlvbmVkT2JqZWN0cyhjb25zdCBQ
YWludEluZm8qIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pCiAgICAgVHJhY2tlZFJlbmRlcmVy
TGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3RzLT5lbmQo
KTsKICAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgUmVuZGVyQm94KiByID0gKml0OwotICAgICAgICBwYWludEluZm8tPmNvbnRleHQtPmNsaXBP
dXQoSW50UmVjdChvZmZzZXQueCgpICsgci0+eCgpLCBvZmZzZXQueSgpICsgci0+eSgpLCByLT53
aWR0aCgpLCByLT5oZWlnaHQoKSkpOworICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5jbGlw
T3V0KEludFJlY3Qob2Zmc2V0LngoKSArIHItPngoKSwgb2Zmc2V0LnkoKSArIHItPnkoKSwgci0+
d2lkdGgoKSwgci0+aGVpZ2h0KCkpKTsKICAgICB9CiB9CiAKQEAgLTE5NjYsNyArMTk2Niw3IEBA
IExheW91dFJlY3QgUmVuZGVyQmxvY2s6OmJsb2NrU2VsZWN0aW9uR2FwKFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IExheW91dFBvCiAKICAgICBMYXlvdXRSZWN0IGdhcFJlY3QgPSByb290
QmxvY2subG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9u
LCBMYXlvdXRSZWN0KGxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wLCBsb2dpY2FsV2lkdGgsIGxvZ2lj
YWxIZWlnaHQpKTsKICAgICBpZiAocGFpbnRJbmZvKQotICAgICAgICBwYWludEluZm8tPmNvbnRl
eHQtPmZpbGxSZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoZ2FwUmVjdCwgZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLT5jb250ZXh0KCkuZmlsbFJlY3Qoc25h
cFJlY3RUb0RldmljZVBpeGVscyhnYXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkpLCBzZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwog
ICAgIHJldHVybiBnYXBSZWN0OwogfQogCkBAIC0xOTgzLDcgKzE5ODMsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlckJsb2NrOjpsb2dpY2FsTGVmdFNlbGVjdGlvbkdhcChSZW5kZXJCbG9jayYgcm9vdEJs
b2NrLCBjb25zdCBMYQogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2lj
YWxSZWN0VG9QaHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVj
dChyb290QmxvY2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9n
aWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAg
cGFpbnRJbmZvLT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJl
Y3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBw
YWludEluZm8tPmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJl
Y3QsIGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVy
biBnYXBSZWN0OwogfQogCkBAIC0yMDAwLDcgKzIwMDAsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJs
b2NrOjpsb2dpY2FsUmlnaHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29u
c3QgTAogCiAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9Q
aHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgTGF5b3V0UmVjdChyb290Qmxv
Y2tMb2dpY2FsTGVmdCwgcm9vdEJsb2NrTG9naWNhbFRvcCwgcm9vdEJsb2NrTG9naWNhbFdpZHRo
LCBsb2dpY2FsSGVpZ2h0KSk7CiAgICAgaWYgKHBhaW50SW5mbykKLSAgICAgICAgcGFpbnRJbmZv
LT5jb250ZXh0LT5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8t
PmNvbnRleHQoKS5maWxsUmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGdhcFJlY3QsIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksIHNlbE9iai0+c2VsZWN0aW9uQmFja2dyb3VuZENv
bG9yKCksIHNlbE9iai0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOwogICAgIHJldHVybiBnYXBSZWN0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmlu
ZGV4IDY3ZDcyMTQwNDJiMmE3NTJkNzI5NDA0OTg3OGY0NWE5MjlmMTY0YmUuLmUxZjNmMTdiOTBl
MDQ5ODlhMTQyYTc0ZWNmNTRkN2U5ZTdjYmFmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0yMTQ0LDcgKzIxNDQsNyBAQCB2b2lkIFJlbmRl
ckJsb2NrRmxvdzo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmCiB7CiAgICAgUmVuZGVyQmxvY2s6OnBhaW50Q29sdW1uUnVsZXMocGFpbnRJ
bmZvLCBwb2ludCk7CiAgICAgCi0gICAgaWYgKCFtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSB8fCBw
YWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghbXVsdGlDb2x1
bW5GbG93VGhyZWFkKCkgfHwgcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEl0ZXJhdGUgb3ZlciBvdXIgY2hpbGRyZW4gYW5k
IHBhaW50IHRoZSBjb2x1bW4gcnVsZXMgYXMgbmVlZGVkLgpAQCAtMjE5Niw3ICsyMTk2LDcgQEAg
dm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2sm
IHJvb3RCbG9jaywgY29uc3QgUGFpbnQKICAgICAgICAgICAgICAgICBmbG9hdGluZ09iamVjdC0+
cmVuZGVyZXIoKS53aWR0aCgpLCBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5oZWlnaHQoKSk7
CiAgICAgICAgICAgICByb290QmxvY2suZmxpcEZvcldyaXRpbmdNb2RlKGZsb2F0Qm94KTsKICAg
ICAgICAgICAgIGZsb2F0Qm94Lm1vdmUocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbi54KCksIHJv
b3RCbG9ja1BoeXNpY2FsUG9zaXRpb24ueSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby0+Y29u
dGV4dC0+Y2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOworICAgICAgICAgICAgcGFp
bnRJbmZvLT5jb250ZXh0KCkuY2xpcE91dChzbmFwcGVkSW50UmVjdChmbG9hdEJveCkpOwogICAg
ICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCBhZTZhZWE1YjVkNzgxN2E3M2Q5OTEzODBmMGRjMDcyOGVlNTdlZTIyLi5mZjE5MWVhODk5ZDE5
MDkxZGIwYTkyZmM4NTQ0Y2IwNmQzNmJlNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMTI0Miw5ICsxMjQyLDkgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Um9v
dEJveEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8pCiAgICAgcGFpbnRGaWxs
TGF5ZXJzKHBhaW50SW5mbywgYmdDb2xvciwgYmdMYXllciwgdmlldygpLmJhY2tncm91bmRSZWN0
KCksIEJhY2tncm91bmRCbGVlZE5vbmUsIENvbXBvc2l0ZVNvdXJjZU92ZXIsICZyb290QmFja2dy
b3VuZFJlbmRlcmVyKTsKIH0KIAotQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIFJlbmRlckJveDo6
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkgY29uc3QKK0JhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWluZUJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5w
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWROb25lOwog
CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsKQEAgLTEyNTIs
NyArMTI1Miw3IEBAIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBSZW5kZXJCb3g6OmRldGVybWlu
ZUJhY2tncm91bmRCbGVlZEF2b2lkYW5jZShHcmFwaGljc0NvCiAgICAgaWYgKCFzdHlsZS5oYXNC
YWNrZ3JvdW5kKCkgfHwgIXN0eWxlLmhhc0JvcmRlcigpIHx8ICFzdHlsZS5oYXNCb3JkZXJSYWRp
dXMoKSB8fCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVSZW5kZXJlZCgpKQogICAgICAgICBy
ZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBj
b250ZXh0LT5nZXRDVE0oKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4dC5nZXRD
VE0oKTsKICAgICBGbG9hdFNpemUgY29udGV4dFNjYWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0
bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKIAogICAgIC8v
IEJlY2F1c2UgUm91bmRlZFJlY3QgdXNlcyBJbnRSZWN0IGludGVybmFsbHkgdGhlIGluc2V0IGFw
cGxpZWQgYnkgdGhlIApAQCAtMTI5MywyMSArMTI5MywyMSBAQCB2b2lkIFJlbmRlckJveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaQogICAgICAgICBwYWludFJlY3QgPSBJbnRSZWN0KHBhaW50UmVjdC54KCksIHBhaW50UmVj
dC55KCkgKyAodGhpcy0+aGVpZ2h0KCkgLSBoZWlnaHQpIC8gMiwgd2lkdGgsIGhlaWdodCk7IC8v
IFZlcnRpY2FsbHkgY2VudGVyIHRoZSBjaGVja2JveCwgbGlrZSBvbiBkZXNrdG9wCiAgICAgfQog
I2VuZGlmCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0gZGV0
ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBGSVhNRTog
U2hvdWxkIGV2ZW50dWFsbHkgZ2l2ZSB0aGUgdGhlbWUgY29udHJvbCBvdmVyIHdoZXRoZXIgdGhl
IGJveCBzaGFkb3cgc2hvdWxkIHBhaW50LCBzaW5jZSBjb250cm9scyBjb3VsZCBoYXZlCiAgICAg
Ly8gY3VzdG9tIHNoYWRvd3Mgb2YgdGhlaXIgb3duLgogICAgIGlmICghYm94U2hhZG93U2hvdWxk
QmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBibGVlZEF2b2lkYW5j
ZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgp
LCBOb3JtYWwpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpw
YWludEluZm8uY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpLCBmYWxzZSk7CiAgICAgaWYgKGJsZWVkQXZv
aWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAg
IC8vIFRvIGF2b2lkIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGJsZWVkaW5nIG91dCBiZWhpbmQgdGhl
IGJvcmRlciwgd2UnbGwgcmVuZGVyIGJhY2tncm91bmQgYW5kIGJvcmRlcgogICAgICAgICAvLyBp
bnRvIGEgdHJhbnNwYXJlbmN5IGxheWVyLCBhbmQgdGhlbiBjbGlwIHRoYXQgaW4gb25lIGdvICh3
aGljaCByZXF1aXJlcyBzZXR0aW5nIHVwIHRoZSBjbGlwIGJlZm9yZQogICAgICAgICAvLyBiZWdp
bm5pbmcgdGhlIGxheWVyKS4KICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVy
Rm9yKHBhaW50UmVjdCkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QpLnBpeGVs
U25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBoYXZlIGEgbmF0aXZlIHRoZW1lIGFwcGVhcmFu
Y2UsIHBhaW50IHRoYXQgYmVmb3JlIHBhaW50aW5nIG91ciBiYWNrZ3JvdW5kLgpAQCAtMTM0Miw3
ICsxMzQyLDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkKICAgICAgICAgcGFpbnRCb3JkZXIo
cGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIGJsZWVkQXZvaWRhbmNlKTsKIAogICAgIGlm
IChibGVlZEF2b2lkYW5jZSA9PSBCYWNrZ3JvdW5kQmxlZWRVc2VUcmFuc3BhcmVuY3lMYXllcikK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9p
ZCBSZW5kZXJCb3g6OnBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCBib29sIFJlbmRlckJveDo6YmFja2dy
b3VuZEhhc09wYXF1ZVRvcExheWVyKCkgY29uc3QKIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFz
ayhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQog
ewotICAgIGlmICghcGFpbnRJbmZvLnNob3VsZFBhaW50V2l0aGluUm9vdCgqdGhpcykgfHwgc3R5
bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQ
aGFzZU1hc2sgfHwgcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QoKnRoaXMpIHx8IHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUgfHwgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VNYXNr
IHx8IHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQs
IHNpemUoKSk7CkBAIC0xNTI4LDExICsxNTI4LDExIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludE1h
c2soUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkK
IAogdm9pZCBSZW5kZXJCb3g6OnBhaW50Q2xpcHBpbmdNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7Ci0gICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBh
aW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBW
SVNJQkxFIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlQ2xpcHBpbmdNYXNrIHx8IHBh
aW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUo
KSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50
UmVjdCksIENvbG9yOjpibGFjaywgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSwgQ29sb3I6OmJs
YWNrLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjpwYWludE1h
c2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFJlY3QmIHBh
aW50UmVjdCkKQEAgLTE1NTcsMTggKzE1NTcsMTggQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50TWFz
a0ltYWdlcyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVjdCYgcGEK
ICAgICAgICAgaWYgKG1hc2tMYXllcnMpCiAgICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVk
ICY9IG1hc2tMYXllcnMtPmltYWdlc0FyZUxvYWRlZCgpOwogCi0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAg
ICAgICBwYWludEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVE
ZXN0aW5hdGlvbkluKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKDEpOwogICAgICAgICBjb21wb3NpdGVPcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7
CiAgICAgfQogCiAgICAgaWYgKGFsbE1hc2tJbWFnZXNMb2FkZWQpIHsKICAgICAgICAgcGFpbnRG
aWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS5tYXNrTGF5ZXJzKCksIHBhaW50
UmVjdCwgQmFja2dyb3VuZEJsZWVkTm9uZSwgY29tcG9zaXRlT3ApOwotICAgICAgICBwYWludE5p
bmVQaWVjZUltYWdlKHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxl
KCkubWFza0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKKyAgICAgICAgcGFpbnROaW5lUGllY2VJ
bWFnZShwYWludEluZm8uY29udGV4dCgpLCBwYWludFJlY3QsIHN0eWxlKCksIHN0eWxlKCkubWFz
a0JveEltYWdlKCksIGNvbXBvc2l0ZU9wKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHB1c2hUcmFu
c3BhcmVuY3lMYXllcikKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5
ZXIoKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdChjb25zdCBMYXlv
dXRQb2ludCYgcGFpbnRPZmZzZXQpCkBAIC0xNjE5LDE2ICsxNjE5LDEzIEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjLCBjb25zCiAgICAgICAgIGN1ckxheWVyID0gY3VyTGF5ZXItPm5leHQoKTsKICAgICB9
CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAg
ICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1
ZmZlciA9IGZhbHNlOwotCisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKTsKICAgICBCYXNlQmFja2dyb3VuZENvbG9yVXNhZ2UgYmFzZUJnQ29sb3JVc2Fn
ZSA9IEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2U7CiAKICAgICBpZiAoc2hvdWxkRHJhd0JhY2tncm91
bmRJblNlcGFyYXRlQnVmZmVyKSB7CiAgICAgICAgIHBhaW50RmlsbExheWVyKHBhaW50SW5mbywg
YywgKmxheWVycy5yYmVnaW4oKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5k
T2JqZWN0LCBCYXNlQmFja2dyb3VuZENvbG9yT25seSk7CiAgICAgICAgIGJhc2VCZ0NvbG9yVXNh
Z2UgPSBCYXNlQmFja2dyb3VuZENvbG9yU2tpcDsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KDEpOwogICAgIH0KIAogICAgIFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqPjo6Y29uc3RfcmV2ZXJz
ZV9pdGVyYXRvciB0b3BMYXllciA9IGxheWVycy5yZW5kKCk7CkBAIC0xNjM2LDcgKzE2MzMsNyBA
QCB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBDb2xvciYgYywgY29ucwogICAgICAgICBwYWludEZpbGxMYXllcihwYWludElu
Zm8sIGMsICppdCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0LCBi
YXNlQmdDb2xvclVzYWdlKTsKIAogICAgIGlmIChzaG91bGREcmF3QmFja2dyb3VuZEluU2VwYXJh
dGVCdWZmZXIpCi0gICAgICAgIGNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3g6
OnBhaW50RmlsbExheWVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYg
YywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCkBA
IC0xNzY4LDEwICsxNzY1LDEwIEBAIGJvb2wgUmVuZGVyQm94OjpwdXNoQ29udGVudHNDbGlwKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11CiAgICAgfQogICAg
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rvcigp
OwogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoKGlzQ29u
dHJvbENsaXAgPyBjb250cm9sQ2xpcFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQpIDogb3ZlcmZsb3dD
bGlwUmVjdChhY2N1bXVsYXRlZE9mZnNldCwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50
KCksIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBwYWludEluZm8ucGhhc2UpKSwgZGV2aWNl
U2NhbGVGYWN0b3IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVzKCkp
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgp
KSkucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcikp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qoc3R5bGUoKS5nZXRSb3VuZGVkSW5uZXJCb3Jk
ZXJGb3IoTGF5b3V0UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSkucGl4ZWxTbmFwcGVk
Um91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcChjbGlwUmVjdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE3
NzksNyArMTc3Niw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3BDb250ZW50c0NsaXAoUGFpbnRJbmZv
JiBwYWludEluZm8sIFBhaW50UGhhc2Ugb3JpZ2luYWxQaGFzZSwKIHsKICAgICBBU1NFUlQoaGFz
Q29udHJvbENsaXAoKSB8fCAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgIWxheWVyKCktPmlzU2VsZlBh
aW50aW5nTGF5ZXIoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAg
ICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICBpZiAob3JpZ2luYWxQaGFzZSA9
PSBQYWludFBoYXNlT3V0bGluZSkgewogICAgICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBo
YXNlU2VsZk91dGxpbmU7CiAgICAgICAgIHBhaW50T2JqZWN0KHBhaW50SW5mbywgYWNjdW11bGF0
ZWRPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDU1MTg4YzYx
NjlkNDdmOTMwM2JkZjE2MWFmMjVhODJjOWQyZjk4YjkuLjE2ZDUxZDk3ZWZkNWFmZThlMWE3ZTM2
ZjdkODI0N2Y4ZjBiZGEwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTY0MCw3ICs2NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBhaW50TWFza0ltYWdlcyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBCYWNrZ3JvdW5kQmxl
ZWRBdm9pZGFuY2UgZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKEdyYXBoaWNzQ29u
dGV4dCopIGNvbnN0OworICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBkZXRlcm1pbmVCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAgICAgYm9vbCBi
YWNrZ3JvdW5kSGFzT3BhcXVlVG9wTGF5ZXIoKSBjb25zdDsKIAogICAgIHZvaWQgY29tcHV0ZVBv
c2l0aW9uZWRMb2dpY2FsV2lkdGgoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiwgUmVuZGVy
UmVnaW9uKiA9IG51bGxwdHIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMWRjZmUxMjJmMDI3NzIyOTFiN2ExN2I4
MzY0YTg3MGRiYTJiZDIyZS4uZmNhOTdhZGYyNWJkMTcxOTJkOTBmYTVjNDc2ZjMzZGEzYmEwNWNj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3Vz
cGVuZEFuaW1hdGlvbnMoZG91YmxlIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNw
ZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hv
dWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBJbWFnZSogaW1h
Z2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplKQorYm9vbCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQqIGxheWVyLCBjb25zdCBMYXlvdXRT
aXplJiBzaXplKQogewogICAgIHJldHVybiB2aWV3KCkuaW1hZ2VRdWFsaXR5Q29udHJvbGxlcigp
LnNob3VsZFBhaW50QXRMb3dRdWFsaXR5KGNvbnRleHQsIHRoaXMsIGltYWdlLCBsYXllciwgc2l6
ZSk7CiB9CkBAIC01MTgsMzQgKzUxOCwzNCBAQCBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcgogICAg
IHJldHVybiBib3JkZXI7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBSb3Vu
ZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpCit2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpjbGlwUm91bmRlZElubmVyUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3Qp
CiB7CiAgICAgaWYgKGNsaXBSZWN0LmlzUmVuZGVyYWJsZSgpKQotICAgICAgICBjb250ZXh0LT5j
bGlwUm91bmRlZFJlY3QoY2xpcFJlY3QpOworICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVj
dChjbGlwUmVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNyZWF0ZSBhIHJvdW5kZWQg
cmVjdCBmb3IgZWFjaCBvZiB0aGUgY29ybmVycyBhbmQgY2xpcCBpdCwgd2hpbGUgbWFraW5nIHN1
cmUgd2UgY2xpcCBvcHBvc2luZyBjb3JuZXJzIHRvZ2V0aGVyLgogICAgICAgICBpZiAoIWNsaXBS
ZWN0LnJhZGlpKCkudG9wTGVmdCgpLmlzRW1wdHkoKSB8fCAhY2xpcFJlY3QucmFkaWkoKS5ib3R0
b21SaWdodCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgRmxvYXRSZWN0IHRvcENvcm5lcihj
bGlwUmVjdC5yZWN0KCkueCgpLCBjbGlwUmVjdC5yZWN0KCkueSgpLCByZWN0Lm1heFgoKSAtIGNs
aXBSZWN0LnJlY3QoKS54KCksIHJlY3QubWF4WSgpIC0gY2xpcFJlY3QucmVjdCgpLnkoKSk7CiAg
ICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSB0b3BDb3JuZXJSYWRpaTsKICAgICAg
ICAgICAgIHRvcENvcm5lclJhZGlpLnNldFRvcExlZnQoY2xpcFJlY3QucmFkaWkoKS50b3BMZWZ0
KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAgY29udGV4dC5jbGlw
Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENvcm5lclJhZGlpKSk7
CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIocmVjdC54KCksIHJlY3QueSgp
LCBjbGlwUmVjdC5yZWN0KCkubWF4WCgpIC0gcmVjdC54KCksIGNsaXBSZWN0LnJlY3QoKS5tYXhZ
KCkgLSByZWN0LnkoKSk7CiAgICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSBib3R0
b21Db3JuZXJSYWRpaTsKICAgICAgICAgICAgIGJvdHRvbUNvcm5lclJhZGlpLnNldEJvdHRvbVJp
Z2h0KGNsaXBSZWN0LnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7Ci0gICAgICAgICAgICBjb250ZXh0
LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3R0b21Db3JuZXIsIGJvdHRvbUNv
cm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVyUmFkaWkpKTsKICAgICAgICAgfSAK
IAogICAgICAgICBpZiAoIWNsaXBSZWN0LnJhZGlpKCkudG9wUmlnaHQoKS5pc0VtcHR5KCkgfHwg
IWNsaXBSZWN0LnJhZGlpKCkuYm90dG9tTGVmdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
RmxvYXRSZWN0IHRvcENvcm5lcihyZWN0LngoKSwgY2xpcFJlY3QucmVjdCgpLnkoKSwgY2xpcFJl
Y3QucmVjdCgpLm1heFgoKSAtIHJlY3QueCgpLCByZWN0Lm1heFkoKSAtIGNsaXBSZWN0LnJlY3Qo
KS55KCkpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkgdG9wQ29ybmVyUmFk
aWk7CiAgICAgICAgICAgICB0b3BDb3JuZXJSYWRpaS5zZXRUb3BSaWdodChjbGlwUmVjdC5yYWRp
aSgpLnRvcFJpZ2h0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZs
b2F0Um91bmRlZFJlY3QodG9wQ29ybmVyLCB0b3BDb3JuZXJSYWRpaSkpOworICAgICAgICAgICAg
Y29udGV4dC5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0b3BDb3JuZXIsIHRvcENv
cm5lclJhZGlpKSk7CiAKICAgICAgICAgICAgIEZsb2F0UmVjdCBib3R0b21Db3JuZXIoY2xpcFJl
Y3QucmVjdCgpLngoKSwgcmVjdC55KCksIHJlY3QubWF4WCgpIC0gY2xpcFJlY3QucmVjdCgpLngo
KSwgY2xpcFJlY3QucmVjdCgpLm1heFkoKSAtIHJlY3QueSgpKTsKICAgICAgICAgICAgIEZsb2F0
Um91bmRlZFJlY3Q6OlJhZGlpIGJvdHRvbUNvcm5lclJhZGlpOwogICAgICAgICAgICAgYm90dG9t
Q29ybmVyUmFkaWkuc2V0Qm90dG9tTGVmdChjbGlwUmVjdC5yYWRpaSgpLmJvdHRvbUxlZnQoKSk7
Ci0gICAgICAgICAgICBjb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChi
b3R0b21Db3JuZXIsIGJvdHRvbUNvcm5lclJhZGlpKSk7CisgICAgICAgICAgICBjb250ZXh0LmNs
aXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvdHRvbUNvcm5lciwgYm90dG9tQ29ybmVy
UmFkaWkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTU4MSw3ICs1ODEsNyBAQCBSb3VuZGVk
UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRG
b3JCbGVlZEF2b2lkYW5jZQogICAgIHJldHVybiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QoYm9y
ZGVyUmVjdCwgYm94LCBib3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIH0KIAotc3RhdGljIHZv
aWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlKQorc3RhdGljIHZvaWQgYXBwbHlCb3hTaGFkb3dGb3JCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAg
IGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHN0eWxlLT5ib3hTaGFkb3coKTsKICAgICB3
aGlsZSAoYm94U2hhZG93LT5zdHlsZSgpICE9IE5vcm1hbCkKQEAgLTU4OSwxNSArNTg5LDE1IEBA
IHN0YXRpYyB2b2lkIGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFJlbmRlclN0eWxlKiBzCiAKICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0KGJv
eFNoYWRvdy0+eCgpLCBib3hTaGFkb3ctPnkoKSk7CiAgICAgaWYgKCFib3hTaGFkb3ctPmlzV2Vi
a2l0Qm94U2hhZG93KCkpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IGJveFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hhZG93
LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAg
ICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhzaGFkb3dPZmZzZXQsIGJv
eFNoYWRvdy0+cmFkaXVzKCksIGJveFNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2Uo
KSk7CisgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgYm94U2hh
ZG93LT5yYWRpdXMoKSwgYm94U2hhZG93LT5jb2xvcigpLCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsK
IH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
SW1hZ2VCdWZmZXIqIG1hc2tJbWFnZSwgY29uc3QgSW50UmVjdCYgbWFza1JlY3QsIElubGluZUZs
b3dCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgc2Nyb2xsZWRQYWludFJlY3QpCiB7Ci0gICAg
R3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7
Ci0gICAgbWFza0ltYWdlQ29udGV4dC0+dHJhbnNsYXRlKC1tYXNrUmVjdC54KCksIC1tYXNrUmVj
dC55KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOworICAgIG1hc2tJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1tYXNrUmVjdC54
KCksIC1tYXNrUmVjdC55KCkpOwogCiAgICAgLy8gTm93IGFkZCB0aGUgdGV4dCB0byB0aGUgY2xp
cC4gV2UgZG8gdGhpcyBieSBwYWludGluZyB1c2luZyBhIHNwZWNpYWwgcGFpbnQgcGhhc2UgdGhh
dCBzaWduYWxzIHRvCiAgICAgLy8gSW5saW5lVGV4dEJveGVzIHRoYXQgdGhleSBzaG91bGQganVz
dCBhZGQgdGhlaXIgY29udGVudHMgdG8gdGhlIGNsaXAuCkBAIC02MTgsOCArNjE4LDggQEAgdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRNYXNrRm9yVGV4dEZpbGxCb3goSW1hZ2VCdWZm
ZXIqIG1hc2tJbWFnZSwgY29uc3QKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBj
b2xvciwgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAog
ICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0Jv
eCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
UmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCwgQmFzZUJhY2tncm91bmRDb2xvclVzYWdl
IGJhc2VCZ0NvbG9yVXNhZ2UpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBy
ZWN0LmlzRW1wdHkoKSkKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCByZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpbmNsdWRlTGVmdEVkZ2UgPSBi
b3ggPyBib3gtPmluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSA6IHRydWU7CkBAIC02NzIsMzIgKzY3
MiwzMiBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHJlY3QubG9jYXRpb24oKSwgYmxl
ZWRBdm9pZGFuY2UsIGJveCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2hh
ZG93U3RhdGVTYXZlcigqY29udGV4dCwgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3Jv
dW5kKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVy
KGNvbnRleHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAg
IGlmIChib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCiAgICAgICAgICAgICBh
cHBseUJveFNoYWRvd0ZvckJhY2tncm91bmQoY29udGV4dCwgJnN0eWxlKCkpOwogCiAgICAgICAg
IGlmIChoYXNSb3VuZGVkQm9yZGVyICYmIGJsZWVkQXZvaWRhbmNlICE9IEJhY2tncm91bmRCbGVl
ZFVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBp
eGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRB
dm9pZGFuY2UoKmNvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsCisg
ICAgICAgICAgICBGbG9hdFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZEJvcmRlciA9IGJhY2tncm91
bmRSb3VuZGVkUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoY29udGV4dCwgcmVjdCwgYmxl
ZWRBdm9pZGFuY2UsIGJveCwgYm94U2l6ZSwKICAgICAgICAgICAgICAgICBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmco
ZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgaWYgKHBpeGVsU25hcHBlZEJvcmRlci5p
c1JlbmRlcmFibGUoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3Qo
cGl4ZWxTbmFwcGVkQm9yZGVyLCBiZ0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUm91bmRlZFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLCBi
Z0NvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5zYXZl
KCk7CiAgICAgICAgICAgICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QoY29udGV4dCwgcGl4ZWxT
bmFwcGVkUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXIucmVjdCgpLCBiZ0NvbG9yLCBzdHlsZSgpLmNv
bG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkQm9yZGVyLnJlY3QoKSwgYmdD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQucmVz
dG9yZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZFJlY3QsIGJnQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QocGl4ZWxTbmFwcGVkUmVjdCwgYmdD
b2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBCb3JkZXJGaWxsQm94IHJhZGl1cyBjbGlwcGluZyBpcyB0YWtlbiBjYXJlIG9mIGJ5
IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyCiAgICAgYm9vbCBjbGlwVG9Cb3Jk
ZXJSYWRpdXMgPSBoYXNSb3VuZGVkQm9yZGVyICYmICEoaXNCb3JkZXJGaWxsICYmIGJsZWVkQXZv
aWRhbmNlID09IEJhY2tncm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBUb0JvcmRlclN0YXRlU2F2ZXIoKmNvbnRleHQsIGNs
aXBUb0JvcmRlclJhZGl1cyk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwVG9C
b3JkZXJTdGF0ZVNhdmVyKGNvbnRleHQsIGNsaXBUb0JvcmRlclJhZGl1cyk7CiAgICAgaWYgKGNs
aXBUb0JvcmRlclJhZGl1cykgewotICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRl
ckZpbGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpj
b250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgYm94LCBib3hTaXplLCBpbmNsdWRlTGVmdEVk
Z2UsIGluY2x1ZGVSaWdodEVkZ2UpIDogZ2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KHJlY3QsIGJv
eCwgYm94U2l6ZS53aWR0aCgpLCBib3hTaXplLmhlaWdodCgpLCBpbmNsdWRlTGVmdEVkZ2UsIGlu
Y2x1ZGVSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBpc0JvcmRlckZp
bGwgPyBiYWNrZ3JvdW5kUm91bmRlZFJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnRl
eHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBib3gsIGJveFNpemUsIGluY2x1ZGVMZWZ0RWRnZSwg
aW5jbHVkZVJpZ2h0RWRnZSkgOiBnZXRCYWNrZ3JvdW5kUm91bmRlZFJlY3QocmVjdCwgYm94LCBi
b3hTaXplLndpZHRoKCksIGJveFNpemUuaGVpZ2h0KCksIGluY2x1ZGVMZWZ0RWRnZSwgaW5jbHVk
ZVJpZ2h0RWRnZSk7CiAKICAgICAgICAgLy8gQ2xpcCB0byB0aGUgcGFkZGluZyBvciBjb250ZW50
IGJveGVzIGFzIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKGJnTGF5ZXItPmNsaXAoKSA9PSBDb250
ZW50RmlsbEJveCkgewpAQCAtNzE0LDEyICs3MTQsMTIgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y28KICAgICBMYXlvdXRVbml0IHBMZWZ0ID0gaW5jbHVkZUxlZnRFZGdlID8gcGFkZGluZ0xlZnQo
KSA6IExheW91dFVuaXQoKTsKICAgICBMYXlvdXRVbml0IHBSaWdodCA9IGluY2x1ZGVSaWdodEVk
Z2UgPyBwYWRkaW5nUmlnaHQoKSA6IExheW91dFVuaXQoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgY2xpcFdpdGhTY3JvbGxpbmdTdGF0ZVNhdmVyKCpjb250ZXh0LCBjbGlwcGVk
V2l0aExvY2FsU2Nyb2xsaW5nKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGNsaXBX
aXRoU2Nyb2xsaW5nU3RhdGVTYXZlcihjb250ZXh0LCBjbGlwcGVkV2l0aExvY2FsU2Nyb2xsaW5n
KTsKICAgICBMYXlvdXRSZWN0IHNjcm9sbGVkUGFpbnRSZWN0ID0gcmVjdDsKICAgICBpZiAoY2xp
cHBlZFdpdGhMb2NhbFNjcm9sbGluZykgewogICAgICAgICAvLyBDbGlwIHRvIHRoZSBvdmVyZmxv
dyBhcmVhLgogICAgICAgICBhdXRvJiB0aGlzQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqdGhp
cyk7Ci0gICAgICAgIGNvbnRleHQtPmNsaXAodGhpc0JveC5vdmVyZmxvd0NsaXBSZWN0KHJlY3Qu
bG9jYXRpb24oKSwgY3VycmVudFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKTsKKyAgICAgICAg
Y29udGV4dC5jbGlwKHRoaXNCb3gub3ZlcmZsb3dDbGlwUmVjdChyZWN0LmxvY2F0aW9uKCksIGN1
cnJlbnRSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpKSk7CiAgICAgICAgIAogICAgICAgICAvLyBB
ZGp1c3QgdGhlIHBhaW50IHJlY3QgdG8gcmVmbGVjdCBhIHNjcm9sbGVkIGNvbnRlbnQgYm94IHdp
dGggYm9yZGVycyBhdCB0aGUgZW5kcy4KICAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSB0aGlzQm94
LnNjcm9sbGVkQ29udGVudE9mZnNldCgpOwpAQCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvCiAgICAgICAgIHNjcm9sbGVkUGFpbnRSZWN0LnNldEhlaWdodChib3JkZXJU
b3AoKSArIGxheWVyKCktPnNjcm9sbEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCkpOwogICAgIH0K
ICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIGJhY2tncm91bmRDbGlwU3RhdGVT
YXZlcigqY29udGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgYmFj
a2dyb3VuZENsaXBTdGF0ZVNhdmVyKGNvbnRleHQsIGZhbHNlKTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IG1hc2tJbWFnZTsKICAgICBJbnRSZWN0IG1hc2tSZWN0OwogCkBAIC03
NDEsNyArNzQxLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICBz
Y3JvbGxlZFBhaW50UmVjdC53aWR0aCgpIC0gYkxlZnQgLSBiUmlnaHQgLSAoaW5jbHVkZVBhZGRp
bmcgPyBwTGVmdCArIHBSaWdodCA6IExheW91dFVuaXQoKSksCiAgICAgICAgICAgICAgICAgc2Ny
b2xsZWRQYWludFJlY3QuaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpIC0g
KGluY2x1ZGVQYWRkaW5nID8gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpIDogTGF5b3V0
VW5pdCgpKSk7CiAgICAgICAgICAgICBiYWNrZ3JvdW5kQ2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwot
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXAoY2xpcFJlY3QpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChiZ0xheWVyLT5jbGlw
KCkgPT0gVGV4dEZpbGxCb3gpIHsKICAgICAgICAgLy8gV2UgaGF2ZSB0byBkcmF3IG91ciB0ZXh0
IGludG8gYSBtYXNrIHRoYXQgY2FuIHRoZW4gYmUgdXNlZCB0byBjbGlwIGJhY2tncm91bmQgZHJh
d2luZy4KQEAgLTc1MSwxNSArNzUxLDE1IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAg
ICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwog
CiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IGNv
bnRleHQtPmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKKyAgICAgICAg
bWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUo
KSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gs
IHNjcm9sbGVkUGFpbnRSZWN0KTsKIAogICAgICAgICAvLyBUaGUgbWFzayBoYXMgYmVlbiBjcmVh
dGVkLiAgTm93IHdlIGp1c3QgbmVlZCB0byBjbGlwIHRvIGl0LgogICAgICAgICBiYWNrZ3JvdW5k
Q2xpcFN0YXRlU2F2ZXIuc2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlwKG1hc2tSZWN0KTsK
LSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29u
dGV4dC5jbGlwKG1hc2tSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxh
eWVyKDEpOwogICAgIH0KIAogICAgIC8vIE9ubHkgZmlsbCB3aXRoIGEgYmFzZSBjb2xvciAoZS5n
Liwgd2hpdGUpIGlmIHdlJ3JlIHRoZSByb290IGRvY3VtZW50LCBzaW5jZSBpZnJhbWVzL2ZyYW1l
cyB3aXRoCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAg
ICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJCYWNrZ3JvdW5kID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNh
dmVyKCpjb250ZXh0LCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzaGFkb3dTdGF0ZVNhdmVyKGNvbnRl
eHQsIGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCk7CiAgICAgICAgICAgICBp
ZiAoYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQogICAgICAgICAgICAgICAg
IGFwcGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChjb250ZXh0LCAmc3R5bGUoKSk7CiAKQEAgLTgx
NywxMiArODE3LDEyIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAg
aWYgKCFiYXNlQmdDb2xvck9ubHkgJiYgYmdDb2xvci5hbHBoYSgpKQogICAgICAgICAgICAgICAg
ICAgICBiYXNlQ29sb3IgPSBiYXNlQ29sb3IuYmxlbmQoYmdDb2xvcik7CiAKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiYXNlQ29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBDb21wb3NpdGVDb3B5KTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJhc2VDb2xvciwg
c3R5bGUoKS5jb2xvclNwYWNlKCksIENvbXBvc2l0ZUNvcHkpOwogICAgICAgICAgICAgfSBlbHNl
IGlmICghYmFzZUJnQ29sb3JPbmx5ICYmIGJnQ29sb3IuYWxwaGEoKSkgewotICAgICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wZXJhdGlvbiA9IHNob3VsZENsZWFyQmFja2dyb3VuZCA/
IENvbXBvc2l0ZUNvcHkgOiBjb250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChiYWNrZ3JvdW5kUmVjdEZvclBhaW50aW5nLCBiZ0Nv
bG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciBvcGVyYXRpb24gPSBzaG91bGRDbGVhckJhY2tncm91bmQgPyBDb21w
b3NpdGVDb3B5IDogY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcsIGJnQ29sb3IsIHN0
eWxlKCkuY29sb3JTcGFjZSgpLCBvcGVyYXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChz
aG91bGRDbGVhckJhY2tncm91bmQpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xlYXJSZWN0
KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOworICAgICAgICAgICAgICAgIGNvbnRleHQuY2xl
YXJSZWN0KGJhY2tncm91bmRSZWN0Rm9yUGFpbnRpbmcpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC04MzQsMTcgKzgzNCwxNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AgPSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVy
ID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsKICAgICAgICAgICAgIGF1dG8gY2xpZW50Rm9y
QmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0
aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2UtPmltYWdlKGNs
aWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgp
ID09IE1hc2tMdW1pbmFuY2UpOworICAgICAgICAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNl
TWFzayhiZ0xheWVyLT5tYXNrU291cmNlVHlwZSgpID09IE1hc2tMdW1pbmFuY2UpOwogICAgICAg
ICAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dRdWFsaXR5
KGNvbnRleHQsIGltYWdlLmdldCgpLCBiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAg
ICAgICAgICAgIGlmIChpbWFnZS5nZXQoKSkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3Bh
Y2VTaXplKGdlb21ldHJ5LnNwYWNlU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdU
aWxlZEltYWdlKGltYWdlLmdldCgpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVz
dFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRy
eS50aWxlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci0+
YmxlbmRNb2RlKCksIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCB1c2VMb3dRdWFsaXR5
U2NhbGluZykpOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQo
KSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9p
bnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgSW1hZ2VQ
YWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXItPmJsZW5kTW9kZSgpLCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24oKSwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKICAgICAgICAg
fQogICAgIH0KIAogICAgIGlmIChiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKLSAg
ICAgICAgY29udGV4dC0+ZHJhd0ltYWdlQnVmZmVyKG1hc2tJbWFnZS5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgbWFza1JlY3QsIENvbXBvc2l0ZURlc3RpbmF0aW9uSW4pOwotICAgICAgICBj
b250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcihtYXNrSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIG1hc2tSZWN0LCBD
b21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lM
YXllcigpOwogICAgIH0KIH0KIApAQCAtMTI0Miw3ICsxMjQyLDcgQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE8KICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRlc3RSZWN0KCk7CiB9CiAKLWJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwKK2Jvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNlSW1h
Z2UoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2UmIG5pbmVQaWVjZUltYWdl
LCBDb21wb3NpdGVPcGVyYXRvciBvcCkKIHsKICAgICBTdHlsZUltYWdlKiBzdHlsZUltYWdlID0g
bmluZVBpZWNlSW1hZ2UuaW1hZ2UoKTsKQEAgLTE0MjYsNyArMTQyNiw3IEBAIHN0YXRpYyBib29s
IGpvaW5SZXF1aXJlc01pdHJlKEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUsIGNv
bnN0IEJvcmRlckVkCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludE9uZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9y
ZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgY29uc3QgTGF5b3V0UmVj
dCYgc2lkZVJlY3QsIEJveFNpZGUgc2lkZSwgQm94U2lkZSBhZGphY2VudFNpZGUxLCBCb3hTaWRl
IGFkamFjZW50U2lkZTIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgY29uc3QgUGF0aCogcGF0
aCwKICAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIGJvb2wgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSwgYm9vbCBh
bnRpYWxpYXMsIGNvbnN0IENvbG9yKiBvdmVycmlkZUNvbG9yKQogewpAQCAtMTQ0NCw3ICsxNDQ0
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgIGNvbnN0IENvbG9yJiBjb2xvclRvUGFp
bnQgPSBvdmVycmlkZUNvbG9yID8gKm92ZXJyaWRlQ29sb3IgOiBlZGdlVG9SZW5kZXIuY29sb3Io
KTsKIAogICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgIGlmIChpbm5lckJv
cmRlci5pc1JlbmRlcmFibGUoKSkKICAgICAgICAgICAgIGNsaXBCb3JkZXJTaWRlUG9seWdvbihn
cmFwaGljc0NvbnRleHQsIG91dGVyQm9yZGVyLCBpbm5lckJvcmRlciwgc2lkZSwgYWRqYWNlbnRT
aWRlMVN0eWxlc01hdGNoLCBhZGphY2VudFNpZGUyU3R5bGVzTWF0Y2gpOwogICAgICAgICBlbHNl
CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE9u
ZUJvcmRlclNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgICAgIGJv
b2wgY2xpcEFkamFjZW50U2lkZTIgPSBjb2xvck5lZWRzQW50aUFsaWFzQXRDb3JuZXIoc2lkZSwg
YWRqYWNlbnRTaWRlMiwgZWRnZXMpICYmIG1pdHJlQWRqYWNlbnRTaWRlMjsKICAgICAgICAgYm9v
bCBzaG91bGRDbGlwID0gY2xpcEZvclN0eWxlIHx8IGNsaXBBZGphY2VudFNpZGUxIHx8IGNsaXBB
ZGphY2VudFNpZGUyOwogICAgICAgICAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBjbGlwU3RhdGVTYXZlcigqZ3JhcGhpY3NDb250ZXh0LCBzaG91bGRDbGlwKTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBjbGlwU3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQs
IHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgYm9v
bCBhbGlhc0FkamFjZW50U2lkZTEgPSBjbGlwQWRqYWNlbnRTaWRlMSB8fCAoY2xpcEZvclN0eWxl
ICYmIG1pdHJlQWRqYWNlbnRTaWRlMSk7CiAgICAgICAgICAgICBib29sIGFsaWFzQWRqYWNlbnRT
aWRlMiA9IGNsaXBBZGphY2VudFNpZGUyIHx8IChjbGlwRm9yU3R5bGUgJiYgbWl0cmVBZGphY2Vu
dFNpZGUyKTsKQEAgLTE0NjcsNyArMTQ2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50T25lQm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAg
ICAgICAgICAgIG1pdHJlQWRqYWNlbnRTaWRlMSA9IGZhbHNlOwogICAgICAgICAgICAgbWl0cmVB
ZGphY2VudFNpZGUyID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKCpncmFwaGljc0NvbnRleHQsIHNpZGVSZWN0LCBzaWRlLCBjb2xvclRvUGFpbnQsIGVkZ2VU
b1JlbmRlci5zdHlsZSgpLCBtaXRyZUFkamFjZW50U2lkZTEgPyBhZGphY2VudEVkZ2UxLndpZHRo
Rm9yUGFpbnRpbmcoKSA6IDAsIG1pdHJlQWRqYWNlbnRTaWRlMiA/IGFkamFjZW50RWRnZTIud2lk
dGhGb3JQYWludGluZygpIDogMCwgYW50aWFsaWFzKTsKKyAgICAgICAgZHJhd0xpbmVGb3JCb3hT
aWRlKGdyYXBoaWNzQ29udGV4dCwgc2lkZVJlY3QsIHNpZGUsIGNvbG9yVG9QYWludCwgZWRnZVRv
UmVuZGVyLnN0eWxlKCksIG1pdHJlQWRqYWNlbnRTaWRlMSA/IGFkamFjZW50RWRnZTEud2lkdGhG
b3JQYWludGluZygpIDogMCwgbWl0cmVBZGphY2VudFNpZGUyID8gYWRqYWNlbnRFZGdlMi53aWR0
aEZvclBhaW50aW5nKCkgOiAwLCBhbnRpYWxpYXMpOwogICAgIH0KIH0KIApAQCAtMTQ4OCw3ICsx
NDg4LDcgQEAgc3RhdGljIExheW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3QoY29uc3QgUm91bmRl
ZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBCb3JkZXIKICAgICByZXR1cm4gc2lkZVJlY3Q7CiB9
CiAKLXZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3Qg
Um91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIs
Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlclNpZGVzKEdyYXBoaWNzQ29u
dGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAog
ICAgIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsIGNvbnN0IEJvcmRlckVk
Z2UgZWRnZXNbXSwgQm9yZGVyRWRnZUZsYWdzIGVkZ2VTZXQsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSBibGVlZEF2b2lkYW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJv
b2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciog
b3ZlcnJpZGVDb2xvcikKIHsKQEAgLTE1MzYsNyArMTUzNiw3IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhaW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvCiAgICAgfQogfQogCi12b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5z
bHVjZW50Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFk
anVzdG1lbnQsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludFRyYW5zbHVjZW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVk
UmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IEludFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQs
CiAgICAgY29uc3QgQm9yZGVyRWRnZSBlZGdlc1tdLCBCb3JkZXJFZGdlRmxhZ3MgZWRnZXNUb0Ry
YXcsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRl
TG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBib29sIGFudGlh
bGlhcykKIHsKICAgICAvLyB3aWxsQmVPdmVyZHJhd24gYXNzdW1lcyB0aGF0IHdlIGRyYXcgaW4g
b3JkZXI6IHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodC4KQEAgLTE1NjYsMTQgKzE1NjYsMTQgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRUcmFuc2x1Y2VudEJvcmRlclNpZGVzKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3MKIAogICAgICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxh
eWVyID0gaW5jbHVkZXNBZGphY2VudEVkZ2VzKGNvbW1vbkNvbG9yRWRnZVNldCkgJiYgY29tbW9u
Q29sb3IuaGFzQWxwaGEoKTsKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKSB7Ci0g
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGNvbW1vbkNvbG9yLmFscGhhKCkpIC8gMjU1KTsKKyAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKHN0YXRpY19jYXN0PGZsb2F0Pihj
b21tb25Db2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgICAgICBjb21tb25Db2xvciA9IENv
bG9yKGNvbW1vbkNvbG9yLnJlZCgpLCBjb21tb25Db2xvci5ncmVlbigpLCBjb21tb25Db2xvci5i
bHVlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcGFpbnRCb3JkZXJTaWRlcyhncmFwaGljc0Nv
bnRleHQsIHN0eWxlLCBvdXRlckJvcmRlciwgaW5uZXJCb3JkZXIsIGlubmVyQm9yZGVyQWRqdXN0
bWVudCwgZWRnZXMsIGNvbW1vbkNvbG9yRWRnZVNldCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBhbnRpYWxpYXMsICZjb21t
b25Db2xvcik7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAg
ICAgIAogICAgICAgICBlZGdlc1RvRHJhdyAmPSB+Y29tbW9uQ29sb3JFZGdlU2V0OwogICAgIH0K
QEAgLTE1ODIsOSArMTU4Miw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50VHJh
bnNsdWNlbnRCb3JkZXJTaWRlcyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzCiB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVl
ZEF2b2lkYW5jZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKQogewotICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0ID0g
aW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0gaW5m
by5jb250ZXh0KCk7CiAKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKQEAgLTE1OTcsNyArMTU5Nyw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYg
aW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwogICAgIEJv
cmRlckVkZ2U6OmdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBzdHlsZSwgZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJp
Z2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3Qgb3V0ZXJCb3JkZXIgPSBzdHlsZS5nZXRSb3VuZGVk
Qm9yZGVyRm9yKHJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmln
aHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBpbm5lckJvcmRlciA9IHN0eWxlLmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpn
cmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGlubmVyQm9y
ZGVyID0gc3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVz
dGVkRm9yQmxlZWRBdm9pZGFuY2UoZ3JhcGhpY3NDb250ZXh0LCByZWN0LCBibGVlZEF2b2lkYW5j
ZSksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAog
ICAgIGJvb2wgaGF2ZUFscGhhQ29sb3IgPSBmYWxzZTsKICAgICBib29sIGhhdmVBbGxTb2xpZEVk
Z2VzID0gdHJ1ZTsKQEAgLTE3MDMsOSArMTcwMyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwYXRoLmFkZFJlY3QocGl4ZWxTbmFw
cGVkSW5uZXJCb3JkZXIucmVjdCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRGaWxsUnVsZShSVUxFX0VWRU5PREQpOwotICAgICAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zZXRGaWxsQ29sb3IoZWRnZXNbZmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwg
c3R5bGUuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZmlsbFBh
dGgocGF0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbFJ1bGUoUlVMRV9F
VkVOT0REKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoZWRnZXNb
Zmlyc3RWaXNpYmxlRWRnZV0uY29sb3IoKSwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfSAKICAgICAgICAgLy8gQXZvaWQgY3JlYXRpbmcgdHJhbnNwYXJlbnQgbGF5ZXJz
CkBAIC0xNzIwLDIzICsxNzIwLDIzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjdCYKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0RmlsbFJ1bGUoUlVMRV9OT05aRVJPKTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
c2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJsZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9y
U3BhY2UoKSk7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmZpbGxQYXRoKHBhdGgpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxSdWxlKFJVTEVfTk9OWkVSTyk7Cisg
ICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGVkZ2VzW2ZpcnN0VmlzaWJs
ZUVkZ2VdLmNvbG9yKCksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBib29sIGNsaXBUb091dGVyQm9yZGVyID0gb3V0ZXJCb3JkZXIuaXNSb3Vu
ZGVkKCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpncmFwaGlj
c0NvbnRleHQsIGNsaXBUb091dGVyQm9yZGVyKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0LCBjbGlwVG9PdXRlckJvcmRlcik7CiAgICAg
aWYgKGNsaXBUb091dGVyQm9yZGVyKSB7CiAgICAgICAgIC8vIENsaXAgdG8gdGhlIGlubmVyIGFu
ZCBvdXRlciByYWRpaSByZWN0cy4KICAgICAgICAgaWYgKGJsZWVkQXZvaWRhbmNlICE9IEJhY2tn
cm91bmRCbGVlZFVzZVRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5jbGlwUm91bmRlZFJlY3Qob3V0ZXJCb3JkZXIucGl4ZWxTbmFwcGVkUm91bmRlZFJlY3RG
b3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LmNsaXBSb3VuZGVkUmVjdChvdXRlckJvcmRlci5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZv
clBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIC8vIGlzUmVuZGVyYWJsZSgp
IGNoZWNrIGF2b2lkcyBpc3N1ZSBkZXNjcmliZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM4Nzg3CiAgICAgICAgIC8vIFRoZSBpbnNpZGUgd2lsbCBiZSBjbGlw
cGVkIG91dCBsYXRlciAoaW4gY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKQogICAg
ICAgICBpZiAoaW5uZXJCb3JkZXIuaXNSZW5kZXJhYmxlKCkpCi0gICAgICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmNsaXBPdXRSb3VuZGVkUmVjdChpbm5lckJvcmRlci5waXhlbFNuYXBwZWRSb3Vu
ZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgICAgICBncmFw
aGljc0NvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyLnBpeGVsU25hcHBlZFJv
dW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB9CiAKICAgICAv
LyBJZiBvbmx5IG9uZSBlZGdlIHZpc2libGUgYW50aWFsaWFzaW5nIGRvZXNuJ3QgY3JlYXRlIHNl
YW1zCkBAIC0xNzQ5LDcgKzE3NDksNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWlu
dEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAgICAgICAg
IHBhaW50Qm9yZGVyU2lkZXMoZ3JhcGhpY3NDb250ZXh0LCBzdHlsZSwgb3V0ZXJCb3JkZXIsIHVu
YWRqdXN0ZWRJbm5lckJvcmRlciwgaW5uZXJCb3JkZXJBZGp1c3RtZW50LCBlZGdlcywgZWRnZXNU
b0RyYXcsIGJsZWVkQXZvaWRhbmNlLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSwgYW50aWFsaWFzKTsKIH0KIAotdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29u
c3QgQm9yZGVyRWRnZSBlZGdlc1tdLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0Jv
eFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5
b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgUGF0aCYgYm9yZGVyUGF0aCwgY29uc3QgQm9yZGVy
RWRnZSBlZGdlc1tdLAogICAgIGZsb2F0IHRoaWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywg
Qm94U2lkZSBzaWRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIENvbG9yIGNvbG9yLCBFQm9y
ZGVyU3R5bGUgYm9yZGVyU3R5bGUsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiB7CkBAIC0xNzY1LDE0ICsxNzY1LDE0IEBAIHZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIERPVFRFRDoKICAgICBjYXNlIERBU0hF
RDogewotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHls
ZS5jb2xvclNwYWNlKCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
Y29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKICAgICAgICAgLy8gVGhlIHN0cm9rZSBpcyBk
b3VibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJvdmlkZWQgcGF0aCBpcyB0aGUgCiAgICAgICAgIC8v
IG91dHNpZGUgZWRnZSBvZiB0aGUgYm9yZGVyIHNvIGhhbGYgdGhlIHN0cm9rZSBpcyBjbGlwcGVk
IG9mZi4gCiAgICAgICAgIC8vIFRoZSBleHRyYSBtdWx0aXBsaWVyIGlzIHNvIHRoYXQgdGhlIGNs
aXBwaW5nIG1hc2sgY2FuIGFudGlhbGlhcwogICAgICAgICAvLyB0aGUgZWRnZXMgdG8gcHJldmVu
dCBqYWdnaWVzLgotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhk
cmF3VGhpY2tuZXNzICogMiAqIDEuMWYpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFN0
cm9rZVN0eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0
cm9rZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoZHJhd1Ro
aWNrbmVzcyAqIDIgKiAxLjFmKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZVN0
eWxlKGJvcmRlclN0eWxlID09IERBU0hFRCA/IERhc2hlZFN0cm9rZSA6IERvdHRlZFN0cm9rZSk7
CiAKICAgICAgICAgLy8gSWYgdGhlIG51bWJlciBvZiBkYXNoZXMgdGhhdCBmaXQgaW4gdGhlIHBh
dGggaXMgb2RkIGFuZCBub24taW50ZWdyYWwgdGhlbiB3ZQogICAgICAgICAvLyB3aWxsIGhhdmUg
YW4gYXdrd2FyZGx5LXNpemVkIGRhc2ggYXQgdGhlIGVuZCBvZiB0aGUgcGF0aC4gVG8gdHJ5IHRv
IGF2b2lkIHRoYXQKQEAgLTE3OTUsMTMgKzE3OTUsMTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgICAgIERhc2hBcnJheSBsaW5lRGFzaDsKICAgICAgICAgICAgIGxpbmVEYXNo
LmFwcGVuZChkYXNoTGVuZ3RoKTsKICAgICAgICAgICAgIGxpbmVEYXNoLmFwcGVuZChnYXBMZW5n
dGgpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRMaW5lRGFzaChsaW5lRGFzaCwg
ZGFzaExlbmd0aCk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0TGluZURhc2gobGlu
ZURhc2gsIGRhc2hMZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBGSVhN
RTogc3Ryb2tpbmcgdGhlIGJvcmRlciBwYXRoIGNhdXNlcyBpc3N1ZXMgd2l0aCB0aWdodCBjb3Ju
ZXJzOgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTg3MTEKICAgICAgICAgLy8gQWxzbywgdG8gZ2V0IHRoZSBiZXN0IGFwcGVhcmFuY2Ugd2Ugc2hv
dWxkIHN0cm9rZSBhIHBhdGggYmV0d2VlbiB0aGUgdHdvIGJvcmRlcnMuCi0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c3Ryb2tlUGF0aChib3JkZXJQYXRoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnN0cm9rZVBhdGgoYm9yZGVyUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y2FzZSBET1VCTEU6IHsKQEAgLTE4MjQsMTggKzE4MjQsMTggQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKIAogICAgICAgICAvLyBEcmF3IGlubmVyIGJvcmRlciBsaW5lCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqZ3JhcGhpY3ND
b250ZXh0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5uZXJDbGlwID0g
c3R5bGUuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlclJlY3QsCiAgICAgICAgICAgICAg
ICAgaW5uZXJCb3JkZXJUb3BXaWR0aCwgaW5uZXJCb3JkZXJCb3R0b21XaWR0aCwgaW5uZXJCb3Jk
ZXJMZWZ0V2lkdGgsIGlubmVyQm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgICAgICAgICBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoaW5uZXJDbGlwKSk7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuY2xpcFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoaW5uZXJDbGlwKSk7CiAgICAgICAgICAgICBkcmF3
Qm94U2lkZUZyb21QYXRoKGdyYXBoaWNzQ29udGV4dCwgYm9yZGVyUmVjdCwgYm9yZGVyUGF0aCwg
ZWRnZXMsIHRoaWNrbmVzcywgZHJhd1RoaWNrbmVzcywgc2lkZSwgc3R5bGUsIGNvbG9yLCBTT0xJ
RCwgYmxlZWRBdm9pZGFuY2UsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2Fs
UmlnaHRFZGdlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIERyYXcgb3V0ZXIgYm9yZGVyIGxp
bmUKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpncmFwaGljc0NvbnRleHQpOworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CiAgICAgICAgICAgICBMYXlvdXRS
ZWN0IG91dGVyUmVjdCA9IGJvcmRlclJlY3Q7CiAgICAgICAgICAgICBpZiAoYmxlZWRBdm9pZGFu
Y2UgPT0gQmFja2dyb3VuZEJsZWVkVXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgICAg
ICAgICBvdXRlclJlY3QuaW5mbGF0ZSgxKTsKQEAgLTE4NDgsNyArMTg0OCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBSb3VuZGVkUmVjdCBvdXRlckNsaXAgPSBzdHls
ZS5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3Iob3V0ZXJSZWN0LAogICAgICAgICAgICAgICAgIG91
dGVyQm9yZGVyVG9wV2lkdGgsIG91dGVyQm9yZGVyQm90dG9tV2lkdGgsIG91dGVyQm9yZGVyTGVm
dFdpZHRoLCBvdXRlckJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgICAgICAgICAgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChvdXRlckNs
aXApKTsKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoRmxv
YXRSb3VuZGVkUmVjdChvdXRlckNsaXApKTsKICAgICAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBh
dGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tu
ZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIFNPTElELCBibGVlZEF2b2lk
YW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsCiAgICAgICAgIGRyYXdCb3hTaWRlRnJvbVBhdGgoZ3JhcGhpY3NDb250
ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywgdGhpY2tuZXNzLCBkcmF3VGhpY2tu
ZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMxLCBibGVlZEF2b2lkYW5jZSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgICAgIC8vIFBhaW50
IGlubmVyIG9ubHkKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KCpncmFwaGljc0NvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgTGF5b3V0VW5pdCB0b3BXaWR0aCA9
IGVkZ2VzW0JTVG9wXS53aWR0aEZvclBhaW50aW5nKCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0
IGJvdHRvbVdpZHRoID0gZWRnZXNbQlNCb3R0b21dLndpZHRoRm9yUGFpbnRpbmcoKSAvIDI7CiAg
ICAgICAgIExheW91dFVuaXQgbGVmdFdpZHRoID0gZWRnZXNbQlNMZWZ0XS53aWR0aEZvclBhaW50
aW5nKCkgLyAyOwpAQCAtMTg4MCw3ICsxODgwLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwK
ICAgICAgICAgICAgIHRvcFdpZHRoLCBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCByaWdodFdpZHRo
LAogICAgICAgICAgICAgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0
Um91bmRlZFJlY3QoY2xpcFJlY3QpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGNsaXBSZWN0KSk7CiAgICAgICAgIGRyYXdCb3hTaWRl
RnJvbVBhdGgoZ3JhcGhpY3NDb250ZXh0LCBib3JkZXJSZWN0LCBib3JkZXJQYXRoLCBlZGdlcywg
dGhpY2tuZXNzLCBkcmF3VGhpY2tuZXNzLCBzaWRlLCBzdHlsZSwgY29sb3IsIHMyLCBibGVlZEF2
b2lkYW5jZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg5Miw5ICsxODkyLDkgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6ZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZ3JhcGhpY3NDb250
ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRG
aWxsQ29sb3IoY29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0
LT5kcmF3UmVjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlclJlY3QsIGRvY3VtZW50KCku
ZGV2aWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VTdHls
ZShOb1N0cm9rZSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjb2xvciwgc3R5
bGUuY29sb3JTcGFjZSgpKTsKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1JlY3Qoc25hcFJlY3RU
b0RldmljZVBpeGVscyhib3JkZXJSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkp
KTsKIH0KIAogc3RhdGljIHZvaWQgZmluZElubmVyVmVydGV4KGNvbnN0IEZsb2F0UG9pbnQmIG91
dGVyQ29ybmVyLCBjb25zdCBGbG9hdFBvaW50JiBpbm5lckNvcm5lciwgY29uc3QgRmxvYXRQb2lu
dCYgY2VudGVyUG9pbnQsIEZsb2F0UG9pbnQmIHJlc3VsdCkKQEAgLTE5MTIsNyArMTkxMiw3IEBA
IHN0YXRpYyB2b2lkIGZpbmRJbm5lclZlcnRleChjb25zdCBGbG9hdFBvaW50JiBvdXRlckNvcm5l
ciwgY29uc3QgRmxvYXRQb2ludCYgaW5uCiAgICAgICAgIGZpbmRJbnRlcnNlY3Rpb24ob3V0ZXJD
b3JuZXIsIGlubmVyQ29ybmVyLCBGbG9hdFBvaW50KDAsIGNlbnRlclBvaW50LnkoKSksIEZsb2F0
UG9pbnQoMTAwLCBjZW50ZXJQb2ludC55KCkpLCByZXN1bHQpOwogfQogCi12b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRl
ZFJlY3QmIGlubmVyQm9yZGVyLAordm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xpcEJvcmRl
clNpZGVQb2x5Z29uKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHNp
ZGUsIGJvb2wgZmlyc3RFZGdlTWF0Y2hlcywgYm9vbCBzZWNvbmRFZGdlTWF0Y2hlcykKIHsKICAg
ICBGbG9hdFBvaW50IHF1YWRbNF07CkBAIC0xOTk0LDcgKzE5OTQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpjbGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnRleAogICAgIC8vIElmIHRoZSBib3JkZXIgbWF0Y2hlcyBib3RoIG9mIGl0cyBhZGph
Y2VudCBzaWRlcywgZG9uJ3QgYW50aS1hbGlhcyB0aGUgY2xpcCwgYW5kCiAgICAgLy8gaWYgbmVp
dGhlciBzaWRlIG1hdGNoZXMsIGFudGktYWxpYXMgdGhlIGNsaXAuCiAgICAgaWYgKGZpcnN0RWRn
ZU1hdGNoZXMgPT0gc2Vjb25kRWRnZU1hdGNoZXMpIHsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0Y2hlcyk7CisgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBxdWFkLCAhZmlyc3RFZGdlTWF0
Y2hlcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIwMDQsNyArMjAwNCw3IEBAIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4CiAgICAgZmlyc3RRdWFkWzFdID0gcXVhZFsxXTsKICAgICBm
aXJzdFF1YWRbMl0gPSBzaWRlID09IEJTVG9wIHx8IHNpZGUgPT0gQlNCb3R0b20gPyBGbG9hdFBv
aW50KHF1YWRbM10ueCgpLCBxdWFkWzJdLnkoKSkgOiBGbG9hdFBvaW50KHF1YWRbMl0ueCgpLCBx
dWFkWzNdLnkoKSk7CiAgICAgZmlyc3RRdWFkWzNdID0gcXVhZFszXTsKLSAgICBncmFwaGljc0Nv
bnRleHQtPmNsaXBDb252ZXhQb2x5Z29uKDQsIGZpcnN0UXVhZCwgIWZpcnN0RWRnZU1hdGNoZXMp
OworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwQ29udmV4UG9seWdvbig0LCBmaXJzdFF1YWQsICFm
aXJzdEVkZ2VNYXRjaGVzKTsKIAogICAgIEZsb2F0UG9pbnQgc2Vjb25kUXVhZFs0XTsKICAgICBz
ZWNvbmRRdWFkWzBdID0gcXVhZFswXTsKQEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlUG9seWdvbihHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4CiAgICAgc2Vjb25kUXVhZFsyXSA9IHF1YWRbMl07CiAgICAgc2Vjb25kUXVh
ZFszXSA9IHF1YWRbM107CiAgICAgLy8gQW50aWFsaWFzaW5nIGFmZmVjdHMgdGhlIHNlY29uZCBz
aWRlLgotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcENvbnZleFBvbHlnb24oNCwgc2Vjb25kUXVh
ZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcENvbnZleFBv
bHlnb24oNCwgc2Vjb25kUXVhZCwgIXNlY29uZEVkZ2VNYXRjaGVzKTsKIH0KIAogc3RhdGljIExh
eW91dFJlY3QgY2FsY3VsYXRlU2lkZVJlY3RJbmNsdWRpbmdJbm5lcihjb25zdCBSb3VuZGVkUmVj
dCYgb3V0ZXJCb3JkZXIsIGNvbnN0IEJvcmRlckVkZ2UgZWRnZXNbXSwgQm94U2lkZSBzaWRlKQpA
QCAtMjEyMiwxMSArMjEyMiwxMSBAQCBzdGF0aWMgUm91bmRlZFJlY3QgY2FsY3VsYXRlQWRqdXN0
ZWRJbm5lckJvcmRlcihjb25zdCBSb3VuZGVkUmVjdCZpbm5lckJvcmRlciwgQgogICAgIHJldHVy
biBSb3VuZGVkUmVjdChuZXdSZWN0LCBuZXdSYWRpaSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElubmVyUGF0aChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVyLCBjb25z
dCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
bGlwQm9yZGVyU2lkZUZvckNvbXBsZXhJbm5lclBhdGgoR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFJvdW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJl
Y3QmIGlubmVyQm9yZGVyLAogICAgIEJveFNpZGUgc2lkZSwgY29uc3QgY2xhc3MgQm9yZGVyRWRn
ZSBlZGdlc1tdKQogewotICAgIGdyYXBoaWNzQ29udGV4dC0+Y2xpcChjYWxjdWxhdGVTaWRlUmVj
dEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdlcywgc2lkZSkpOwotICAgIGdyYXBoaWNz
Q29udGV4dC0+Y2xpcE91dFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2FsY3VsYXRlQWRq
dXN0ZWRJbm5lckJvcmRlcihpbm5lckJvcmRlciwgc2lkZSkpKTsKKyAgICBncmFwaGljc0NvbnRl
eHQuY2xpcChjYWxjdWxhdGVTaWRlUmVjdEluY2x1ZGluZ0lubmVyKG91dGVyQm9yZGVyLCBlZGdl
cywgc2lkZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwT3V0Um91bmRlZFJlY3QoRmxvYXRS
b3VuZGVkUmVjdChjYWxjdWxhdGVBZGp1c3RlZElubmVyQm9yZGVyKGlubmVyQm9yZGVyLCBzaWRl
KSkpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJPYnNjdXJlc0JhY2tn
cm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25zdApAQCAtMjIzMCw4
ICsyMjMwLDggQEAgc3RhdGljIGlubGluZSBMYXlvdXRSZWN0IGFyZWFDYXN0aW5nU2hhZG93SW5I
b2xlKGNvbnN0IExheW91dFJlY3QmIGhvbGVSZWN0LCBpbnQKIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UmVjdCYgcGFpbnRSZWN0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFNoYWRvd1N0eWxlIHNo
YWRvd1N0eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBib3JkZXItaW1hZ2UuICBX
b3VsZCBiZSBncmVhdCB0byB1c2UgYm9yZGVyLWltYWdlIGFzIGEgbWFzay4KLSAgICBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQgPSBpbmZvLmNvbnRleHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUuYm94U2hhZG93KCkpCisgICAgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0ID0gaW5mby5jb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFzdHlsZS5ib3hTaGFkb3coKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUm91
bmRlZFJlY3QgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KSA/IHN0eWxlLmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKQpAQCAtMjI2OCw4ICsyMjY4LDggQEAgdm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBM
YXlvdXRSZWMKICAgICAgICAgICAgIHBpeGVsU25hcHBlZFNoYWRvd1JlY3QuaW5mbGF0ZShzaGFk
b3dQYWludGluZ0V4dGVudCArIHNoYWRvd1NwcmVhZCk7CiAgICAgICAgICAgICBwaXhlbFNuYXBw
ZWRTaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKIAotICAgICAgICAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CisgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgICAgICAgICBjb250ZXh0
LmNsaXAocGl4ZWxTbmFwcGVkU2hhZG93UmVjdCk7CiAKICAgICAgICAgICAgIC8vIE1vdmUgdGhl
IGZpbGwganVzdCBvdXRzaWRlIHRoZSBjbGlwLCBhZGRpbmcgMSBwaXhlbCBzZXBhcmF0aW9uIHNv
IHRoYXQgdGhlIGZpbGwgZG9lcyBub3QKICAgICAgICAgICAgIC8vIGJsZWVkIGluIChkdWUgdG8g
YW50aWFsaWFzaW5nKSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2Zvcm1lZC4KQEAgLTIyNzgsOSAr
MjI3OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG93KGNvbnN0
IFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UmVjCiAgICAgICAgICAgICBmaWxsUmVjdC5t
b3ZlKGV4dHJhT2Zmc2V0KTsKIAogICAgICAgICAgICAgaWYgKHNoYWRvdy0+aXNXZWJraXRCb3hT
aGFkb3coKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRMZWdhY3lTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0TGVnYWN5U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAg
ICAgICAgIGNvbnRleHQuc2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFk
b3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICAgICAgRmxvYXRSb3VuZGVk
UmVjdCByZWN0VG9DbGlwT3V0ID0gYm9yZGVyLnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9yUGFp
bnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgRmxvYXRSb3VuZGVkUmVjdCBw
aXhlbFNuYXBwZWRGaWxsUmVjdCA9IGZpbGxSZWN0LnBpeGVsU25hcHBlZFJvdW5kZWRSZWN0Rm9y
UGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpOwpAQCAtMjI5MiwxOCArMjI5MiwxOCBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFJlYwogICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0Lmlu
ZmxhdGVXaXRoUmFkaWkoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKC0xKSk7CiAKICAgICAgICAgICAg
ICAgICBpZiAoIXJlY3RUb0NsaXBPdXQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5jbGlwT3V0Um91bmRlZFJlY3QocmVjdFRvQ2xpcE91dCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuY2xpcE91dFJvdW5kZWRSZWN0KHJlY3RUb0NsaXBPdXQpOwogCiAgICAg
ICAgICAgICAgICAgUm91bmRlZFJlY3QgaW5mbHVlbmNlUmVjdChMYXlvdXRSZWN0KHBpeGVsU25h
cHBlZFNoYWRvd1JlY3QpLCBib3JkZXIucmFkaWkoKSk7CiAgICAgICAgICAgICAgICAgaW5mbHVl
bmNlUmVjdC5leHBhbmRSYWRpaSgyICogc2hhZG93UGFpbnRpbmdFeHRlbnQgKyBzaGFkb3dTcHJl
YWQpOwogCiAgICAgICAgICAgICAgICAgaWYgKGFsbENvcm5lcnNDbGlwcGVkT3V0KGluZmx1ZW5j
ZVJlY3QsIGluZm8ucmVjdCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNw
YWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHBpeGVsU25hcHBl
ZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBwaXhlbFNuYXBwZWRGaWxs
UmVjdC5leHBhbmRSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
IXBpeGVsU25hcHBlZEZpbGxSZWN0LmlzUmVuZGVyYWJsZSgpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgcGl4ZWxTbmFwcGVkRmlsbFJlY3QuYWRqdXN0UmFkaWkoKTsKLSAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xv
cjo6YmxhY2ssIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LCBDb2xvcjo6YmxhY2ssIHN0
eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYm94IGlzIG9wYXF1ZSwgaXQgaXMgdW5uZWNl
c3NhcnkgdG8gY2xpcCBpdCBvdXQuIEhvd2V2ZXIsIGRvaW5nIHNvIHNhdmVzIHRpbWUKQEAgLTIz
MTMsMTQgKzIzMTMsMTQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3hTaGFk
b3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMKICAgICAgICAgICAgICAg
ICBpZiAoaGFzT3BhcXVlQmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogVGhlIGZ1bmN0aW9uIHRvIGRlY2lkZSBvbiB0aGUgcG9saWN5IGJhc2VkIG9uIHRoZSB0cmFu
c2Zvcm0gc2hvdWxkIGJlIGEgbmFtZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBJdCdzIG5vdCBjbGVhciBpZiB0aGlzIGNoZWNrIGlzIHJpZ2h0LiBXaGF0IGFib3V0
IGludGVncmFsIHNjYWxlIGZhY3RvcnM/Ci0gICAgICAgICAgICAgICAgICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm0gPSBjb250ZXh0LT5nZXRDVE0oKTsKKyAgICAgICAgICAgICAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm0uYSgpICE9IDEgfHwgKHRyYW5zZm9ybS5kKCkgIT0gMSAm
JiB0cmFuc2Zvcm0uZCgpICE9IC0xKSB8fCB0cmFuc2Zvcm0uYigpIHx8IHRyYW5zZm9ybS5jKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZWN0VG9DbGlwT3V0LmluZmxhdGUoTGF5b3V0VW5p
dDo6ZnJvbVBpeGVsKC0xKS50b0Zsb2F0KCkpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgICAgIGlmICghcmVjdFRvQ2xpcE91dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEZpbGxSZWN0LnJlY3QoKSwgQ29sb3I6
OmJsYWNrLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmNsaXBPdXQocmVjdFRvQ2xpcE91dC5yZWN0KCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZmlsbFJlY3QocGl4ZWxTbmFwcGVkRmlsbFJlY3QucmVjdCgpLCBDb2xvcjo6YmxhY2ssIHN0eWxl
LmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAvLyBJbnNldCBzaGFkb3cuCkBAIC0yMzMwLDkgKzIzMzAsOSBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlYwogCiAgICAgICAgICAgICBpZiAocGl4ZWxTbmFwcGVkSG9sZVJlY3QuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0JvcmRlclJhZGl1cykKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJvdW5kZWRSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3Qs
IHNoYWRvd0NvbG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxSb3VuZGVkUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBzaGFkb3dDb2xv
ciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHBpeGVsU25hcHBlZEJvcmRlclJlY3QucmVjdCgp
LCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUmVjdChwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LnJlY3QoKSwgc2hhZG93Q29s
b3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAKQEAgLTIzNTcsMjUgKzIzNTcsMjUgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRS
ZWMKICAgICAgICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRPdXRlclJlY3QgPSBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGFyZWFDYXN0aW5nU2hhZG93SW5Ib2xlKExheW91dFJlY3QocGl4ZWxT
bmFwcGVkQm9yZGVyUmVjdC5yZWN0KCkpLCBzaGFkb3dQYWludGluZ0V4dGVudCwgc2hhZG93U3By
ZWFkLCBzaGFkb3dPZmZzZXQpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgICAgICBGbG9h
dFJvdW5kZWRSZWN0IHBpeGVsU25hcHBlZFJvdW5kZWRIb2xlID0gRmxvYXRSb3VuZGVkUmVjdChw
aXhlbFNuYXBwZWRIb2xlUmVjdCwgcGl4ZWxTbmFwcGVkQm9yZGVyUmVjdC5yYWRpaSgpKTsKIAot
ICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0
KTsKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKICAgICAgICAgICAgIGlmIChoYXNCb3JkZXJSYWRpdXMpIHsKICAgICAgICAgICAgICAg
ICBQYXRoIHBhdGg7CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChwaXhlbFNu
YXBwZWRCb3JkZXJSZWN0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5jbGlwKHBhdGgpOwor
ICAgICAgICAgICAgICAgIGNvbnRleHQuY2xpcChwYXRoKTsKICAgICAgICAgICAgICAgICBwaXhl
bFNuYXBwZWRSb3VuZGVkSG9sZS5zaHJpbmtSYWRpaShzaGFkb3dTcHJlYWQpOwogICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRCb3Jk
ZXJSZWN0LnJlY3QoKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBl
ZEJvcmRlclJlY3QucmVjdCgpKTsKIAogICAgICAgICAgICAgSW50U2l6ZSBleHRyYU9mZnNldCgy
ICogcm91bmRUb0ludChwYWludFJlY3Qud2lkdGgoKSkgKyBzdGQ6Om1heCgwLCBzaGFkb3dPZmZz
ZXQud2lkdGgoKSkgKyBzaGFkb3dQYWludGluZ0V4dGVudCAtIDIgKiBzaGFkb3dTcHJlYWQgKyAx
LCAwKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShleHRyYU9mZnNldC53aWR0aCgp
LCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CisgICAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShl
eHRyYU9mZnNldC53aWR0aCgpLCBleHRyYU9mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBz
aGFkb3dPZmZzZXQgLT0gZXh0cmFPZmZzZXQ7CiAKICAgICAgICAgICAgIGlmIChzaGFkb3ctPmlz
V2Via2l0Qm94U2hhZG93KCkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0TGVnYWN5U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldExlZ2FjeVNoYWRvdyhzaGFkb3dP
ZmZzZXQsIHNoYWRvd1JhZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93UmFkaXVzLCBzaGFkb3dDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1Jh
ZGl1cywgc2hhZG93Q29sb3IsIHN0eWxlLmNvbG9yU3BhY2UoKSk7CiAKLSAgICAgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKHBpeGVsU25hcHBlZE91dGVyUmVjdCwgcGl4
ZWxTbmFwcGVkUm91bmRlZEhvbGUsIGZpbGxDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUocGl4ZWxTbmFwcGVkT3V0
ZXJSZWN0LCBwaXhlbFNuYXBwZWRSb3VuZGVkSG9sZSwgZmlsbENvbG9yLCBzdHlsZS5jb2xvclNw
YWNlKCkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQ4NCwxMSArMjQ4NCwxMSBAQCBMYXlv
dXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVu
dChMYXlvdXRVbml0IHdpZHRoLAogICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IExheW91dFJlY3QoeCwgeSwgY2FyZXRXaWR0aCwgaGVpZ2h0KSA6IExh
eW91dFJlY3QoeSwgeCwgaGVpZ2h0LCBjYXJldFdpZHRoKTsKIH0KIAotYm9vbCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEZJWE1FOiBXZSBtYXkgd2FudCB0byBub3Qg
YW50aWFsaWFzIHdoZW4gc2NhbGVkIGJ5IGFuIGludGVncmFsIHZhbHVlLAogICAgIC8vIGFuZCB3
ZSBtYXkgd2FudCB0byBhbnRpYWxpYXMgd2hlbiB0cmFuc2xhdGVkIGJ5IGEgbm9uLWludGVncmFs
IHZhbHVlLgotICAgIHJldHVybiAhY29udGV4dC0+Z2V0Q1RNKCkuaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKTsKKyAgICByZXR1cm4gIWNvbnRleHQuZ2V0Q1RNKCkuaXNJZGVudGl0
eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKTsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6bWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlLCBUcmFu
c2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGMyMjhhNDg1ZWUzNWZjOTgyMzc3
MThjZTljN2QzOTQwMjE0ZDExNTguLjU4ODA1ZTA4YzI4MjFlNGZkYjZjOGM0OTkyNWMxOTdiOWY2
MjAyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGls
ZEJlY2FtZU5vbklubGluZShSZW5kZXJFbGVtZW50JikgeyB9CiAKICAgICB2b2lkIHBhaW50Qm9y
ZGVyKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UgPSB0cnVlKTsKLSAgICBib29sIHBhaW50TmluZVBpZWNlSW1hZ2UoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTmluZVBpZWNl
SW1hZ2UmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGJv
b2wgcGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBT
aGFkb3dTdHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZChjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gq
ID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9i
amVjdCA9IG51bGxwdHIsIEJhc2VCYWNrZ3JvdW5kQ29sb3JVc2FnZSA9IEJhc2VCYWNrZ3JvdW5k
Q29sb3JVc2UpOwogCkBAIC0yNTEsMTYgKzI1MSwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUm91bmRl
ZFJlY3QgYmFja2dyb3VuZFJvdW5kZWRSZWN0QWRqdXN0ZWRGb3JCbGVlZEF2b2lkYW5jZShjb25z
dCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZv
aWRhbmNlLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0U2l6ZSYsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3Q7CiAgICAg
TGF5b3V0UmVjdCBib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9p
ZGFuY2UpIGNvbnN0OwogCi0gICAgYm9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGlj
c0NvbnRleHQqLCBJbWFnZSosIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CisgICAg
Ym9vbCBzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSosIGNv
bnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVj
dCogY29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250aW51YXRpb24oUmVuZGVy
Qm94TW9kZWxPYmplY3QqKTsKIAogICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RGb3JFbXB0
eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0KTsK
IAotICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCop
OworICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCYp
OwogCi0gICAgc3RhdGljIHZvaWQgY2xpcFJvdW5kZWRJbm5lclJlY3QoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgY2xpcFJlY3QpOwor
ICAgIHN0YXRpYyB2b2lkIGNsaXBSb3VuZGVkSW5uZXJSZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGNsaXBSZWN0KTsKIAogICAg
IGJvb2wgaGFzQXV0b0hlaWdodE9yQ29udGFpbmluZ0Jsb2NrV2l0aEF1dG9IZWlnaHQoKSBjb25z
dDsKIApAQCAtMzA3LDE4ICszMDcsMTggQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIGZpeGVk
QmFja2dyb3VuZFBhaW50c0luTG9jYWxDb29yZGluYXRlcygpIGNvbnN0OwogCi0gICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCisgICAgdm9pZCBj
bGlwQm9yZGVyU2lkZVBvbHlnb24oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUm91bmRlZFJlY3Qm
IG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQm94U2lkZSwgYm9vbCBmaXJzdEVkZ2VNYXRjaGVzLCBib29s
IHNlY29uZEVkZ2VNYXRjaGVzKTsKLSAgICB2b2lkIGNsaXBCb3JkZXJTaWRlRm9yQ29tcGxleElu
bmVyUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSb3VuZGVkUmVjdCYsIGNvbnN0IFJvdW5k
ZWRSZWN0JiwgQm94U2lkZSwgY29uc3QgQm9yZGVyRWRnZVtdKTsKLSAgICB2b2lkIHBhaW50T25l
Qm9yZGVyU2lkZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IFJv
dW5kZWRSZWN0JiBvdXRlckJvcmRlciwgY29uc3QgUm91bmRlZFJlY3QmIGlubmVyQm9yZGVyLAor
ICAgIHZvaWQgY2xpcEJvcmRlclNpZGVGb3JDb21wbGV4SW5uZXJQYXRoKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFJvdW5kZWRSZWN0JiwgY29uc3QgUm91bmRlZFJlY3QmLCBCb3hTaWRlLCBjb25z
dCBCb3JkZXJFZGdlW10pOworICAgIHZvaWQgcGFpbnRPbmVCb3JkZXJTaWRlKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJlY3QmIG91dGVyQm9yZGVy
LCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsCiAgICAgICAgIGNvbnN0IExheW91dFJl
Y3QmIHNpZGVSZWN0LCBCb3hTaWRlLCBCb3hTaWRlIGFkamFjZW50U2lkZTEsIEJveFNpZGUgYWRq
YWNlbnRTaWRlMiwgY29uc3QgQm9yZGVyRWRnZVtdLAogICAgICAgICBjb25zdCBQYXRoKiwgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UsIGJvb2wgYW50aWFsaWFzLCBjb25zdCBDb2xvciogb3Zl
cnJpZGVDb2xvciA9IG51bGxwdHIpOwotICAgIHZvaWQgcGFpbnRUcmFuc2x1Y2VudEJvcmRlclNp
ZGVzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgUm91bmRlZFJl
Y3QmIG91dGVyQm9yZGVyLCBjb25zdCBSb3VuZGVkUmVjdCYgaW5uZXJCb3JkZXIsIGNvbnN0IElu
dFBvaW50JiBpbm5lckJvcmRlckFkanVzdG1lbnQsCisgICAgdm9pZCBwYWludFRyYW5zbHVjZW50
Qm9yZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBS
b3VuZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwg
Y29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwKICAgICAgICAgY29uc3QgQm9y
ZGVyRWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlLCBi
b29sIGFudGlhbGlhcyA9IGZhbHNlKTsKLSAgICB2b2lkIHBhaW50Qm9yZGVyU2lkZXMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3VuZGVkUmVjdCYgb3V0ZXJC
b3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKKyAgICB2b2lkIHBhaW50Qm9y
ZGVyU2lkZXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBSb3Vu
ZGVkUmVjdCYgb3V0ZXJCb3JkZXIsIGNvbnN0IFJvdW5kZWRSZWN0JiBpbm5lckJvcmRlciwKICAg
ICAgICAgY29uc3QgSW50UG9pbnQmIGlubmVyQm9yZGVyQWRqdXN0bWVudCwgY29uc3QgQm9yZGVy
RWRnZVtdLCBCb3JkZXJFZGdlRmxhZ3MsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwKICAgICAg
ICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlLCBib29sIGFudGlhbGlhcyA9IGZhbHNlLCBjb25zdCBDb2xvciogb3ZlcnJpZGVDb2xvciA9
IG51bGxwdHIpOwotICAgIHZvaWQgZHJhd0JveFNpZGVGcm9tUGF0aChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUGF0aCYsIGNvbnN0IEJvcmRlckVkZ2VbXSwKKyAg
ICB2b2lkIGRyYXdCb3hTaWRlRnJvbVBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0
UmVjdCYsIGNvbnN0IFBhdGgmLCBjb25zdCBCb3JkZXJFZGdlW10sCiAgICAgICAgIGZsb2F0IHRo
aWNrbmVzcywgZmxvYXQgZHJhd1RoaWNrbmVzcywgQm94U2lkZSwgY29uc3QgUmVuZGVyU3R5bGUm
LAogICAgICAgICBDb2xvciwgRUJvcmRlclN0eWxlLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2Us
IGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSk7CiAgICAgdm9pZCBwYWludE1hc2tGb3JUZXh0RmlsbEJveChJbWFnZUJ1ZmZlciosIGNvbnN0
IEludFJlY3QmLCBJbmxpbmVGbG93Qm94KiwgY29uc3QgTGF5b3V0UmVjdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IDVlZWY3
NjI1Mjk0MDU5Y2JiMDk3ZTEwZmY5ZDk0ZDhkNTg3ZWJiNzAuLmI1M2YyYWY0ZmVlNWRiZjFmMzkw
OGQ4NDIzYjQzZWE5NTQxNTI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGV0YWlsc01hcmtlci5jcHAKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHZvaWQgUmVuZGVy
RGV0YWlsc01hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBv
aW50JiBwYWludE9mCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENvbG9yIGNvbG9yKHN0
eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpKTsKLSAgICBwYWlu
dEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoY29sb3IsIHN0eWxlKCku
Y29sb3JTcGFjZSgpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNv
bGlkU3Ryb2tlKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcygx
LjBmKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihjb2xvciwgc3R5bGUo
KS5jb2xvclNwYWNlKCkpOwogCiAgICAgYm94T3JpZ2luLm1vdmUoYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5maWxsUGF0aChnZXRQYXRoKGJveE9yaWdpbikpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZmlsbFBhdGgoZ2V0UGF0aChib3hPcmlnaW4pKTsKIH0KIAogYm9vbCBSZW5kZXJEZXRh
aWxzTWFya2VyOjppc09wZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVsZW1lbnQuY3BwCmluZGV4IDI1ODIwNGUwYjBiMGJhMDVlNTRjZGNlNDc3NDM2MjgzNTg2Y2U2
MjkuLjBlMTc2YWQxMTUxZmNiZjNhOGNiNThmMDc5YjY2M2MzNGJiNGI0NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTIwNDEsMTcgKzIwNDEsMTcg
QEAgdm9pZCBSZW5kZXJFbGVtZW50OjpwYWludEZvY3VzUmluZyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBhZGRGb2N1c1JpbmdSZWN0cyhmb2N1c1Jp
bmdSZWN0cywgcGFpbnRPZmZzZXQsIHBhaW50SW5mby5wYWludENvbnRhaW5lcik7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGJvb2wgbmVlZHNSZXBhaW50OwotICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCB0aGVtZSgpLnBsYXRmb3JtRm9jdXNSaW5n
V2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBkb2N1bWVudCgpLnBhZ2UoKS0+Zm9jdXND
b250cm9sbGVyKCkudGltZVNpbmNlRm9jdXNXYXNTZXQoKSwgbmVlZHNSZXBhaW50KTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcoZm9jdXNSaW5nUmVjdHMsIHRoZW1lKCku
cGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCBzdHlsZS5vdXRsaW5lT2Zmc2V0KCksIGRvY3VtZW50
KCkucGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS50aW1lU2luY2VGb2N1c1dhc1NldCgpLCBuZWVk
c1JlcGFpbnQpOwogICAgIGlmIChuZWVkc1JlcGFpbnQpCiAgICAgICAgIGRvY3VtZW50KCkucGFn
ZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwog
I2Vsc2UKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd0ZvY3VzUmluZyhmb2N1c1JpbmdSZWN0
cywgc3R5bGUub3V0bGluZVdpZHRoKCksIHN0eWxlLm91dGxpbmVPZmZzZXQoKSwgc3R5bGUudmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKSk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5kcmF3Rm9jdXNSaW5nKGZvY3VzUmluZ1JlY3RzLCBzdHlsZS5vdXRsaW5l
V2lkdGgoKSwgc3R5bGUub3V0bGluZU9mZnNldCgpLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IpKTsKICNlbmRpZgogfQogCiB2b2lkIFJlbmRlckVs
ZW1lbnQ6OnBhaW50T3V0bGluZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UmVj
dCYgcGFpbnRSZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0ID0g
KnBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAzMTVkYzE0NWRkZmI4NTAxNDVj
YTIwYmQ5ZjBhMTUwYTFiNjU3ZWU0Li4yYjFmMTY1NWQ5OTY0NmEwZmQwNTAxZWVjNWY4MjgzYjcy
NjJkNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAog
ICAgIGlmICghY1dpZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogICAgIExheW91dFNpemUgY29u
dGVudFNpemUoY1dpZHRoLCBjSGVpZ2h0KTsKICAgICBMYXlvdXRQb2ludCBjb250ZW50TG9jYXRp
b24gPSBsb2NhdGlvbigpICsgcGFpbnRPZmZzZXQ7CiAgICAgY29udGVudExvY2F0aW9uLm1vdmUo
Ym9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25h
cHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0CiAjaWYgRU5BQkxF
KENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLnNldElt
YWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlvbigpKTsKICNlbmRpZgot
ICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWdu
ZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VM
b3dRdWFsaXR5U2NhbGluZykpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0
aW9uRGVzY3JpcHRpb24sIHVzZUxvd1F1YWxpdHlTY2FsaW5nKSk7CiB9CiAKIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKQEAgLTI2Miw5ICsyNjIsOSBAQCB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50TwogICAgIFJlbmRlcldpZGdldDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9m
ZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpZGVSZWN0KQorc3RhdGljIHZvaWQg
ZHJhd1JlcGxhY2VtZW50QXJyb3coR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGluc2lkZVJlY3QpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAKICAgICBGbG9hdFJlY3QgcmVjdChpbnNpZGVSZWN0KTsKICAgICByZWN0
LmluZmxhdGUoLXJlcGxhY2VtZW50QXJyb3dQYWRkaW5nKTsKQEAgLTI3Miw5ICsyNzIsOSBAQCBz
dGF0aWMgdm9pZCBkcmF3UmVwbGFjZW1lbnRBcnJvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgaW5zaQogICAgIEZsb2F0UG9pbnQgY2VudGVyKHJlY3QuY2VudGVy
KCkpOwogICAgIEZsb2F0UG9pbnQgYXJyb3dUaXAocmVjdC5tYXhYKCksIGNlbnRlci55KCkpOwog
Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwotICAgIGNvbnRleHQtPnNldExp
bmVDYXAoUm91bmRDYXApOwotICAgIGNvbnRleHQtPnNldExpbmVKb2luKFJvdW5kSm9pbik7Cisg
ICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zZXRMaW5lQ2Fw
KFJvdW5kQ2FwKTsKKyAgICBjb250ZXh0LnNldExpbmVKb2luKFJvdW5kSm9pbik7CiAKICAgICBQ
YXRoIHBhdGg7CiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChyZWN0LngoKSwgY2VudGVyLnko
KSkpOwpAQCAtMjgyLDcgKzI4Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdSZXBsYWNlbWVudEFycm93
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpbnNpCiAgICAgcGF0
aC5hZGRMaW5lVG8oRmxvYXRQb2ludChjZW50ZXIueCgpLCByZWN0LnkoKSkpOwogICAgIHBhdGgu
bW92ZVRvKGFycm93VGlwKTsKICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KGNlbnRlci54
KCksIHJlY3QubWF4WSgpKSk7Ci0gICAgY29udGV4dC0+c3Ryb2tlUGF0aChwYXRoKTsKKyAgICBj
b250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKQEAgLTI5Myw4ICsyOTMsOCBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAog
ICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQ7Ci0gICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIGlmIChjb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGNvbnRl
bnRSZWN0OwpAQCAtMzEwLDM2ICszMTAsMzYgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAg
ICBQYXRoIGJhY2tncm91bmQ7CiAgICAgYmFja2dyb3VuZC5hZGRSb3VuZGVkUmVjdChpbmRpY2F0
b3JSZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMsIHJlcGxh
Y2VtZW50VGV4dFJvdW5kZWRSZWN0UmFkaXVzKSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJl
Y3QpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9ySXNQcmVzc2VkID8gcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RQcmVzc2VkQ29sb3IoKSA6
IHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0Q29sb3IoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkp
OwotICAgIGNvbnRleHQtPmZpbGxQYXRoKGJhY2tncm91bmQpOworICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LmNsaXAoY29udGVu
dFJlY3QpOworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKG1fdW5hdmFpbGFibGVQbHVnaW5JbmRp
Y2F0b3JJc1ByZXNzZWQgPyByZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFByZXNzZWRDb2xvcigp
IDogcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgY29udGV4dC5maWxsUGF0aChiYWNrZ3JvdW5kKTsKIAogICAgIFBhdGggc3Ryb2tl
UGF0aDsKICAgICBGbG9hdFJlY3Qgc3Ryb2tlUmVjdChpbmRpY2F0b3JSZWN0KTsKICAgICBzdHJv
a2VSZWN0LmluZmxhdGUoMSk7CiAgICAgc3Ryb2tlUGF0aC5hZGRSb3VuZGVkUmVjdChzdHJva2VS
ZWN0LCBGbG9hdFNpemUocmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMgKyAxLCByZXBs
YWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cyArIDEpKTsKIAotICAgIGNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKHVuYXZhaWxhYmxlUGx1Z2luQm9yZGVyQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygyKTsKLSAgICBjb250ZXh0
LT5zdHJva2VQYXRoKHN0cm9rZVBhdGgpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5h
dmFpbGFibGVQbHVnaW5Cb3JkZXJDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CisgICAgY29udGV4dC5zdHJva2VQYXRoKHN0
cm9rZVBhdGgpOwogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gZm9udC5m
b250TWV0cmljcygpOwogICAgIGZsb2F0IGxhYmVsWCA9IHJvdW5kZihyZXBsYWNlbWVudFRleHRS
ZWN0LmxvY2F0aW9uKCkueCgpICsgcmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RMZWZ0VGV4dE1h
cmdpbik7CiAgICAgZmxvYXQgbGFiZWxZID0gcm91bmRmKHJlcGxhY2VtZW50VGV4dFJlY3QubG9j
YXRpb24oKS55KCkgKyAocmVwbGFjZW1lbnRUZXh0UmVjdC5zaXplKCkuaGVpZ2h0KCkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyICsgZm9udE1ldHJpY3MuYXNjZW50KCkgKyByZXBsYWNlbWVu
dFRleHRSb3VuZGVkUmVjdFRvcFRleHRNYXJnaW4pOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xv
cihyZXBsYWNlbWVudFRleHRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29u
dGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHJ1biwgRmxvYXRQb2ludChsYWJlbFgsIGxhYmVsWSkp
OworICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICBjb250ZXh0LmRyYXdCaWRpVGV4dChmb250LCBydW4sIEZs
b2F0UG9pbnQobGFiZWxYLCBsYWJlbFkpKTsKIAogICAgIGlmIChzaG91bGRVbmF2YWlsYWJsZVBs
dWdpbk1lc3NhZ2VCZUJ1dHRvbihkb2N1bWVudCgpLCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uKSkgewogICAgICAgICBhcnJvd1JlY3QuaW5mbGF0ZSgtcmVwbGFjZW1lbnRBcnJvd0NpcmNs
ZVBhZGRpbmcpOwogCi0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMS4w
KTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCks
IHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbEVsbGlwc2UoYXJy
b3dSZWN0KTsKKyAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMCk7Cisg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKHJlcGxhY2VtZW50VGV4dENvbG9yKCksIHN0eWxl
KCkuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgY29udGV4dC5maWxsRWxsaXBzZShhcnJvd1JlY3Qp
OwogCi0gICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDbGVh
cik7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNsZWFy
KTsKICAgICAgICAgZHJhd1JlcGxhY2VtZW50QXJyb3coY29udGV4dCwgYXJyb3dSZWN0KTsKLSAg
ICAgICAgY29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAgICAgY29udGV4dC5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggZDVmZmY5MjAzMjM1NDE4NDgyNWIxMjA0ODYx
ZDZhNjQyZTY1ZDA3ZS4uMDk1MmZkYTM0Yjg4Mjg5MTRjMzlmYWM0YjI4OTk0M2JiMjA0ODk3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBSZW5kZXJGaWVsZHNldDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKICAgICAgICAgcGFpbnRSZWN0LnNl
dFgocGFpbnRSZWN0LngoKSArIHhPZmYpOwogICAgIH0KIAotICAgIGlmICghYm94U2hhZG93U2hv
dWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKHBhaW50UmVjdC5sb2NhdGlvbigpLCBkZXRlcm1pbmVC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQpKSkKKyAgICBpZiAoIWJv
eFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChwYWludFJlY3QubG9jYXRpb24oKSwg
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KCkpKSkK
ICAgICAgICAgcGFpbnRCb3hTaGFkb3cocGFpbnRJbmZvLCBwYWludFJlY3QsIHN0eWxlKCksIE5v
cm1hbCk7CiAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLmJhY2tncm91
bmRMYXllcnMoKSwgcGFpbnRSZWN0KTsKICAgICBwYWludEJveFNoYWRvdyhwYWludEluZm8sIHBh
aW50UmVjdCwgc3R5bGUoKSwgSW5zZXQpOwpAQCAtMTY4LDggKzE2OCw4IEBAIHZvaWQgUmVuZGVy
RmllbGRzZXQ6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBDcmVhdGUgYSBjbGlw
cGluZyByZWdpb24gYXJvdW5kIHRoZSBsZWdlbmQgYW5kIHBhaW50IHRoZSBib3JkZXIgYXMgbm9y
bWFsCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmdyYXBoaWNz
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihn
cmFwaGljc0NvbnRleHQpOwogCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gd29yayB3aXRoICJy
bCIgYW5kICJidCIgYmxvY2sgZmxvdyBkaXJlY3Rpb25zLiAgSW4gdGhvc2UKICAgICAvLyBjYXNl
cyB0aGUgbGVnZW5kIGlzIGVtYmVkZGVkIGluIHRoZSByaWdodCBhbmQgYm90dG9tIGJvcmRlcnMg
cmVzcGVjdGl2ZWx5LgpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUmVuZGVyRmllbGRzZXQ6OnBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
CiAgICAgICAgIGNsaXBSZWN0LnNldFdpZHRoKHN0ZDo6bWF4PExheW91dFVuaXQ+KHN0eWxlKCku
Ym9yZGVyTGVmdFdpZHRoKCksIGxlZ2VuZC0+d2lkdGgoKSkpOwogICAgICAgICBjbGlwUmVjdC5z
ZXRIZWlnaHQobGVnZW5kLT5oZWlnaHQoKSk7CiAgICAgfQotICAgIGdyYXBoaWNzQ29udGV4dC0+
Y2xpcE91dChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBncmFwaGljc0NvbnRleHQuY2xpcE91dChzbmFwUmVjdFRv
RGV2aWNlUGl4ZWxzKGNsaXBSZWN0LCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpKTsK
IAogICAgIHBhaW50Qm9yZGVyKHBhaW50SW5mbywgcGFpbnRSZWN0LCBzdHlsZSgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCmluZGV4IGM3YWM2NzQ2YTI3NWE5OGVjODZkMDk5OGU2NzZkNmI1YWY1MWFjY2EuLjY0ZWNh
Y2IwNmVjZWU5MzBmMjVjNjY2YjE0OWVkODdlZTU2ZDNhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMTIwLDE0
ICsxMjAsMTQgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW4KICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIC8vIFB1c2ggYSBjbGlwLgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQsIGZhbHNlKTsKKyAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSwgZmFsc2UpOwogICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VDaGlsZEJsb2NrQmFja2dyb3VuZHMpIHsKICAgICAgICAgSW50UmVj
dCBjbGlwUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoTGF5b3V0UmVjdChwYWludE9mZnNldC54KCkg
KyBib3JkZXJMZWZ0KCksIHBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpLCBo
ZWlnaHQoKSAtIGJvcmRlckJvdHRvbSgpIC0gYm9yZGVyVG9wKCkgKyBidXR0b25TaGFkb3dIZWln
aHQpKTsKICAgICAgICAgaWYgKGNsaXBSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBS
ZWN0KTsKICAgICB9CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKSB7CkBAIC0xNjMsMTAgKzE2MywxMCBAQCB2b2lkIFJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjpwYWludE9iamVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbgog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0WSA9IGJhc2VsaW5lUG9zaXRpb24oQWxwaGFi
ZXRpY0Jhc2VsaW5lLCB0cnVlLCBIb3Jpem9udGFsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKHN0eWxlKCku
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgICAgIAogICAgICAgICAvLyBEcmF3IHRoZSBmaWxlbmFtZQotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+ZHJhd0JpZGlUZXh0KGZvbnQsIHRleHRSdW4sIEludFBvaW50KHJv
dW5kVG9JbnQodGV4dFgpLCByb3VuZFRvSW50KHRleHRZKSkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdCaWRpVGV4dChmb250LCB0ZXh0UnVuLCBJbnRQb2ludChyb3VuZFRvSW50
KHRleHRYKSwgcm91bmRUb0ludCh0ZXh0WSkpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpbnB1
dEVsZW1lbnQoKS5pY29uKCkpIHsKICAgICAgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0aGUg
aWNvbiBzaG91bGQgYmUgcGxhY2VkCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW4KICAgICAgICAgICAgIH0KICNlbHNlCiAgICAgICAgICAgICAvLyBEcmF3IHRoZSBm
aWxlIGljb24KLSAgICAgICAgICAgIGlucHV0RWxlbWVudCgpLmljb24oKS0+cGFpbnQoKnBhaW50
SW5mby5jb250ZXh0LCBJbnRSZWN0KHJvdW5kVG9JbnQoaWNvblgpLCByb3VuZFRvSW50KGljb25Z
KSwgaWNvbldpZHRoLCBpY29uSGVpZ2h0KSk7CisgICAgICAgICAgICBpbnB1dEVsZW1lbnQoKS5p
Y29uKCktPnBhaW50KHBhaW50SW5mby5jb250ZXh0KCksIEludFJlY3Qocm91bmRUb0ludChpY29u
WCksIHJvdW5kVG9JbnQoaWNvblkpLCBpY29uV2lkdGgsIGljb25IZWlnaHQpKTsKICNlbmRpZgog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNl
dC5jcHAKaW5kZXggMzMzMTc3NmFjNDNjODRiODg0OGIzMmM0MjNlNzRlOWU3MWZkYzYwNC4uMmY4
MmRjYjE0YjM5NDdjODNjNjg0OTk3NzRlNmQ4ZDIyZmE4MGE2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCkBAIC05MCwxNSArOTAsMTUgQEAgdm9pZCBS
ZW5kZXJGcmFtZVNldDo6cGFpbnRDb2x1bW5Cb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEludFJlY3QKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0aGluZyBj
bGV2ZXIgd2hlbiBib3JkZXJzIGZyb20gZGlzdGluY3QgZnJhbWVzZXRzIG1lZXQgYXQgYSBqb2lu
LgogICAgIAogICAgIC8vIEZpbGwgZmlyc3QuCi0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKTsKICAgICBDb2xvclNwYWNlIGNvbG9yU3BhY2UgPSBzdHlsZSgpLmNv
bG9yU3BhY2UoKTsKLSAgICBjb250ZXh0LT5maWxsUmVjdChib3JkZXJSZWN0LCBmcmFtZVNldEVs
ZW1lbnQoKS5oYXNCb3JkZXJDb2xvcigpID8gc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IpIDogYm9yZGVyRmlsbENvbG9yKCksIGNvbG9yU3Bh
Y2UpOworICAgIGNvbnRleHQuZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVtZW50KCku
aGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNlKTsKICAg
ICAKICAgICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3Vn
aCByb29tIHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0
aGUgZmlsbCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3Qud2lkdGgo
KSA+PSAzKSB7Ci0gICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEludFJlY3QoYm9yZGVyUmVjdC5s
b2NhdGlvbigpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCks
IGNvbG9yU3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50
KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9yZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdo
dCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4
dC5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRpb24oKSwgSW50U2l6ZSgxLCBoZWln
aHQoKSkpLCBib3JkZXJTdGFydEVkZ2VDb2xvcigpLCBjb2xvclNwYWNlKTsKKyAgICAgICAgY29u
dGV4dC5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRlclJlY3QubWF4WCgpIC0gMSwgYm9y
ZGVyUmVjdC55KCkpLCBJbnRTaXplKDEsIGhlaWdodCgpKSksIGJvcmRlckVuZEVkZ2VDb2xvcigp
LCBjb2xvclNwYWNlKTsKICAgICB9CiB9CiAKQEAgLTExMCwxNSArMTEwLDE1IEBAIHZvaWQgUmVu
ZGVyRnJhbWVTZXQ6OnBhaW50Um93Qm9yZGVyKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBJbnRSZWN0JiBiCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBzb21ldGhpbmcgY2xl
dmVyIHdoZW4gYm9yZGVycyBmcm9tIGRpc3RpbmN0IGZyYW1lc2V0cyBtZWV0IGF0IGEgam9pbi4K
ICAgICAKICAgICAvLyBGaWxsIGZpcnN0LgotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9
IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50
SW5mby5jb250ZXh0KCk7CiAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3R5bGUoKS5jb2xv
clNwYWNlKCk7Ci0gICAgY29udGV4dC0+ZmlsbFJlY3QoYm9yZGVyUmVjdCwgZnJhbWVTZXRFbGVt
ZW50KCkuaGFzQm9yZGVyQ29sb3IoKSA/IHN0eWxlKCkudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yKSA6IGJvcmRlckZpbGxDb2xvcigpLCBjb2xvclNwYWNl
KTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGJvcmRlclJlY3QsIGZyYW1lU2V0RWxlbWVudCgpLmhh
c0JvcmRlckNvbG9yKCkgPyBzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvcikgOiBib3JkZXJGaWxsQ29sb3IoKSwgY29sb3JTcGFjZSk7CiAKICAg
ICAvLyBOb3cgc3Ryb2tlIHRoZSBlZGdlcyBidXQgb25seSBpZiB3ZSBoYXZlIGVub3VnaCByb29t
IHRvIHBhaW50IGJvdGggZWRnZXMgd2l0aCBhIGxpdHRsZQogICAgIC8vIGJpdCBvZiB0aGUgZmls
bCBjb2xvciBzaG93aW5nIHRocm91Z2guCiAgICAgaWYgKGJvcmRlclJlY3QuaGVpZ2h0KCkgPj0g
MykgewotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KGJvcmRlclJlY3QubG9jYXRp
b24oKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlclN0YXJ0RWRnZUNvbG9yKCksIGNvbG9y
U3BhY2UpOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChJbnRSZWN0KEludFBvaW50KGJvcmRl
clJlY3QueCgpLCBib3JkZXJSZWN0Lm1heFkoKSAtIDEpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwg
Ym9yZGVyRW5kRWRnZUNvbG9yKCksIGNvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0LmZpbGxS
ZWN0KEludFJlY3QoYm9yZGVyUmVjdC5sb2NhdGlvbigpLCBJbnRTaXplKHdpZHRoKCksIDEpKSwg
Ym9yZGVyU3RhcnRFZGdlQ29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQuZmls
bFJlY3QoSW50UmVjdChJbnRQb2ludChib3JkZXJSZWN0LngoKSwgYm9yZGVyUmVjdC5tYXhZKCkg
LSAxKSwgSW50U2l6ZSh3aWR0aCgpLCAxKSksIGJvcmRlckVuZEVkZ2VDb2xvcigpLCBjb2xvclNw
YWNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1M
Q2FudmFzLmNwcAppbmRleCA1YTY1MGFhYzlkZGI0OTc3N2I2M2YzYmQ4ODAzZjA2ZTVlYzZiYzE2
Li5jNjczZDgwZWFkOTgzNjQ3YWZlYjkzMWY0M2Q3NGQ0ZDBmZTViN2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IGJvb2wgUmVuZGVySFRNTENhbnZhczo6cmVxdWlyZXNMYXllcigpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0OworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBh
aW50SW5mby5jb250ZXh0KCk7CiAKICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0ID0gdGhp
cy0+Y29udGVudEJveFJlY3QoKTsKICAgICBjb250ZW50Qm94UmVjdC5tb3ZlQnkocGFpbnRPZmZz
ZXQpOwpAQCAtNzUsOSArNzUsOSBAQCB2b2lkIFJlbmRlckhUTUxDYW52YXM6OnBhaW50UmVwbGFj
ZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYQogCiAgICAgLy8g
Tm90IGFsbG93ZWQgdG8gb3ZlcmZsb3cgdGhlIGNvbnRlbnQgYm94LgogICAgIGJvb2wgY2xpcCA9
ICFjb250ZW50Qm94UmVjdC5jb250YWlucyhyZXBsYWNlZENvbnRlbnRSZWN0KTsKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBjbGlw
KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNv
bnRleHQoKSwgY2xpcCk7CiAgICAgaWYgKGNsaXApCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKHNuYXBwZWRJbnRSZWN0KGNvbnRlbnRCb3hSZWN0KSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcChzbmFwcGVkSW50UmVjdChjb250ZW50Qm94UmVjdCkpOwogCiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkgewogICAgICAgICBpZiAocGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggMjk4NGQ1N2NhYjdmMzA3ZDk5ZjhmZTAwMDYyNzE3MTA2MjEx
MDNiZC4uNjlhZDIxNDhmYTc5ZGVhYzZhMjkyZDI3OGMxMzU2ZmJmYTg1ZDI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICBMYXlvdXRVbml0IGxlZnRQYWQgPSBwYWRkaW5nTGVm
dCgpOwogICAgIExheW91dFVuaXQgdG9wUGFkID0gcGFkZGluZ1RvcCgpOwogCi0gICAgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAogICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZSgpLnBhZ2UoKTsKQEAgLTM5MSwxMCArMzkxLDEwIEBAIHZvaWQgUmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gTGF5b3V0VW5p
dCgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgICAgICAgICAvLyBEcmF3IGFuIG91dGxp
bmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgotICAgICAgICAgICAgY29udGV4dC0+
c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ry
b2tlQ29sb3IoQ29sb3I6OmxpZ2h0R3JheSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgICAg
ICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1JlY3Qoc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0LngoKSArIGxlZnRCb3JkZXIgKyBsZWZ0
UGFkLCBwYWludE9mZnNldC55KCkgKyB0b3BCb3JkZXIgKyB0b3BQYWQsIGNXaWR0aCwgY0hlaWdo
dCksIGRldmljZVNjYWxlRmFjdG9yKSwgYm9yZGVyV2lkdGgpOworICAgICAgICAgICAgY29udGV4
dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUNvbG9yKENvbG9yOjpsaWdodEdyYXksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgc3R5bGUoKS5j
b2xvclNwYWNlKCkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3UmVjdChzbmFwUmVjdFRvRGV2
aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQueCgpICsgbGVmdEJvcmRlciArIGxlZnRQ
YWQsIHBhaW50T2Zmc2V0LnkoKSArIHRvcEJvcmRlciArIHRvcFBhZCwgY1dpZHRoLCBjSGVpZ2h0
KSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBib3JkZXJXaWR0aCk7CiAKICAgICAgICAgICAgIGJvb2wg
ZXJyb3JQaWN0dXJlRHJhd24gPSBmYWxzZTsKICAgICAgICAgICAgIExheW91dFNpemUgaW1hZ2VP
ZmZzZXQ7CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogI2lm
IEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgICAgICAgICAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1h
Z2UuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExh
eW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIHNuYXBSZWN0
VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFn
ZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIG9yaWVudGF0aW9uRGVzY3JpcHRpb24pOwogICAg
ICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFtX2FsdFRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIHRleHQgPSBkb2N1bWVudCgpLmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
bV9hbHRUZXh0KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUo
KS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihzdHlsZSgpLnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCkpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250ID0gc3R5bGUoKS5m
b250Q2FzY2FkZSgpOwogICAgICAgICAgICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IGZvbnQuZm9udE1ldHJpY3MoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGFz
Y2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwpAQCAtNDQzLDkgKzQ0Myw5IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCB0ZXh0V2lkdGggPSBm
b250LndpZHRoKHRleHRSdW4pOwogICAgICAgICAgICAgICAgIGlmIChlcnJvclBpY3R1cmVEcmF3
bikgewogICAgICAgICAgICAgICAgICAgICBpZiAodXNhYmxlV2lkdGggPj0gdGV4dFdpZHRoICYm
IGZvbnRNZXRyaWNzLmhlaWdodCgpIDw9IGltYWdlT2Zmc2V0LmhlaWdodCgpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgYWx0VGV4dE9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRl
eHRSdW4sIGFsdFRleHRPZmZzZXQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNhYmxl
V2lkdGggPj0gdGV4dFdpZHRoICYmIHVzYWJsZUhlaWdodCA+PSBmb250TWV0cmljcy5oZWlnaHQo
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9udCwgdGV4dFJ1biwg
YWx0VGV4dE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgYWx0VGV4dE9mZnNldCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKGltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYg
Y0hlaWdodCA+IDApIHsKQEAgLTQ2MSw5ICs0NjEsOSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICBMYXlvdXRSZWN0IHJlcGxhY2VkQ29udGVudFJlY3QgPSB0aGlzLT5yZXBsYWNl
ZENvbnRlbnRSZWN0KGludHJpbnNpY1NpemUoKSk7CiAgICAgICAgIHJlcGxhY2VkQ29udGVudFJl
Y3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICAgICAgYm9vbCBjbGlwID0gIWNvbnRlbnRCb3hS
ZWN0LmNvbnRhaW5zKHJlcGxhY2VkQ29udGVudFJlY3QpOwotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXApOworICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgY2xpcCk7CiAgICAgICAgIGlm
IChjbGlwKQotICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50Qm94UmVjdCk7CisgICAg
ICAgICAgICBjb250ZXh0LmNsaXAoY29udGVudEJveFJlY3QpOwogCiAgICAgICAgIHBhaW50SW50
b1JlY3QoY29udGV4dCwgc25hcFJlY3RUb0RldmljZVBpeGVscyhyZXBsYWNlZENvbnRlbnRSZWN0
LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgICAgICAKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lk
IFJlbmRlckltYWdlOjpwYWludEFyZWFFbGVtZW50Rm9jdXNSaW5nKFBhaW50SW5mbyYgcGFpbnRJ
bmZvKQogICAgIGlmIChkb2N1bWVudCgpLnByaW50aW5nKCkgfHwgIWZyYW1lKCkuc2VsZWN0aW9u
KCkuaXNGb2N1c2VkQW5kQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAo
cGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSAmJiAhcGFpbnRJbmZvLmNvbnRl
eHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCku
cGFpbnRpbmdEaXNhYmxlZCgpICYmICFwYWludEluZm8uY29udGV4dCgpLnVwZGF0aW5nQ29udHJv
bFRpbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50
ID0gZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIHZvaWQg
UmVuZGVySW1hZ2U6OnBhaW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJiBwYWludElu
Zm8pCiAgICAgaWYgKCFvdXRsaW5lV2lkdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhaW50
SW5mby5jb250ZXh0LT5kcmF3Rm9jdXNSaW5nKHBhdGgsIG91dGxpbmVXaWR0aCwKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLmRyYXdGb2N1c1JpbmcocGF0aCwgb3V0bGluZVdpZHRoLAogICAgICAg
ICBhcmVhRWxlbWVudFN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksCiAgICAgICAgIGFyZWFFbGVtZW50
U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcikpOwog
I2VuZGlmCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6YXJlYUVsZW1lbnRG
b2N1c0NoYW5nZWQoSFRNTEFyZWFFbGVtZW50KiBlbGVtZW50KQogICAgIHJlcGFpbnQoKTsKIH0K
IAotdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAg
ICAgaWYgKCFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSB8fCBpbWFnZVJlc291cmNlKCkuZXJy
b3JPY2N1cnJlZCgpIHx8IHJlY3Qud2lkdGgoKSA8PSAwIHx8IHJlY3QuaGVpZ2h0KCkgPD0gMCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBh
aW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKICAgICBvcmllbnRhdGlvbkRl
c2NyaXB0aW9uLnNldEltYWdlT3JpZW50YXRpb25FbnVtKHN0eWxlKCkuaW1hZ2VPcmllbnRhdGlv
bigpKTsKICNlbmRpZgotICAgIGNvbnRleHQtPmRyYXdJbWFnZShpbWFnZVJlc291cmNlKCkuaW1h
Z2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNl
KCksIHJlY3QsCisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2VSZXNvdXJjZSgpLmltYWdlKHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBy
ZWN0LAogICAgICAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlTm9ybWFsLCBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGlu
ZykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IDkwZjNl
MjZiZTQ4MTIwOWJjZmY2Zjg4NzVjMTRlZmQ4NzNiNjYzZDQuLjY3ZGVkMTc2ZDZhMzE3YjZkYmM0
ZjYxYmNmNTgxYzQzYjYxZGU1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5oCkBAIC04MSw3ICs4MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBpbWFn
ZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZs
b2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNDlkNDUyMDVjMGE5YzhiMWQ2MTQ1MDI1NjJlNTViZjBhODM0NjNjNS4uZmU4OGU3NmM4ZTEx
OWJjMjAwZDVkZTgzY2QxZWM1YTBmM2U4YmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKQEAgLTE1NjAsOCArMTU2MCw4IEBAIHZvaWQgUmVuZGVySW5saW5l
OjpwYWludE91dGxpbmUoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mCiAgICAgaWYgKGhhc091dGxpbmVBbm5vdGF0aW9uKCkgJiYgIXN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlSXNBdXRvKCkgJiYgIXRoZW1lKCkuc3VwcG9ydHNGb2N1c1Jpbmcoc3R5bGVUb1Vz
ZSkpCiAgICAgICAgIGFkZFBERlVSTFJlY3QocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAKLSAg
ICBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owot
ICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAgaWYg
KGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChzdHlsZVRvVXNlLm91dGxpbmVTdHlsZUlzQXV0bygpIHx8IHN0eWxlVG9Vc2Uub3V0
bGluZVN0eWxlKCkgPT0gQk5PTkUpCkBAIC0xNTgxLDcgKzE1ODEsNyBAQCB2b2lkIFJlbmRlcklu
bGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZgogICAgIENvbG9yIG91dGxpbmVDb2xvciA9IHN0eWxlVG9Vc2UudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yKTsKICAgICBib29sIHVzZVRyYW5z
cGFyZW5jeUxheWVyID0gb3V0bGluZUNvbG9yLmhhc0FscGhhKCk7CiAgICAgaWYgKHVzZVRyYW5z
cGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihzdGF0aWNfY2FzdDxmbG9hdD4ob3V0bGluZUNvbG9yLmFscGhhKCkpIC8gMjU1KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG91dGxpbmVDb2xvci5hbHBoYSgpKSAvIDI1NSk7CiAgICAgICAgIG91dGxpbmVD
b2xvciA9IENvbG9yKG91dGxpbmVDb2xvci5yZWQoKSwgb3V0bGluZUNvbG9yLmdyZWVuKCksIG91
dGxpbmVDb2xvci5ibHVlKCkpOwogICAgIH0KIApAQCAtMTU4OSwxMCArMTU4OSwxMCBAQCB2b2lk
IFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICBwYWludE91dGxpbmVGb3JMaW5lKGdyYXBoaWNz
Q29udGV4dCwgcGFpbnRPZmZzZXQsIHJlY3RzLmF0KGkgLSAxKSwgcmVjdHMuYXQoaSksIHJlY3Rz
LmF0KGkgKyAxKSwgb3V0bGluZUNvbG9yKTsKIAogICAgIGlmICh1c2VUcmFuc3BhcmVuY3lMYXll
cikKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAg
ICAgICBncmFwaGljc0NvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIH0KIAotdm9pZCBS
ZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwKK3ZvaWQgUmVuZGVySW5s
aW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBsYXN0bGluZSwgY29uc3QgTGF5b3V0
UmVjdCYgdGhpc2xpbmUsIGNvbnN0IExheW91dFJlY3QmIG5leHRsaW5lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29sb3Igb3V0bGluZUNvbG9yKQogewpA
QCAtMTYxNCw3ICsxNjE0LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICBJbnRSZWN0
IHBpeGVsU25hcHBlZE5leHRMaW5lID0gc25hcHBlZEludFJlY3QocGFpbnRPZmZzZXQueCgpICsg
bmV4dGxpbmUueCgpLCAwLCBuZXh0bGluZS53aWR0aCgpLCAwKTsKICAgICAKICAgICAvLyBsZWZ0
IGVkZ2UKLSAgICBkcmF3TGluZUZvckJveFNpZGUoKmdyYXBoaWNzQ29udGV4dCwKKyAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICBGbG9hdFJlY3QoRmxvYXRQ
b2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGluZVdpZHRoLAogICAgICAgICBwaXhlbFNu
YXBwZWRCb3gueSgpIC0gKGxhc3RsaW5lLmlzRW1wdHkoKSB8fCB0aGlzbGluZS54KCkgPCBsYXN0
bGluZS54KCkgfHwgKGxhc3RsaW5lLm1heFgoKSAtIDEpIDw9IHRoaXNsaW5lLngoKSA/IG91dGxp
bmVXaWR0aCA6IDApKSwKICAgICAgICAgRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpLApA
QCAtMTYyNiw3ICsxNjI2LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxp
bmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgYW50
aWFsaWFzKTsKICAgICAKICAgICAvLyByaWdodCBlZGdlCi0gICAgZHJhd0xpbmVGb3JCb3hTaWRl
KCpncmFwaGljc0NvbnRleHQsCisgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29udGV4
dCwKICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSwK
ICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIChsYXN0bGluZS5pc0VtcHR5KCkgfHwgbGFz
dGxpbmUubWF4WCgpIDwgdGhpc2xpbmUubWF4WCgpIHx8ICh0aGlzbGluZS5tYXhYKCkgLSAxKSA8
PSBsYXN0bGluZS54KCkgPyBvdXRsaW5lV2lkdGggOiAwKSksCiAgICAgICAgIEZsb2F0UG9pbnQo
cGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0aCwKQEAgLTE2MzgsNyArMTYzOCw3
IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAgIGFudGlhbGlhcyk7CiAgICAgLy8g
dXBwZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBsYXN0bGluZS54KCkpCi0gICAgICAg
IGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3TGluZUZv
ckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZsb2F0UG9p
bnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAgIHBpeGVs
U25hcHBlZEJveC55KCkgLSBvdXRsaW5lV2lkdGgpLAogICAgICAgICAgICAgRmxvYXRQb2ludChz
dGQ6Om1pbihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAobGFzdGxpbmUu
aXNFbXB0eSgpID8gMTAwMDAwMCA6IHBpeGVsU25hcHBlZExhc3RMaW5lLngoKSkpLApAQCAtMTY0
OSw3ICsxNjQ5LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFudGlh
bGlhcyk7CiAgICAgCiAgICAgaWYgKGxhc3RsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgoKSkK
LSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRy
YXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3Qo
RmxvYXRQb2ludChzdGQ6Om1heChsYXN0bGluZS5pc0VtcHR5KCkgPyAtMTAwMDAwMCA6IHBpeGVs
U25hcHBlZExhc3RMaW5lLm1heFgoKSwgcGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0
aCksCiAgICAgICAgICAgICBwaXhlbFNuYXBwZWRCb3gueSgpIC0gb3V0bGluZVdpZHRoKSwKICAg
ICAgICAgICAgIEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94Lm1heFgoKSArIG91dGxpbmVXaWR0
aCwKQEAgLTE2NTksNyArMTY1OSw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludE91dGxpbmVG
b3JMaW5lKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMCiAgICAgICAg
ICAgICBvdXRsaW5lV2lkdGgsIGFudGlhbGlhcyk7CiAKICAgICBpZiAodGhpc2xpbmUueCgpID09
IHRoaXNsaW5lLm1heFgoKSkKLSAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0Nv
bnRleHQsCisgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAg
ICAgICAgICBGbG9hdFJlY3QoRmxvYXRQb2ludChwaXhlbFNuYXBwZWRCb3gueCgpIC0gb3V0bGlu
ZVdpZHRoLAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94LnkoKSAtIG91dGxpbmVXaWR0aCks
CiAgICAgICAgICAgICBGbG9hdFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5l
V2lkdGgsCkBAIC0xNjcxLDcgKzE2NzEsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRs
aW5lRm9yTGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogCiAg
ICAgLy8gbG93ZXIgZWRnZQogICAgIGlmICh0aGlzbGluZS54KCkgPCBuZXh0bGluZS54KCkpCi0g
ICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICBkcmF3
TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRSZWN0KEZs
b2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAgICAgICAg
IHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChzdGQ6Om1p
bihwaXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLCAhbmV4dGxpbmUuaXNFbXB0
eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExpbmUueCgpICsgMSA6IDEwMDAwMDApLApAQCAtMTY4Miw3
ICsxNjgyLDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEwKICAgICAgICAgICAgIGFudGlhbGlh
cyk7CiAgICAgCiAgICAgaWYgKG5leHRsaW5lLm1heFgoKSA8IHRoaXNsaW5lLm1heFgoKSkKLSAg
ICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsCisgICAgICAgIGRyYXdM
aW5lRm9yQm94U2lkZShncmFwaGljc0NvbnRleHQsCiAgICAgICAgICAgICBGbG9hdFJlY3QoRmxv
YXRQb2ludChzdGQ6Om1heCghbmV4dGxpbmUuaXNFbXB0eSgpID8gcGl4ZWxTbmFwcGVkTmV4dExp
bmUubWF4WCgpIDogLTEwMDAwMDAsIHBpeGVsU25hcHBlZEJveC54KCkgLSBvdXRsaW5lV2lkdGgp
LAogICAgICAgICAgICAgcGl4ZWxTbmFwcGVkQm94Lm1heFkoKSksCiAgICAgICAgICAgICBGbG9h
dFBvaW50KHBpeGVsU25hcHBlZEJveC5tYXhYKCkgKyBvdXRsaW5lV2lkdGgsCkBAIC0xNjkyLDcg
KzE2OTIsNyBAQCB2b2lkIFJlbmRlcklubGluZTo6cGFpbnRPdXRsaW5lRm9yTGluZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTAogICAgICAgICAgICAgb3V0bGluZVdp
ZHRoLCBhbnRpYWxpYXMpOwogCiAgICAgaWYgKHRoaXNsaW5lLngoKSA9PSB0aGlzbGluZS5tYXhY
KCkpCi0gICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZSgqZ3JhcGhpY3NDb250ZXh0LAorICAgICAg
ICBkcmF3TGluZUZvckJveFNpZGUoZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgRmxvYXRS
ZWN0KEZsb2F0UG9pbnQocGl4ZWxTbmFwcGVkQm94LngoKSAtIG91dGxpbmVXaWR0aCwKICAgICAg
ICAgICAgIHBpeGVsU25hcHBlZEJveC5tYXhZKCkpLAogICAgICAgICAgICAgRmxvYXRQb2ludChw
aXhlbFNuYXBwZWRCb3gubWF4WCgpICsgb3V0bGluZVdpZHRoLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCmluZGV4IDkyYmNlYjViNmVlNDcyMTlkNzQ5YTU2MThjYmE4MTQ3
MzBiMjVkZTUuLjQ1MGJiMGY5OTU2ODZmMWVlZmYxM2RlNWM2ZTFkNDc3ZDBhNDg5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+IGNsb25lKCkgY29uc3Q7
CiAKLSAgICB2b2lkIHBhaW50T3V0bGluZUZvckxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBwcmV2TGluZSwgY29uc3QgTGF5b3V0UmVj
dCYgdGhpc0xpbmUsCisgICAgdm9pZCBwYWludE91dGxpbmVGb3JMaW5lKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgTGF5b3V0UmVjdCYgcHJldkxpbmUsIGNvbnN0
IExheW91dFJlY3QmIHRoaXNMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBMYXlvdXRSZWN0JiBuZXh0TGluZSwgY29uc3QgQ29sb3IpOwogICAgIFJlbmRlckJveE1vZGVs
T2JqZWN0KiBjb250aW51YXRpb25CZWZvcmUoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDdkZWRlNzFjYzRk
NDM0MTRlODNhOWY4YTcxNzU5NjI5YWI3ZGFkNzMuLjc0MzA5ZmRjMjgxZmY4MmE2MWM5NTUyMWU3
NzA2ODIyYzg1ZjRjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtMTc4Nyw5ICsxNzg3LDkgQEAgc3RhdGljIExheW91dFJlY3QgcGFpbnRpbmdFeHRlbnQo
Y29uc3QgUmVuZGVyTGF5ZXImIGN1cnJlbnRMYXllciwgY29uc3QgUmVuZGVyTGEKICAgICByZXR1
cm4gaW50ZXJzZWN0aW9uKHRyYW5zcGFyZW5jeUNsaXBCb3goY3VycmVudExheWVyLCByb290TGF5
ZXIsIFBhaW50aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCwgUm9vdE9mVHJhbnNwYXJlbmN5Q2xpcEJv
eCwgcGFpbnRCZWhhdmlvciksIHBhaW50RGlydHlSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0
eVJlY3QpCit2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVycyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8s
IGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAoY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpIHx8IChwYWludHNXaXRoVHJhbnNwYXJlbmN5KHBhaW50aW5nSW5mby5wYWlu
dEJlaGF2aW9yKSAmJiBtX3VzZWRUcmFuc3BhcmVuY3kpKQorICAgIGlmIChjb250ZXh0LnBhaW50
aW5nRGlzYWJsZWQoKSB8fCAocGFpbnRzV2l0aFRyYW5zcGFyZW5jeShwYWludGluZ0luZm8ucGFp
bnRCZWhhdmlvcikgJiYgbV91c2VkVHJhbnNwYXJlbmN5KSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yID0gdHJhbnNwYXJlbnRQYWludGluZ0FuY2VzdG9yKCk7
CkBAIC0xNzk4LDIyICsxNzk4LDIyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQCiAgICAgCiAg
ICAgaWYgKHBhaW50c1dpdGhUcmFuc3BhcmVuY3kocGFpbnRpbmdJbmZvLnBhaW50QmVoYXZpb3Ip
KSB7CiAgICAgICAgIG1fdXNlZFRyYW5zcGFyZW5jeSA9IHRydWU7Ci0gICAgICAgIGNvbnRleHQt
PnNhdmUoKTsKKyAgICAgICAgY29udGV4dC5zYXZlKCk7CiAgICAgICAgIExheW91dFJlY3QgYWRq
dXN0ZWRDbGlwUmVjdCA9IHBhaW50aW5nRXh0ZW50KCp0aGlzLCBwYWludGluZ0luZm8ucm9vdExh
eWVyLCBkaXJ0eVJlY3QsIHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yKTsKICAgICAgICAgYWRq
dXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7CiAg
ICAgICAgIEZsb2F0UmVjdCBwaXhlbFNuYXBwZWRDbGlwUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoYWRqdXN0ZWRDbGlwUmVjdCwgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpOwotICAgICAgICBjb250ZXh0LT5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsK
KyAgICAgICAgY29udGV4dC5jbGlwKHBpeGVsU25hcHBlZENsaXBSZWN0KTsKIAogI2lmIEVOQUJM
RShDU1NfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LT5jb21wb3NpdGVPcGVy
YXRpb24oKSwgYmxlbmRNb2RlKCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29udGV4dC5jb21wb3NpdGVPcGVyYXRpb24oKSwgYmxlbmRNb2RlKCkpOwogI2Vu
ZGlmCiAKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5kZXJlcigp
Lm9wYWNpdHkoKSk7CisgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihyZW5k
ZXJlcigpLm9wYWNpdHkoKSk7CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAg
ICBpZiAoaGFzQmxlbmRNb2RlKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7
CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBv
c2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOwogI2VuZGlmCiAKICNpZmRlZiBSRVZF
QUxfVFJBTlNQQVJFTkNZX0xBWUVSUwpAQCAtMzU0MSw3ICszNTQxLDcgQEAgYm9vbCBSZW5kZXJM
YXllcjo6c2hvd3NPdmVyZmxvd0NvbnRyb2xzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBh
aW50aW5nT3ZlcmxheUNvbnRyb2xzKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHdl
IGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc092ZXJmbG93Q2xpcCgp
KQpAQCAtMzYwNSw3ICszNjA1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0Nv
bnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQKICAgICBwYWlu
dFJlc2l6ZXIoY29udGV4dCwgYWRqdXN0ZWRQYWludE9mZnNldCwgZGFtYWdlUmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NF
UlQoYm94KTsKQEAgLTM2MTUsNyArMzYxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Ny
b2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhCiAg
ICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKGNv
bnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgICB1cGRhdGVTY3JvbGxDb3Ju
ZXJTdHlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzYyOCwxMCArMzYyOCwxMCBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFBvaW50JiBwYQogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcGFpbnQg
d2hpdGUgaWYgd2UgaGF2ZSBvdmVybGF5IHNjcm9sbGJhcnMsIHNpbmNlIHdlIG5lZWQKICAgICAv
LyB0byBzZWUgd2hhdCBpcyBiZWhpbmQgaXQuCiAgICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFy
cygpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJv
eC0+c3R5bGUoKS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KGFic1Jl
Y3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLmNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlc2l6ZXJDb3JuZXJSZWN0KQordm9pZCBSZW5kZXJM
YXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNvcm5lclJlY3QpCiB7CiAgICAgUmVmUHRyPEltYWdl
PiByZXNpemVDb3JuZXJJbWFnZTsKICAgICBGbG9hdFNpemUgY29ybmVyUmVzaXplclNpemU7CkBA
IC0zNjQ3LDE4ICszNjQ3LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6
ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91CiAgICAgfQogCiAg
ICAgaWYgKHJlbmRlcmVyKCkuc3R5bGUoKS5zaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xs
YmFyT25Mb2dpY2FsTGVmdCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICAgICAg
Y29udGV4dC0+dHJhbnNsYXRlKHJlc2l6ZXJDb3JuZXJSZWN0LngoKSArIGNvcm5lclJlc2l6ZXJT
aXplLndpZHRoKCksIHJlc2l6ZXJDb3JuZXJSZWN0LnkoKSArIHJlc2l6ZXJDb3JuZXJSZWN0Lmhl
aWdodCgpIC0gY29ybmVyUmVzaXplclNpemUuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoLTEuMCwgMS4wKSk7Ci0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShy
ZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKLSAgICAgICAgY29u
dGV4dC0+cmVzdG9yZSgpOworICAgICAgICBjb250ZXh0LnNhdmUoKTsKKyAgICAgICAgY29udGV4
dC50cmFuc2xhdGUocmVzaXplckNvcm5lclJlY3QueCgpICsgY29ybmVyUmVzaXplclNpemUud2lk
dGgoKSwgcmVzaXplckNvcm5lclJlY3QueSgpICsgcmVzaXplckNvcm5lclJlY3QuaGVpZ2h0KCkg
LSBjb3JuZXJSZXNpemVyU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKC0xLjAsIDEuMCkpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3Ju
ZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgY29ybmVyUmVzaXplclNpemUpKTsKKyAgICAgICAgY29udGV4dC5yZXN0
b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgRmxvYXRSZWN0IGltYWdlUmVjdCA9
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZXNpemVyQ29ybmVyUmVjdC5tYXhY
TWF4WUNvcm5lcigpIC0gY29ybmVyUmVzaXplclNpemUsIGNvcm5lclJlc2l6ZXJTaXplKSwgcmVu
ZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGNvbnRleHQtPmRy
YXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSwgaW1hZ2VSZWN0KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShyZXNpemVDb3JuZXJJ
bWFnZS5nZXQoKSwgcmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgaW1hZ2VSZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBk
YW1hZ2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCkucmVzaXplKCkg
PT0gUkVTSVpFX05PTkUpCiAgICAgICAgIHJldHVybjsKQEAgLTM2NzEsNyArMzY3MSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IExheW91dFBvaW50JiBwYWluCiAgICAgaWYgKCFhYnNSZWN0LmludGVyc2VjdHMoZGFtYWdl
UmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT51cGRhdGluZ0NvbnRy
b2xUaW50cygpKSB7CisgICAgaWYgKGNvbnRleHQudXBkYXRpbmdDb250cm9sVGludHMoKSkgewog
ICAgICAgICB1cGRhdGVSZXNpemVyU3R5bGUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTM2ODYsMTQgKzM2ODYsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICAvLyBEcmF3
IGEgZnJhbWUgYXJvdW5kIHRoZSByZXNpemVyICgxcHggZ3JleSBsaW5lKSBpZiB0aGVyZSBhcmUg
YW55IHNjcm9sbGJhcnMgcHJlc2VudC4KICAgICAvLyBDbGlwcGluZyB3aWxsIGV4Y2x1ZGUgdGhl
IHJpZ2h0IGFuZCBib3R0b20gZWRnZXMgb2YgdGhpcyBmcmFtZS4KICAgICBpZiAoIWhhc092ZXJs
YXlTY3JvbGxiYXJzKCkgJiYgKG1fdkJhciB8fCBtX2hCYXIpKSB7Ci0gICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQt
PmNsaXAoYWJzUmVjdCk7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGlwKGFic1JlY3QpOwogICAgICAgICBM
YXlvdXRSZWN0IGxhcmdlckNvcm5lciA9IGFic1JlY3Q7CiAgICAgICAgIGxhcmdlckNvcm5lci5z
ZXRTaXplKExheW91dFNpemUobGFyZ2VyQ29ybmVyLndpZHRoKCkgKyBMYXlvdXRVbml0Ojpmcm9t
UGl4ZWwoMSksIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIExheW91dFVuaXQ6OmZyb21QaXhlbCgx
KSkpOwotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcihtYWtlUkdCKDIxNywg
MjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZVRoaWNrbmVzcygxLjBmKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9y
Ojp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgICAgIGNvbnRleHQtPmRy
YXdSZWN0KHNuYXBwZWRJbnRSZWN0KGxhcmdlckNvcm5lcikpOworICAgICAgICBjb250ZXh0LnNl
dFN0cm9rZUNvbG9yKENvbG9yKG1ha2VSR0IoMjE3LCAyMTcsIDIxNykpLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKKyAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAg
ICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgICAgIGNvbnRleHQuZHJhd1JlY3Qoc25hcHBlZEludFJlY3QobGFyZ2Vy
Q29ybmVyKSk7CiAgICAgfQogfQogCkBAIC0zNzYxLDcgKzM3NjEsNyBAQCBib29sIFJlbmRlckxh
eWVyOjpzY3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdAogICAgIHJldHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsKGRpcmVjdGlvbiwg
Z3JhbnVsYXJpdHksIG11bHRpcGxpZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNv
bnN0IExheW91dFNpemUmIHN1YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIGNvbnN0IExheW91dFNpemUmIHN1
YnBpeGVsQWNjdW11bGF0aW9uLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCwgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAg
ICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwIG92ZXJsYXBUZXN0UmVxdWVzdHM7CiAKQEAgLTM3NzIs
NyArMzc3Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwKICAgICAgICAgd2lkZ2V0LT5zZXRP
dmVybGFwVGVzdFJlc3VsdChmYWxzZSk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3Zl
cmxheVNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0
JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCog
c3VidHJlZVBhaW50Um9vdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmxheVNjcm9sbGJh
cnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
LCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50
Um9vdCkKIHsKICAgICBpZiAoIW1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKQogICAg
ICAgICByZXR1cm47CkBAIC0zNzk3LDE4ICszNzk3LDE4IEBAIHN0YXRpYyBib29sIGluQ29udGFp
bmluZ0Jsb2NrQ2hhaW4oUmVuZGVyTGF5ZXIqIHN0YXJ0TGF5ZXIsIFJlbmRlckxheWVyKiBlbmRM
YXllCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0
KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgQ2xpcFJlY3QmIGNsaXBSZWN0LCBCb3JkZXJSYWRpdXNDbGlwcGluZ1J1
bGUgcnVsZSkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGlw
UmVjdCYgY2xpcFJlY3QsIEJvcmRlclJhZGl1c0NsaXBwaW5nUnVsZSBydWxlKQogewogICAgIGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCk7CiAKICAgICBib29sIG5lZWRzQ2xpcHBpbmcgPSBjbGlwUmVjdC5yZWN0KCkgIT0g
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0OwogICAgIGlmIChuZWVkc0NsaXBwaW5nIHx8IGNs
aXBSZWN0LmFmZmVjdGVkQnlSYWRpdXMoKSkKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOworICAg
ICAgICBjb250ZXh0LnNhdmUoKTsKIAogICAgIGlmIChuZWVkc0NsaXBwaW5nKSB7CiAgICAgICAg
IExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IGNsaXBSZWN0LnJlY3QoKTsKICAgICAgICAg
YWRqdXN0ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7
Ci0gICAgICAgIGNvbnRleHQtPmNsaXAoc25hcFJlY3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENs
aXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAgICBjb250ZXh0LmNsaXAoc25hcFJl
Y3RUb0RldmljZVBpeGVscyhhZGp1c3RlZENsaXBSZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwog
ICAgIH0KIAogICAgIGlmIChjbGlwUmVjdC5hZmZlY3RlZEJ5UmFkaXVzKCkpIHsKQEAgLTM4MTks
NyArMzgxOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mIHBhaW50aW5nSW5mbywgR3JhcGhpY3NDb250CiAgICAgICAgICAgICBpZiAobGF5
ZXItPnJlbmRlcmVyKCkuaGFzT3ZlcmZsb3dDbGlwKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkuc3R5
bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSAmJiBpbkNvbnRhaW5pbmdCbG9ja0NoYWluKHRoaXMsIGxh
eWVyKSkgewogICAgICAgICAgICAgICAgIExheW91dFJlY3QgYWRqdXN0ZWRDbGlwUmVjdCA9IExh
eW91dFJlY3QodG9MYXlvdXRQb2ludChsYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yKHBhaW50aW5n
SW5mby5yb290TGF5ZXIpKSwgbGF5ZXItPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgYWRqdXN0
ZWRDbGlwUmVjdC5tb3ZlKHBhaW50aW5nSW5mby5zdWJwaXhlbEFjY3VtdWxhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0
eWxlKCkuZ2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGFkanVzdGVkQ2xpcFJlY3QpLnBpeGVsU25h
cHBlZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmNsaXBSb3VuZGVkUmVjdChsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgp
LmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihhZGp1c3RlZENsaXBSZWN0KS5waXhlbFNuYXBwZWRS
b3VuZGVkUmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsYXllciA9PSBwYWludGluZ0luZm8ucm9v
dExheWVyKQpAQCAtMzgyOCwxMCArMzgyOCwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9S
ZWN0KGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIEdyYXBoaWNzQ29udAog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xpcFJl
Y3QmIGNsaXBSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xp
cFJlY3QmIGNsaXBSZWN0KQogewogICAgIGlmIChjbGlwUmVjdC5yZWN0KCkgIT0gcGFpbnREaXJ0
eVJlY3QgfHwgY2xpcFJlY3QuYWZmZWN0ZWRCeVJhZGl1cygpKQotICAgICAgICBjb250ZXh0LT5y
ZXN0b3JlKCk7CisgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCiBzdGF0aWMgdm9pZCBw
ZXJmb3JtT3ZlcmxhcFRlc3RzKE92ZXJsYXBUZXN0UmVxdWVzdE1hcCYgb3ZlcmxhcFRlc3RSZXF1
ZXN0cywgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyKQpAQCAtMzg3NSwxMiArMzg3NSwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFpbnRGb3JG
aXhlZFJvb3RCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTAogICAg
IHJldHVybiBsYXllci0+cmVuZGVyZXIoKS5pc1Jvb3QoKSAmJiAocGFpbnRGbGFncyAmIFJlbmRl
ckxheWVyOjpQYWludExheWVyUGFpbnRpbmdSb290QmFja2dyb3VuZE9ubHkpOwogfQogCi12b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50Rmxh
Z3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdz
IHBhaW50RmxhZ3MpCiB7CiAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIC8vIFRo
ZSB1cGRhdGluZ0NvbnRyb2xUaW50cygpIHBhaW50aW5nIHBhc3MgZ29lcyB0aHJvdWdoIGNvbXBv
c2l0aW5nIGxheWVycywKICAgICAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgd2Ug
ZG9uJ3QgY2FjaGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSB3cm9uZyByb290IGluIHRo
aXMgY2FzZS4KLSAgICAgICAgaWYgKGNvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgfHwg
KHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3Np
dGluZ0xheWVycykpCisgICAgICAgIGlmIChjb250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkg
fHwgKHBhaW50aW5nSW5mby5wYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21w
b3NpdGluZ0xheWVycykpCiAgICAgICAgICAgICBwYWludEZsYWdzIHw9IFBhaW50TGF5ZXJUZW1w
b3JhcnlDbGlwUmVjdHM7CiAgICAgICAgIGVsc2UgaWYgKCFiYWNraW5nKCktPnBhaW50c0ludG9X
aW5kb3coKQogICAgICAgICAgICAgJiYgIWJhY2tpbmcoKS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRB
bmNlc3RvcigpCkBAIC0zOTY0LDcgKzM5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExh
eWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mCiAg
ICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCBwYWludGluZ0luZm8s
IHBhaW50RmxhZ3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNB
bmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJl
bmRlckxheWVyOjpwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRM
YXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNTRVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIo
KSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKSk7CiAKQEAgLTM5ODIsOSArMzk4
Miw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgcGFpbnRMYXllckNvbnRlbnRzKGNv
bnRleHQsIHBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKIH0KIAotYm9vbCBSZW5kZXJM
YXllcjo6c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBib29sJiBkaWRRdWFudGl6ZUZvbnRzKQorYm9vbCBSZW5kZXJMYXllcjo6c2V0dXBGb250
U3VicGl4ZWxRdWFudGl6YXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKQogewotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisg
ICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBib29sIHNjcm9sbGluZ09uTWFpblRocmVhZCA9IHRydWU7CkBAIC00MDAyLDggKzQw
MDIsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGJvb2wmCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSByZW5k
ZXJlcigpLmZyYW1lKCkucGFnZSgpKQogICAgICAgICBpc1pvb21pbmcgPSAhcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkuaGFzU3RhYmxlUGFnZVNjYWxlRmFjdG9yKCk7CiAgICAgaWYgKHNjcm9sbGlu
Z09uTWFpblRocmVhZCB8fCBjb250ZW50c1Njcm9sbEJ5UGFpbnRpbmcgfHwgaXNab29taW5nKSB7
Ci0gICAgICAgIGRpZFF1YW50aXplRm9udHMgPSBjb250ZXh0LT5zaG91bGRTdWJwaXhlbFF1YW50
aXplRm9udHMoKTsKLSAgICAgICAgY29udGV4dC0+c2V0U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzKGZhbHNlKTsKKyAgICAgICAgZGlkUXVhbnRpemVGb250cyA9IGNvbnRleHQuc2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzKCk7CisgICAgICAgIGNvbnRleHQuc2V0U2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzKGZhbHNlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTQwNzIsOSArNDA3Miw5IEBAIFBhdGggUmVuZGVyTGF5ZXI6OmNvbXB1
dGVDbGlwUGF0aChjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYK
ICAgICByZXR1cm4gUGF0aCgpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRo
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50
aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJv
b3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCitib29s
IFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJl
bGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7Ci0gICAgaWYgKCFyZW5kZXJlcigpLmhhc0NsaXBQYXRo
KCkgfHwgY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmICghcmVuZGVyZXIoKS5o
YXNDbGlwUGF0aCgpIHx8IGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKSB7CkBAIC00
MDg4LDggKzQwODgsOCBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgICAgICBXaW5kUnVs
ZSB3aW5kUnVsZTsKICAgICAgICAgTGF5b3V0U2l6ZSBwYWludGluZ09mZnNldEZyb21Sb290ID0g
TGF5b3V0U2l6ZShzbmFwU2l6ZVRvRGV2aWNlUGl4ZWwob2Zmc2V0RnJvbVJvb3QgKyBwYWludGlu
Z0luZm8uc3VicGl4ZWxBY2N1bXVsYXRpb24sIExheW91dFBvaW50KCksIHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7CiAgICAgICAgIFBhdGggcGF0aCA9IGNvbXB1
dGVDbGlwUGF0aChwYWludGluZ09mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMsIHdp
bmRSdWxlKTsKLSAgICAgICAgY29udGV4dC0+c2F2ZSgpOwotICAgICAgICBjb250ZXh0LT5jbGlw
UGF0aChwYXRoLCB3aW5kUnVsZSk7CisgICAgICAgIGNvbnRleHQuc2F2ZSgpOworICAgICAgICBj
b250ZXh0LmNsaXBQYXRoKHBhdGgsIHdpbmRSdWxlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCkBAIC00MDk4LDcgKzQwOTgsNyBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAg
ICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmdldEVsZW1lbnRC
eUlkKHJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uLT5mcmFnbWVudCgpKTsKICAgICAgICAgaWYg
KGVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Y2xpcFBhdGhUYWcpICYm
IGVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCB1c2UgYSBzYWZlciBjYXN0IHN1Y2ggYXMgdG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcigp
LgotICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC0+c2F2ZSgp
IGFuZCByZXR1cm4gdHJ1ZSBzbyB3ZSByZXN0b3JlIHRoZSBjb250ZXh0PworICAgICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB0aGlzIGRvIGEgY29udGV4dC5zYXZlKCkgYW5kIHJldHVybiB0cnVl
IHNvIHdlIHJlc3RvcmUgdGhlIGNvbnRleHQ/CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIqPihlbGVtZW50LT5yZW5kZXJlcigpKS0+YXBwbHlDbGlwcGlu
Z1RvQ29udGV4dChyZW5kZXJlcigpLCByb290UmVsYXRpdmVCb3VuZHMsIHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCwgY29udGV4dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MTA2LDkgKzQx
MDYsOSBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBSZW5kZXJMYXllcjo6aGFzRmlsdGVyVGhhdElzUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXI6Omhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
UGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpIGNvbnN0CiB7Ci0gICAgaWYgKGNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAoY29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChwYWludEZsYWdzICYgUGFpbnRMYXllclBh
aW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpCkBAIC00MTI2LDcgKzQxMjYsNyBAQCBib29sIFJlbmRl
ckxheWVyOjpoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFBhaW50TGF5ZXJGbAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Rmls
dGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWlu
dExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3Qs
IExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJvdW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRz
Q29tcHV0ZWQpCitzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IFJl
bmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXllclBh
aW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3QmIHJvb3RSZWxhdGl2ZUJv
dW5kcywgYm9vbCYgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpCiB7CiAgICAgaWYgKCFoYXNG
aWx0ZXJUaGF0SXNQYWludGluZyhjb250ZXh0LCBwYWludEZsYWdzKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC00MTYzLDcgKzQxNjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVyRWZm
ZWN0UmVuZGVyZXJIZWxwZXI+IFJlbmRlckxheWVyOjpzZXR1cEZpbHRlcnMoR3JhcGhpY3NDbwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyOjph
cHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZpbHRlclBhaW50ZXIsIEdy
YXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCitHcmFwaGljc0NvbnRleHQm
IFJlbmRlckxheWVyOjphcHBseUZpbHRlcnMoRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqIGZp
bHRlclBhaW50ZXIsIEdyYXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50
aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMpCiB7
CiAgICAgQVNTRVJUKGZpbHRlclBhaW50ZXItPmhhc1N0YXJ0ZWRGaWx0ZXJFZmZlY3QoKSk7CiAg
ICAgLy8gQXBwbHkgdGhlIGNvcnJlY3QgY2xpcHBpbmcgKGllLiBvdmVyZmxvdzogaGlkZGVuKS4K
QEAgLTQxODUsNyArNDE4NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlWkluZGV4KFJl
bmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIqIHNlY29uZCkKIC8vIFRoZXNlIGxheWVycyBz
aG91bGQgbm90IGJlIHBhaW50ZWQgaW4gYSBzaW1pbGFyIHdheSBhcyB0aGUgb3RoZXIgZWxlbWVu
dHMgY29sbGVjdGVkIGluCiAvLyBuYW1lZCBmbG93cyAtIHJlZ2lvbnMgLT4gbmFtZWQgZmxvd3Mg
LSBzaW5jZSB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIGNsaXBwZWQgdG8gdGhlCiAvLyByZWdp
b25zIHZpZXdwb3J0Lgotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRG
bG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBw
YWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRGaXhlZExheWVyc0luTmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBw
YWludEZsYWdzKQogewogICAgIGlmICghaXNSb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNDIwNiw3ICs0MjA2LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGaXhlZExheWVyc0lu
TmFtZWRGbG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEwKICAgICAgICAgZml4
ZWRMYXllci0+cGFpbnRMYXllcihjb250ZXh0LCBwYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExh
eWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0lu
Zm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7CiAgICAgQVNT
RVJUKGlzU2VsZlBhaW50aW5nTGF5ZXIoKSB8fCBoYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRh
bnQoKSk7CiAKQEAgLTQyNDgsMjQgKzQyNDgsMjUgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRM
YXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZGlzYWJsZSBzdWJwaXhlbCBxdWFu
dGl6YXRpb24gZm9yIG92ZXJmbG93IGNsaXBzIG9yIHN1YmZyYW1lcyBvbmNlIHdlIHNjcm9sbCB0
aG9zZQogICAgIC8vIHRoaW5ncyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4KICAgICBib29sIGRp
ZFF1YW50aXplRm9udHMgPSB0cnVlOwotICAgIGJvb2wgbmVlZFRvQWRqdXN0U3VicGl4ZWxRdWFu
dGl6YXRpb24gPSBzZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LCBkaWRRdWFu
dGl6ZUZvbnRzKTsKKyAgICBib29sIG5lZWRUb0FkanVzdFN1YnBpeGVsUXVhbnRpemF0aW9uID0g
c2V0dXBGb250U3VicGl4ZWxRdWFudGl6YXRpb24ob3JpZ2luYWxDb250ZXh0LCBkaWRRdWFudGl6
ZUZvbnRzKTsKIAogICAgIC8vIEFwcGx5IGNsaXAtcGF0aCB0byBjb250ZXh0LgogICAgIExheW91
dFNpemUgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCA9IG9mZnNldEZyb21Sb290OwotICAgIGlm
IChyZW5kZXJlcigpLmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKSAmJiAocmVuZGVyZXIoKS5o
YXNDbGlwUGF0aCgpIHx8IGhhc0ZpbHRlclRoYXRJc1BhaW50aW5nKGNvbnRleHQsIHBhaW50Rmxh
Z3MpKSkKKyAgICBpZiAocmVuZGVyZXIoKS5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgJiYg
KHJlbmRlcmVyKCkuaGFzQ2xpcFBhdGgoKSB8fCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhvcmln
aW5hbENvbnRleHQsIHBhaW50RmxhZ3MpKSkKICAgICAgICAgY29sdW1uQXdhcmVPZmZzZXRGcm9t
Um9vdCA9IHRvTGF5b3V0U2l6ZShjb252ZXJ0VG9MYXllckNvb3JkcyhwYWludGluZ0luZm8ucm9v
dExheWVyLCBMYXlvdXRQb2ludCgpLCBBZGp1c3RGb3JDb2x1bW5zKSk7CiAKICAgICBib29sIGhh
c0NsaXBQYXRoID0gZmFsc2U7CiAgICAgaWYgKHNob3VsZEFwcGx5Q2xpcFBhdGgocGFpbnRpbmdJ
bmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpCi0gICAgICAgIGhhc0NsaXBQYXRo
ID0gc2V0dXBDbGlwUGF0aChjb250ZXh0LCBwYWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0
RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
OworICAgICAgICBoYXNDbGlwUGF0aCA9IHNldHVwQ2xpcFBhdGgob3JpZ2luYWxDb250ZXh0LCBw
YWludGluZ0luZm8sIGNvbHVtbkF3YXJlT2Zmc2V0RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5k
cywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQpOwogCiAgICAgTGF5ZXJQYWludGluZ0luZm8g
bG9jYWxQYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCog
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ID0gY29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXI+IGZpbHRlclBhaW50ZXIgPSBzZXR1cEZpbHRlcnMo
Y29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBhaW50RmxhZ3MsIGNvbHVtbkF3YXJlT2Zmc2V0
RnJvbVJvb3QsIHJvb3RSZWxhdGl2ZUJvdW5kcywgcm9vdFJlbGF0aXZlQm91bmRzQ29tcHV0ZWQp
OworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CisgICAg
R3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPSBvcmlnaW5hbENvbnRl
eHQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBmaWx0
ZXJQYWludGVyID0gc2V0dXBGaWx0ZXJzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgcGFp
bnRGbGFncywgY29sdW1uQXdhcmVPZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzLCBy
b290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAgICAgaWYgKGZpbHRlclBhaW50ZXIpIHsKICAg
ICAgICAgY29udGV4dCA9IGZpbHRlclBhaW50ZXItPmZpbHRlckNvbnRleHQoKTsKLSAgICAgICAg
aWYgKGNvbnRleHQgIT0gdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0ICYmIGhhdmVUcmFuc3BhcmVu
Y3kpIHsKKyAgICAgICAgaWYgKGNvbnRleHQgIT0gJnRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCAm
JiBoYXZlVHJhbnNwYXJlbmN5KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgZmlsdGVy
IGFuZCB0cmFuc3BhcmVuY3ksIHdlIGhhdmUgdG8gZWFnZXJseSBzdGFydCBhIHRyYW5zcGFyZW5j
eSBsYXllciBoZXJlLCByYXRoZXIgdGhhbiByaXNrIGEgY2hpbGQgbGF5ZXIgbGF6aWx5IHN0YXJ0
cyBvbmUgd2l0aCB0aGUgd3JvbmcgY29udGV4dC4KICAgICAgICAgICAgIGJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXJzKHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHBh
aW50aW5nSW5mby5wYWludERpcnR5UmVjdCk7CiAgICAgICAgIH0KQEAgLTQzMTEsNjMgKzQzMTIs
NjMgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGkKICAgICBpZiAoaXNQYWludGluZ0NvbXBvc2l0
ZWRCYWNrZ3JvdW5kKSB7CiAgICAgICAgIC8vIFBhaW50IG9ubHkgdGhlIGJhY2tncm91bmRzIGZv
ciBhbGwgb2YgdGhlIGZyYWdtZW50cyBvZiB0aGUgbGF5ZXIuCiAgICAgICAgIGlmIChzaG91bGRQ
YWludENvbnRlbnQgJiYgIXNlbGVjdGlvbk9ubHkpCi0gICAgICAgICAgICBwYWludEJhY2tncm91
bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIHRyYW5zcGFyZW5jeUxheWVy
Q29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAor
ICAgICAgICAgICAgcGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCAq
Y29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LCBwYWludGluZ0luZm8ucGFpbnREaXJ0
eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAgICAgICAgICAgbG9jYWxQYWludGluZ0lu
Zm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgfQog
CiAgICAgLy8gTm93IHdhbGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggbmVnYXRp
dmUgei1pbmRpY2VzLgogICAgIGlmICgoaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQgJiYgaXNQ
YWludGluZ092ZXJmbG93Q29udGVudHMpIHx8ICghaXNQYWludGluZ1Njcm9sbGluZ0NvbnRlbnQg
JiYgaXNQYWludGluZ0NvbXBvc2l0ZWRCYWNrZ3JvdW5kKSkKLSAgICAgICAgcGFpbnRMaXN0KG5l
Z1pPcmRlckxpc3QoKSwgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CisgICAgICAgIHBhaW50TGlzdChuZWdaT3JkZXJMaXN0KCksICpjb250ZXh0LCBsb2NhbFBh
aW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAKICAgICBpZiAoaXNQYWludGluZ0Nv
bXBvc2l0ZWRGb3JlZ3JvdW5kKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludENvbnRlbnQpCi0g
ICAgICAgICAgICBwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNv
bnRleHQsIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgcGFpbnRpbmdJbmZvLnBhaW50RGlydHlS
ZWN0LCBoYXZlVHJhbnNwYXJlbmN5LAorICAgICAgICAgICAgcGFpbnRGb3JlZ3JvdW5kRm9yRnJh
Z21lbnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgdHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0
LCBwYWludGluZ0luZm8ucGFpbnREaXJ0eVJlY3QsIGhhdmVUcmFuc3BhcmVuY3ksCiAgICAgICAg
ICAgICAgICAgbG9jYWxQYWludGluZ0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJv
b3RGb3JSZW5kZXJlciwgc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rpb25BbmRCYWNrZ3JvdW5kc09u
bHkpOwogICAgIH0KIAogICAgIGlmIChzaG91bGRQYWludE91dGxpbmUpCi0gICAgICAgIHBhaW50
T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGlu
Z0luZm8sIHBhaW50QmVoYXZpb3IsIHN1YnRyZWVQYWludFJvb3RGb3JSZW5kZXJlcik7CisgICAg
ICAgIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBwYWludEJlaGF2aW9yLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVy
ZXIpOwogCiAgICAgaWYgKGlzUGFpbnRpbmdDb21wb3NpdGVkRm9yZWdyb3VuZCkgewogICAgICAg
ICAvLyBQYWludCBhbnkgY2hpbGQgbGF5ZXJzIHRoYXQgaGF2ZSBvdmVyZmxvdy4KLSAgICAgICAg
cGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCksIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJ
bmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWludExpc3QobV9ub3JtYWxGbG93TGlz
dC5nZXQoKSwgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwog
ICAgIAogICAgICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0
aCBwb3NpdGl2ZSB6LWluZGljZXMuCi0gICAgICAgIHBhaW50TGlzdChwb3NaT3JkZXJMaXN0KCks
IGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBw
YWludExpc3QocG9zWk9yZGVyTGlzdCgpLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxv
Y2FsUGFpbnRGbGFncyk7CiAKICAgICAgICAgLy8gUGFpbnQgdGhlIGZpeGVkIGVsZW1lbnRzIGZy
b20gZmxvdyB0aHJlYWRzLgotICAgICAgICBwYWludEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKGNv
bnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOworICAgICAgICBwYWlu
dEZpeGVkTGF5ZXJzSW5OYW1lZEZsb3dzKCpjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9j
YWxQYWludEZsYWdzKTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSByZWdpb24s
IHBhaW50IGl0cyBjb250ZW50cyB2aWEgdGhlIGZsb3cgdGhyZWFkJ3MgbGF5ZXIuCiAgICAgICAg
IGlmIChzaG91bGRQYWludENvbnRlbnQpCi0gICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJl
Z2lvbkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0lu
Zm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAgICAgICBwYWludEZsb3dUaHJlYWRJZlJlZ2lv
bkZvckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
LCBsb2NhbFBhaW50RmxhZ3MpOwogICAgIH0KIAogICAgIGlmIChpc1BhaW50aW5nT3ZlcmxheVNj
cm9sbGJhcnMgJiYgaGFzU2Nyb2xsYmFycygpKQotICAgICAgICBwYWludE92ZXJmbG93Q29udHJv
bHNGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVudHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZv
KTsKKyAgICAgICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21l
bnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8pOwogCiAgICAgaWYgKGZpbHRlclBhaW50
ZXIpIHsKLSAgICAgICAgY29udGV4dCA9IGFwcGx5RmlsdGVycyhmaWx0ZXJQYWludGVyLmdldCgp
LCB0cmFuc3BhcmVuY3lMYXllckNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsYXllckZyYWdt
ZW50cyk7CisgICAgICAgIGNvbnRleHQgPSAmYXBwbHlGaWx0ZXJzKGZpbHRlclBhaW50ZXIuZ2V0
KCksIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxheWVyRnJh
Z21lbnRzKTsKICAgICAgICAgZmlsdGVyUGFpbnRlciA9IG51bGxwdHI7CiAgICAgfQogICAgIAog
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIG5vdyB1c2UgdGhlIG9yaWdpbmFsIHRyYW5zcGFyZW5j
eSBjb250ZXh0LgotICAgIEFTU0VSVCh0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4
dCk7CisgICAgQVNTRVJUKCZ0cmFuc3BhcmVuY3lMYXllckNvbnRleHQgPT0gY29udGV4dCk7CiAK
ICAgICBpZiAoc2hvdWxkUGFpbnRDb250ZW50ICYmICEoc2VsZWN0aW9uT25seSB8fCBzZWxlY3Rp
b25BbmRCYWNrZ3JvdW5kc09ubHkpKSB7CiAgICAgICAgIGlmIChzaG91bGRQYWludE1hc2socGFp
bnRpbmdJbmZvLnBhaW50QmVoYXZpb3IsIGxvY2FsUGFpbnRGbGFncykpIHsKICAgICAgICAgICAg
IC8vIFBhaW50IHRoZSBtYXNrIGZvciB0aGUgZnJhZ21lbnRzLgotICAgICAgICAgICAgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGxheWVyRnJhZ21lbnRzLCBjb250ZXh0LCBsb2NhbFBhaW50aW5nSW5m
bywgc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKTsKKyAgICAgICAgICAgIHBhaW50TWFza0Zv
ckZyYWdtZW50cyhsYXllckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCEo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nTWFza1BoYXNlKSAmJiAo
cGFpbnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQ2xpcFBhdGhQaGFzZSkp
IHsKICAgICAgICAgICAgIC8vIFJlLXVzZSBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzIHRvIHBhaW50IGJsYWNrIGZvciB0aGUgY29tcG9zaXRpbmcgY2xpcHBpbmcgbWFzay4KLSAg
ICAgICAgICAgIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMobGF5ZXJGcmFnbWVu
dHMsIGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVy
ZXIpOworICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgKmNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBzdWJ0cmVlUGFpbnRSb290
Rm9yUmVuZGVyZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoKGxvY2FsUGFp
bnRGbGFncyAmIFBhaW50TGF5ZXJQYWludGluZ0NoaWxkQ2xpcHBpbmdNYXNrUGhhc2UpKSB7CiAg
ICAgICAgICAgICAvLyBQYWludCB0aGUgYm9yZGVyIHJhZGl1cyBtYXNrIGZvciB0aGUgZnJhZ21l
bnRzLgotICAgICAgICAgICAgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhsYXll
ckZyYWdtZW50cywgY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQYWludFJvb3RG
b3JSZW5kZXJlcik7CisgICAgICAgICAgICBwYWludENoaWxkQ2xpcHBpbmdNYXNrRm9yRnJhZ21l
bnRzKGxheWVyRnJhZ21lbnRzLCAqY29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIHN1YnRyZWVQ
YWludFJvb3RGb3JSZW5kZXJlcik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQzODYsNyArNDM4
Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUo
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRp
bmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJh
bnNsYXRpb25PZmZzZXQpCit2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZv
JiBwYWludGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzLCBjb25zdCBMYXlvdXRT
aXplJiB0cmFuc2xhdGlvbk9mZnNldCkKIHsKICAgICAvLyBUaGlzIGludm9sdmVzIHN1YnRyYWN0
aW5nIG91dCB0aGUgcG9zaXRpb24gb2YgdGhlIGxheWVyIGluIG91ciBjdXJyZW50IGNvb3JkaW5h
dGUgc3BhY2UsIGJ1dCBwcmVzZXJ2aW5nCiAgICAgLy8gdGhlIGFjY3VtdWxhdGVkIGVycm9yIGZv
ciBzdWItcGl4ZWwgbGF5b3V0LgpAQCAtNDQwMiw4ICs0NDAzLDggQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgZ3JhcGhpY3MgY29udGV4dCB0byB0aGUgc25h
cHBpbmcgcG9zaXRpb24gdG8gYXZvaWQgb2ZmLWRldmljZS1waXhlbCBwb3NpdGluZy4KICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlUmlnaHQoZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xh
eWVyLndpZHRoKCksIGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllci5oZWlnaHQo
KSk7CiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybS4KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwotICAgIGNvbnRleHQtPmNvbmNhdENUTSh0cmFu
c2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuY29uY2F0Q1RNKHRyYW5zZm9ybS50
b0FmZmluZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIE5vdyBkbyBhIHBhaW50IHdpdGggdGhlIHJv
b3QgbGF5ZXIgc2hpZnRlZCB0byBiZSB1cy4KICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4
ZWxBY2N1bXVsYXRpb24gPSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBp
eGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7CkBAIC00NDEyLDcgKzQ0MTMsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihj
b250ZXh0LCB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZv
LCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlz
dChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXllclBhaW50aW5nSW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFp
bnRGbGFncykKIHsKICAgICBpZiAoIWxpc3QpCiAgICAgICAgIHJldHVybjsKQEAgLTQ1OTcsNyAr
NDU5OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBhaW50aW5nSW5mb0ZvckZyYWdtZW50
cyhMYXllckZyYWdtZW50cyYgZnJhZ21lbnRzLCBjb25zCiAgICAgfQogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRM
YXllckZsYWdzIHBhaW50RmxhZ3MpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVk
TGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQ
YWludGluZ0luZm8mIHBhaW50aW5nSW5mbywgUGFpbnRMYXllckZsYWdzIHBhaW50RmxhZ3MpCiB7
CiAgICAgTGF5ZXJGcmFnbWVudHMgZW5jbG9zaW5nUGFnaW5hdGlvbkZyYWdtZW50czsKICAgICBM
YXlvdXRTaXplIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJvbVJvb3Q7CkBAIC00NjI5LDcgKzQ2
MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFRyYW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21l
bnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgYwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6cGFpbnRCYWNrZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBs
YXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQq
IHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50QmFja2dy
b3VuZEZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXll
ckNvbnRleHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJl
Y3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2Jq
ZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CkBAIC00NjU3LDcgKzQ2NTgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHQqIHRyYW5z
cGFyZW5jeUxheWVyQ29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgR3JhcGhpY3NDb250ZXh0JiB0cmFuc3BhcmVuY3lMYXllckNvbnRl
eHQsCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgdHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJv
b2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRp
bmdJbmZvLCBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsCiAgICAgUmVuZGVyT2JqZWN0KiBz
dWJ0cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIsIGJvb2wgc2VsZWN0aW9uT25seSkKIHsKQEAgLTQ3
MTQsNyArNDcxNSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVuCiAgICAgICAgIHJlc3RvcmVD
bGlwKGNvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0LCBjbGlwcGVkUmVj
dCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dp
dGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFn
bWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
Rm9yZWdyb3VuZEZvckZyYWdtZW50c1dpdGhQaGFzZShQYWludFBoYXNlIHBoYXNlLCBjb25zdCBM
YXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
ICAgICBjb25zdCBMYXllclBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sIFBhaW50QmVo
YXZpb3IgcGFpbnRCZWhhdmlvciwgUmVuZGVyT2JqZWN0KiBzdWJ0cmVlUGFpbnRSb290Rm9yUmVu
ZGVyZXIpCiB7CiAgICAgYm9vbCBzaG91bGRDbGlwID0gbG9jYWxQYWludGluZ0luZm8uY2xpcFRv
RGlydHlSZWN0ICYmIGxheWVyRnJhZ21lbnRzLnNpemUoKSA+IDE7CkBAIC00NzM2LDcgKzQ3Mzcs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludEZvcmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhh
c2UoUGFpbnRQaGFzZSBwaGFzZSwgY29uc3QgTAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
byYgbG9jYWxQYWludGluZ0luZm8sCit2b2lkIFJlbmRlckxheWVyOjpwYWludE91dGxpbmVGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJhZ21lbnRzLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBsb2NhbFBhaW50aW5nSW5m
bywKICAgICBQYWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJl
ZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewogICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQg
OiBsYXllckZyYWdtZW50cykgewpAQCAtNDc1MSw3ICs0NzUyLDcgQEAgdm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBsYXllckZy
YWdtZW50cywKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TWFza0ZvckZyYWdt
ZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvLAor
dm9pZCBSZW5kZXJMYXllcjo6cGFpbnRNYXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21l
bnRzJiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8sCiAgICAgUmVuZGVyT2JqZWN0KiBzdWJ0
cmVlUGFpbnRSb290Rm9yUmVuZGVyZXIpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBmcmFnbWVu
dCA6IGxheWVyRnJhZ21lbnRzKSB7CkBAIC00NzcxLDcgKzQ3NzIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludE1hc2tGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGxheWVyRnJh
Z21lbnRzLCBHcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBw
aW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2Fs
UGFpbnRpbmdJbmZvLAordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJ
bmZvLAogICAgIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdEZvclJlbmRlcmVyKQogewog
ICAgIGZvciAoY29uc3QgYXV0byYgZnJhZ21lbnQgOiBsYXllckZyYWdtZW50cykgewpAQCAtNDc5
MCw3ICs0NzkxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRDaGlsZENsaXBwaW5nTWFza0Zv
ckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgbGF5ZXIKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYgbGF5ZXJGcmFnbWVudHMsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGluZ0luZm8mIGxvY2FsUGFpbnRpbmdJbmZvKQordm9pZCBSZW5kZXJMYXll
cjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xzRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiBsYXllckZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mbyYgbG9jYWxQYWludGluZ0luZm8pCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBm
cmFnbWVudCA6IGxheWVyRnJhZ21lbnRzKSB7CiAgICAgICAgIGlmIChmcmFnbWVudC5iYWNrZ3Jv
dW5kUmVjdC5pc0VtcHR5KCkpCkBAIC02OTE4LDcgKzY5MTksNyBAQCB2b2lkIFJlbmRlckxheWVy
OjpmaWx0ZXJOZWVkc1JlcGFpbnQoKQogICAgIHJlbmRlcmVyKCkucmVwYWludCgpOwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpwYWludE5hbWVkRmxvd1RocmVhZEluc2lkZVJlZ2lvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24sIExheW91
dFJlY3QgcGFpbnREaXJ0eVJlY3QsIExheW91dFBvaW50IHBhaW50T2Zmc2V0LCBQYWludEJlaGF2
aW9yIHBhaW50QmVoYXZpb3IsIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVSZWdpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCogcmVnaW9uLCBMYXlvdXRSZWN0IHBh
aW50RGlydHlSZWN0LCBMYXlvdXRQb2ludCBwYWludE9mZnNldCwgUGFpbnRCZWhhdmlvciBwYWlu
dEJlaGF2aW9yLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBMYXlvdXRSZWN0
IHJlZ2lvbkNvbnRlbnRCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlZ2lvbi0+bGF5ZXJPd25l
cigpKS5jb250ZW50Qm94UmVjdCgpOwogICAgIEN1cnJlbnRSZW5kZXJSZWdpb25NYWludGFpbmVy
IHJlZ2lvbk1haW50YWluZXIoKnJlZ2lvbik7CkBAIC02OTI2LDE3ICs2OTI3LDE3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TmFtZWRGbG93VGhyZWFkSW5zaWRlUmVnaW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuCiAKICAgICBMYXlvdXRTaXplIG1vdmVPZmZzZXQgPSByZWdpb24t
PmZsb3dUaHJlYWRQb3J0aW9uTG9jYXRpb24oKSAtIChwYWludE9mZnNldCArIHJlZ2lvbkNvbnRl
bnRCb3gubG9jYXRpb24oKSkgKyByZWdpb24tPmZyYWdtZW50Q29udGFpbmVyKCkuc2Nyb2xsZWRD
b250ZW50T2Zmc2V0KCk7CiAgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91
bmRQb2ludFRvRGV2aWNlUGl4ZWxzKHRvTGF5b3V0UG9pbnQobW92ZU9mZnNldCksIHJlbmRlcmVy
KCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKLSAgICBjb250ZXh0LT5zYXZlKCk7
Ci0gICAgY29udGV4dC0+dHJhbnNsYXRlKC1hZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgLWFkanVz
dGVkUGFpbnRPZmZzZXQueSgpKTsKKyAgICBjb250ZXh0LnNhdmUoKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtYWRqdXN0ZWRQYWludE9mZnNldC54KCksIC1hZGp1c3RlZFBhaW50T2Zmc2V0Lnko
KSk7CiAKICAgICBMYXlvdXRTaXplIHN1YnBpeGVsQWNjdW11bGF0aW9uID0gbW92ZU9mZnNldCAt
IHRvTGF5b3V0U2l6ZShMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSk7CiAgICAgcGFp
bnREaXJ0eVJlY3QubW92ZShtb3ZlT2Zmc2V0KTsKICAgICBwYWludChjb250ZXh0LCBwYWludERp
cnR5UmVjdCwgTGF5b3V0U2l6ZSgtc3VicGl4ZWxBY2N1bXVsYXRpb24ud2lkdGgoKSwgLXN1YnBp
eGVsQWNjdW11bGF0aW9uLmhlaWdodCgpKSwgcGFpbnRCZWhhdmlvciwgbnVsbHB0ciwgcGFpbnRG
bGFncyB8IFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlwUmVjdHMpOwogICAgIHJlZ2lvbi0+cmVzdG9y
ZVJlZ2lvbk9iamVjdHNPcmlnaW5hbFN0eWxlKCk7Ci0gICAgY29udGV4dC0+cmVzdG9yZSgpOwor
ICAgIGNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludEZsb3dU
aHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYgZnJhZ21lbnRz
LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiBwYWlu
dGluZ0luZm8sIFBhaW50TGF5ZXJGbGFncyBwYWludEZsYWdzKQordm9pZCBSZW5kZXJMYXllcjo6
cGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMm
IGZyYWdtZW50cywgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYgcGFpbnRpbmdJbmZvLCBQYWludExheWVyRmxhZ3MgcGFpbnRGbGFncykKIHsKICAgICBp
ZiAoIXJlbmRlcmVyKCkuaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVudENvbnRhaW5lcigpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGI2
YTEyOGNhOGVmOTQ1ZDAwNmUxOGI3OTA5YWM5MTc1YzdjMmFiNDMuLmVkMWI0MDAyNDY3NDgxN2Iy
N2U3YjQ3MTc2YTA2M2UxNmYyZTJiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaGl0VGVzdE92ZXJm
bG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50KTsK
ICAgICBJbnRTaXplIG9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50UG9pbnQmIGFic29s
dXRlUG9pbnQpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBi
b29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KTsKLSAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZv
aWQgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFBvaW50
JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBwYWludGluZ092ZXJsYXlDb250cm9s
cyA9IGZhbHNlKTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdm9pZCBw
YWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBM
YXlvdXRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0KCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHB1YmxpYzoKICAgICAvLyBwYWludHMg
dGhlIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZGFtYWdlIHJlY3QgZnJvbSBiYWNrIHRvCiAg
ICAgLy8gZnJvbnQuICBUaGUgaGl0VGVzdCBtZXRob2QgbG9va3MgZm9yIG1vdXNlIGV2ZW50cyBi
eSB3YWxraW5nCiAgICAgLy8gbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoZSBwb2ludCBmcm9tIGZy
b250IHRvIGJhY2suCi0gICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlv
dXRSZWN0JiBkYW1hZ2VSZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlv
biA9IExheW91dFNpemUoKSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCisg
ICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VS
ZWN0LCBjb25zdCBMYXlvdXRTaXplJiBzdWJwaXhlbEFjY3VtdWxhdGlvbiA9IExheW91dFNpemUo
KSwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsCiAgICAgICAgIFJlbmRlck9i
amVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFBhaW50TGF5ZXJGbGFncyA9IDApOwog
ICAgIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmKTsK
ICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7Ci0gICAgdm9pZCBwYWludE92ZXJsYXlTY3JvbGxiYXJz
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QsIFBhaW50QmVo
YXZpb3IsIFJlbmRlck9iamVjdCogc3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIpOworICAgIHZv
aWQgcGFpbnRPdmVybGF5U2Nyb2xsYmFycyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRS
ZWN0JiBkYW1hZ2VSZWN0LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHN1YnRyZWVQYWlu
dFJvb3QgPSBudWxscHRyKTsKIAotICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBMYXlvdXRS
ZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFBh
aW50TGF5ZXJGbGFncyA9IDApOworICAgIHZvaWQgcGFpbnROYW1lZEZsb3dUaHJlYWRJbnNpZGVS
ZWdpb24oR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqLCBMYXlvdXRS
ZWN0LCBMYXlvdXRQb2ludCwgUGFpbnRCZWhhdmlvciA9IFBhaW50QmVoYXZpb3JOb3JtYWwsIFBh
aW50TGF5ZXJGbGFncyA9IDApOwogCiAgICAgc3RydWN0IENsaXBSZWN0c0NvbnRleHQgewogICAg
ICAgICBDbGlwUmVjdHNDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyKiBpblJvb3RMYXllciwgQ2xp
cFJlY3RzVHlwZSBpbkNsaXBSZWN0c1R5cGUsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5
IGluT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFy
U2l6ZSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCBpblJlc3BlY3RPdmVyZmxvd0NsaXAgPSBS
ZXNwZWN0T3ZlcmZsb3dDbGlwKQpAQCAtNzE3LDggKzcxNyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21wdXRlUmVwYWludFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKICAgICB2b2lkIGNs
ZWFyUmVwYWludFJlY3RzKCk7CiAKLSAgICB2b2lkIGNsaXBUb1JlY3QoY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBDbGlwUmVjdCYsIEJvcmRlclJhZGl1
c0NsaXBwaW5nUnVsZSA9IEluY2x1ZGVTZWxmRm9yQm9yZGVyUmFkaXVzKTsKLSAgICB2b2lkIHJl
c3RvcmVDbGlwKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlS
ZWN0LCBjb25zdCBDbGlwUmVjdCYpOworICAgIHZvaWQgY2xpcFRvUmVjdChjb25zdCBMYXllclBh
aW50aW5nSW5mbyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IENsaXBSZWN0JiwgQm9yZGVyUmFk
aXVzQ2xpcHBpbmdSdWxlID0gSW5jbHVkZVNlbGZGb3JCb3JkZXJSYWRpdXMpOworICAgIHZvaWQg
cmVzdG9yZUNsaXAoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIGNvbnN0IENsaXBSZWN0Jik7CiAKICAgICBib29sIHNob3VsZFJlcGFpbnRBZnRlckxh
eW91dCgpIGNvbnN0OwogCkBAIC03NjgsNDIgKzc2OCw0MiBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpOwogCi0gICAgYm9vbCBz
ZXR1cEZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihHcmFwaGljc0NvbnRleHQqLCBib29sJiBkaWRR
dWFudGl6ZUZvbnRzKTsKKyAgICBib29sIHNldHVwRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGJvb2wmIGRpZFF1YW50aXplRm9udHMpOwogCiAgICAgUGF0aCBjb21w
dXRlQ2xpcFBhdGgoY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIExheW91dFJlY3Qm
IHJvb3RSZWxhdGl2ZUJvdW5kcywgV2luZFJ1bGUmKSBjb25zdDsKIAotICAgIGJvb2wgc2V0dXBD
bGlwUGF0aChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIGNvbnN0
IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3Vu
ZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKKyAgICBib29sIHNldHVwQ2xp
cFBhdGgoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRz
LCBib29sJiByb290UmVsYXRpdmVCb3VuZHNDb21wdXRlZCk7CiAKLSAgICBib29sIGhhc0ZpbHRl
clRoYXRJc1BhaW50aW5nKEdyYXBoaWNzQ29udGV4dCosIFBhaW50TGF5ZXJGbGFncykgY29uc3Q7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckVmZmVjdFJlbmRlcmVySGVscGVyPiBzZXR1cEZp
bHRlcnMoR3JhcGhpY3NDb250ZXh0KiwgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxh
Z3MsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBMYXlvdXRSZWN0JiByb290UmVs
YXRpdmVCb3VuZHMsIGJvb2wmIHJvb3RSZWxhdGl2ZUJvdW5kc0NvbXB1dGVkKTsKLSAgICBHcmFw
aGljc0NvbnRleHQqIGFwcGx5RmlsdGVycyhGaWx0ZXJFZmZlY3RSZW5kZXJlckhlbHBlciosIEdy
YXBoaWNzQ29udGV4dCogb3JpZ2luYWxDb250ZXh0LCBMYXllclBhaW50aW5nSW5mbyYsIExheWVy
RnJhZ21lbnRzJik7CisgICAgYm9vbCBoYXNGaWx0ZXJUaGF0SXNQYWludGluZyhHcmFwaGljc0Nv
bnRleHQmLCBQYWludExheWVyRmxhZ3MpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGaWx0
ZXJFZmZlY3RSZW5kZXJlckhlbHBlcj4gc2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYsIExh
eWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXRGcm9tUm9vdCwgTGF5b3V0UmVjdCYgcm9vdFJlbGF0aXZlQm91bmRzLCBib29sJiByb290UmVs
YXRpdmVCb3VuZHNDb21wdXRlZCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBhcHBseUZpbHRlcnMo
RmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIqLCBHcmFwaGljc0NvbnRleHQmIG9yaWdpbmFsQ29u
dGV4dCwgTGF5ZXJQYWludGluZ0luZm8mLCBMYXllckZyYWdtZW50cyYpOwogCi0gICAgdm9pZCBw
YWludExheWVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFp
bnRMYXllckZsYWdzKTsKLSAgICB2b2lkIHBhaW50Rml4ZWRMYXllcnNJbk5hbWVkRmxvd3MoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3Mp
OwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7Ci0gICAgdm9p
ZCBwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncywgY29uc3QgTGF5b3V0U2l6ZSYgdHJh
bnNsYXRpb25PZmZzZXQgPSBMYXlvdXRTaXplKCkpOwotICAgIHZvaWQgcGFpbnRMYXllckNvbnRl
bnRzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXll
ckZsYWdzKTsKLSAgICB2b2lkIHBhaW50TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsK
KyAgICB2b2lkIHBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRGaXhlZExheWVyc0luTmFt
ZWRGbG93cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdz
KTsKKyAgICB2b2lkIHBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzLCBjb25zdCBMYXlv
dXRTaXplJiB0cmFuc2xhdGlvbk9mZnNldCA9IExheW91dFNpemUoKSk7CisgICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXll
cio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExh
eWVyRmxhZ3MpOwogCiAgICAgdm9pZCBjb2xsZWN0RnJhZ21lbnRzKExheWVyRnJhZ21lbnRzJiwg
Y29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
LAogICAgICAgICBQYWdpbmF0aW9uSW5jbHVzaW9uTW9kZSwKICAgICAgICAgQ2xpcFJlY3RzVHlw
ZSwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgaW5PdmVybGF5U2Nyb2xsYmFyU2l6ZVJl
bGV2YW5jeSwgU2hvdWxkUmVzcGVjdE92ZXJmbG93Q2xpcCwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbVJvb3QsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QqIGxheWVyQm91bmRpbmdCb3gg
PSBudWxscHRyLCBTaG91bGRBcHBseVJvb3RPZmZzZXRUb0ZyYWdtZW50cyA9IElnbm9yZVJvb3RP
ZmZzZXRGb3JGcmFnbWVudHMpOwogICAgIHZvaWQgdXBkYXRlUGFpbnRpbmdJbmZvRm9yRnJhZ21l
bnRzKExheWVyRnJhZ21lbnRzJiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVy
RmxhZ3MsIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRG
cm9tUm9vdCk7Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29uc3QgTGF5
ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBHcmFwaGljc0NvbnRleHQqIHRyYW5zcGFy
ZW5jeUxheWVyQ29udGV4dCwKKyAgICB2b2lkIHBhaW50QmFja2dyb3VuZEZvckZyYWdtZW50cyhj
b25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzQ29udGV4dCYg
dHJhbnNwYXJlbmN5TGF5ZXJDb250ZXh0LAogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiB0cmFu
c3BhcmVuY3lQYWludERpcnR5UmVjdCwgYm9vbCBoYXZlVHJhbnNwYXJlbmN5LCBjb25zdCBMYXll
clBhaW50aW5nSW5mbyYsIFBhaW50QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290
Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzKGNvbnN0
IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgR3JhcGhpY3NDb250ZXh0KiB0cmFu
c3BhcmVuY3lMYXllckNvbnRleHQsCisgICAgdm9pZCBwYWludEZvcmVncm91bmRGb3JGcmFnbWVu
dHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRl
eHQmIHRyYW5zcGFyZW5jeUxheWVyQ29udGV4dCwKICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYg
dHJhbnNwYXJlbmN5UGFpbnREaXJ0eVJlY3QsIGJvb2wgaGF2ZVRyYW5zcGFyZW5jeSwgY29uc3Qg
TGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5n
Um9vdEZvclJlbmRlcmVyLAogICAgICAgICBib29sIHNlbGVjdGlvbk9ubHkpOwotICAgIHZvaWQg
cGFpbnRGb3JlZ3JvdW5kRm9yRnJhZ21lbnRzV2l0aFBoYXNlKFBhaW50UGhhc2UsIGNvbnN0IExh
eWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8m
LCBQYWludEJlaGF2aW9yLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsK
LSAgICB2b2lkIHBhaW50T3V0bGluZUZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYs
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgUGFpbnRCZWhhdmlv
ciwgUmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7Ci0gICAgdm9pZCBwYWlu
dE92ZXJmbG93Q29udHJvbHNGb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYpOwotICAgIHZvaWQgcGFpbnRN
YXNrRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBSZW5kZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJl
bmRlcmVyKTsKLSAgICB2b2lkIHBhaW50Q2hpbGRDbGlwcGluZ01hc2tGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXllclBhaW50aW5n
SW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOwotICAgIHZvaWQg
cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyhHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFncyk7CisgICAgdm9pZCBwYWludEZv
cmVncm91bmRGb3JGcmFnbWVudHNXaXRoUGhhc2UoUGFpbnRQaGFzZSwgY29uc3QgTGF5ZXJGcmFn
bWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50
QmVoYXZpb3IsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIpOworICAgIHZv
aWQgcGFpbnRPdXRsaW5lRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludEJlaGF2aW9yLCBSZW5k
ZXJPYmplY3QqIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50T3ZlcmZs
b3dDb250cm9sc0ZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtZW50cyYsIEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJik7CisgICAgdm9pZCBwYWludE1hc2tGb3JG
cmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBM
YXllclBhaW50aW5nSW5mbyYsIFJlbmRlck9iamVjdCogcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIp
OworICAgIHZvaWQgcGFpbnRDaGlsZENsaXBwaW5nTWFza0ZvckZyYWdtZW50cyhjb25zdCBMYXll
ckZyYWdtZW50cyYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwg
UmVuZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlcik7CisgICAgdm9pZCBwYWludFRy
YW5zZm9ybWVkTGF5ZXJJbnRvRnJhZ21lbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVy
UGFpbnRpbmdJbmZvJiwgUGFpbnRMYXllckZsYWdzKTsKIAogICAgIFJlbmRlckxheWVyKiB0cmFu
c3BhcmVudFBhaW50aW5nQW5jZXN0b3IoKTsKLSAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXJzKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5
b3V0UmVjdCYgZGlydHlSZWN0KTsKKyAgICB2b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXJzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFpbnRpbmdJbmZvJiwgY29uc3QgTGF5b3V0UmVj
dCYgZGlydHlSZWN0KTsKIAogICAgIFJlbmRlckxheWVyKiBoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxheWVyLCBjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LAogICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgYm9vbCBhcHBs
aWVkVHJhbnNmb3JtLApAQCAtOTM4LDcgKzkzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgIHZvaWQgdXBkYXRlUmVzaXplclN0eWxlKCk7CiAK
LSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRSZWN0JiByZXNpemVyQ29ybmVyUmVjdCk7CisgICAgdm9pZCBkcmF3UGxhdGZvcm1S
ZXNpemVySW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgcmVzaXplckNv
cm5lclJlY3QpOwogCiAgICAgdm9pZCB1cGRhdGVQYWdpbmF0aW9uKCk7CiAKQEAgLTk4Miw3ICs5
ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiwKICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiwgZG91
YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsCiAgICAgICAgIGRvdWJsZSogek9mZnNldCwgY29u
c3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLCBi
b29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKLSAgICB2b2lkIHBhaW50Rmxvd1RocmVhZElmUmVn
aW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBQYWludExheWVyRmxhZ3MpOworICAgIHZvaWQgcGFp
bnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIFBhaW50TGF5ZXJGbGFn
cyk7CiAgICAgYm9vbCBtYXBMYXllckNsaXBSZWN0c1RvRnJhZ21lbnRhdGlvbkxheWVyKENsaXBS
ZWN0cyYpIGNvbnN0OwogCiAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIGN1cnJlbnRSZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA1MDY0YzRmOGNmODZlZjNlNzBhM2VlNzdk
YjIyYzEyNTY2ZWI0N2Y5Li4zOTA0MWE3OTk1ZThkNmY2ZjE5ZWExN2Y2NDEzM2M5ZmVlMzgxMWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtMjI1OCw3ICsyMjU4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRl
bnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgciwgR3JhcGgKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihjb25zdCBHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCit2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXllciogZ3Jh
cGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIGNvbnN0IEludFJlY3Qm
IHBhaW50RGlydHlSZWN0LCAvLyBJbiB0aGUgY29vcmRzIG9mIHJvb3RMYXllci4KICAgICBQYWlu
dEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIHBhaW50
aW5nUGhhc2UpCiB7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFw
aAogICAgICAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChlbmNsb3NpbmdJbnRSZWN0KGNvbXBv
c2l0ZWRCb3VuZHNJbmNsdWRpbmdNYXJnaW4oKSkpOwogCiAgICAgICAgIC8vIFdlIGhhdmUgdG8g
dXNlIHRoZSBzYW1lIHJvb3QgYXMgZm9yIGhpdCB0ZXN0aW5nLCBiZWNhdXNlIGJvdGggbWV0aG9k
cyBjYW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgotICAgICAgICBwYWludEludG9MYXll
cihncmFwaGljc0xheWVyLCAmY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFs
LCBwYWludGluZ1BoYXNlKTsKKyAgICAgICAgcGFpbnRJbnRvTGF5ZXIoZ3JhcGhpY3NMYXllciwg
Y29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlKTsK
IAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KCZyZW5kZXJlcigp
LCBkaXJ0eVJlY3QpOwogICAgIH0gZWxzZSBpZiAoZ3JhcGhpY3NMYXllciA9PSBsYXllckZvckhv
cml6b250YWxTY3JvbGxiYXIoKSkgewpAQCAtMjM1NCw4ICsyMzU0LDggQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllciwgR3JhcGgKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNjcm9sbENvcm5lckFuZFJl
c2l6ZXIueCgpLCAtc2Nyb2xsQ29ybmVyQW5kUmVzaXplci55KCkpOwogICAgICAgICBMYXlvdXRS
ZWN0IHRyYW5zZm9ybWVkQ2xpcCA9IExheW91dFJlY3QoY2xpcCk7CiAgICAgICAgIHRyYW5zZm9y
bWVkQ2xpcC5tb3ZlQnkoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5sb2NhdGlvbigpKTsKLSAgICAg
ICAgbV9vd25pbmdMYXllci5wYWludFNjcm9sbENvcm5lcigmY29udGV4dCwgSW50UG9pbnQoKSwg
c25hcHBlZEludFJlY3QodHJhbnNmb3JtZWRDbGlwKSk7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIu
cGFpbnRSZXNpemVyKCZjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOworICAg
ICAgICBtX293bmluZ0xheWVyLnBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIEludFBvaW50KCks
IHNuYXBwZWRJbnRSZWN0KHRyYW5zZm9ybWVkQ2xpcCkpOworICAgICAgICBtX293bmluZ0xheWVy
LnBhaW50UmVzaXplcihjb250ZXh0LCBJbnRQb2ludCgpLCB0cmFuc2Zvcm1lZENsaXApOwogICAg
ICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCmluZGV4IDI0ZWIyYmJkYmIx
NDIxNWYzMjQwZTk3ZjUzZTA1ZGU5ZWI0ODY0OTEuLmQ2NmZiODIxNTQ4MWI1OTVlZWNhMTkzM2Iy
YmViZGYzNDU2YjAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmgKQEAgLTMyNiw3ICszMjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzVGls
ZWRCYWNraW5nRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gKG1fY2hpbGRDb250YWlu
bWVudExheWVyICYmIG1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpOyB9CiAgICAgR3JhcGhpY3NMYXll
ciogdGlsZUNhY2hlRmxhdHRlbmluZ0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV91c2luZ1RpbGVk
Q2FjaGVMYXllciA/IG1fY2hpbGRDb250YWlubWVudExheWVyLmdldCgpIDogbnVsbHB0cjsgfQog
Ci0gICAgdm9pZCBwYWludEludG9MYXllcihjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIFBhaW50QmVoYXZpb3IsIEdy
YXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlKTsKKyAgICB2b2lkIHBhaW50SW50b0xheWVyKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBwYWludERp
cnR5UmVjdCwgUGFpbnRCZWhhdmlvciwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UpOwogCiAg
ICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB1cGRhdGVHZW9tZXRyeS4KICAgICB2b2lkIGFkanVz
dEFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHNGb3JGbG93VGhyZWFkKExheW91dFJlY3QmIGFuY2Vz
dG9yQ29tcG9zaXRpbmdCb3VuZHMsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2Vz
dG9yKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKaW5kZXggODk1NTZlMzFjM2ExM2ZhNTc0MzRkNzhjNmUyZjE4Y2EyMzRk
NWY4ZC4uNmY0NWU5Njc4NWVmYzNiZjAxOTYzNjZjZmQwYTJmNzZmZmMwZmZjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAg
LTI4NjYsNyArMjg2Niw3IEBAIHZvaWQgcGFpbnRTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjCiAgICAgY29udGV4dC50
cmFuc2xhdGUoLXNjcm9sbGJhclJlY3QueCgpLCAtc2Nyb2xsYmFyUmVjdC55KCkpOwogICAgIElu
dFJlY3QgdHJhbnNmb3JtZWRDbGlwID0gY2xpcDsKICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5
KHNjcm9sbGJhclJlY3QubG9jYXRpb24oKSk7Ci0gICAgc2Nyb2xsYmFyLT5wYWludCgmY29udGV4
dCwgdHJhbnNmb3JtZWRDbGlwKTsKKyAgICBzY3JvbGxiYXItPnBhaW50KGNvbnRleHQsIHRyYW5z
Zm9ybWVkQ2xpcCk7CiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKQEAgLTI4ODMsNyArMjg4
Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYWludENvbnRlbnRzKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRl
KC1zY3JvbGxDb3JuZXIueCgpLCAtc2Nyb2xsQ29ybmVyLnkoKSk7CiAgICAgICAgIEludFJlY3Qg
dHJhbnNmb3JtZWRDbGlwID0gcGl4ZWxTbmFwcGVkUmVjdEZvckludGVncmFsUG9zaXRpb25lZEl0
ZW1zOwogICAgICAgICB0cmFuc2Zvcm1lZENsaXAubW92ZUJ5KHNjcm9sbENvcm5lci5sb2NhdGlv
bigpKTsKLSAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBhaW50U2Nyb2xsQ29ybmVy
KCZjb250ZXh0LCB0cmFuc2Zvcm1lZENsaXApOworICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkucGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgdHJhbnNmb3JtZWRDbGlwKTsKICAgICAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDQwZjVlMzJjZjUwMmNiYmRlMGJmNTNjNDBjMzNhMjQx
ZjQ2NWEzNzcuLmUzY2I3OTZiZmY0NzM2ZjQ3ZGM2YTExNjZlOGU0NDJlYjBmNDYwN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTM0NSw3ICszNDUs
NyBAQCB2b2lkIFJlbmRlckxpc3RCb3g6OnBhaW50U2Nyb2xsYmFyKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgICAgICAgICAgbV92QmFyLT53aWR0aCgp
LAogICAgICAgICAgICAgaGVpZ2h0KCkgLSAoYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSkp
OwogICAgICAgICBtX3ZCYXItPnNldEZyYW1lUmVjdChzY3JvbGxSZWN0KTsKLSAgICAgICAgbV92
QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCwgc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJl
Y3QpKTsKKyAgICAgICAgbV92QmFyLT5wYWludChwYWludEluZm8uY29udGV4dCgpLCBzbmFwcGVk
SW50UmVjdChwYWludEluZm8ucmVjdCkpOwogICAgIH0KIH0KIApAQCAtMzk3LDcgKzM5Nyw3IEBA
IHZvaWQgUmVuZGVyTGlzdEJveDo6cGFpbnRJdGVtRm9yZWdyb3VuZChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmCiAgICAgfQogCiAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0
RmlsbENvbG9yKHRleHRDb2xvciwgY29sb3JTcGFjZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5zZXRGaWxsQ29sb3IodGV4dENvbG9yLCBjb2xvclNwYWNlKTsKIAogICAgIFRleHRSdW4gdGV4
dFJ1bihpdGVtVGV4dCwgMCwgMCwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiwgaXRlbVN0eWxlLmRp
cmVjdGlvbigpLCBpc092ZXJyaWRlKGl0ZW1TdHlsZS51bmljb2RlQmlkaSgpKSwgdHJ1ZSwgVGV4
dFJ1bjo6Tm9Sb3VuZGluZyk7CiAgICAgRm9udENhc2NhZGUgaXRlbUZvbnQgPSBzdHlsZSgpLmZv
bnRDYXNjYWRlKCk7CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWlu
dEl0ZW1Gb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYK
ICAgICB9CiAKICAgICAvLyBEcmF3IHRoZSBpdGVtIHRleHQKLSAgICBwYWludEluZm8uY29udGV4
dC0+ZHJhd0JpZGlUZXh0KGl0ZW1Gb250LCB0ZXh0UnVuLCByb3VuZGVkSW50UG9pbnQoci5sb2Nh
dGlvbigpKSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3QmlkaVRleHQoaXRlbUZvbnQs
IHRleHRSdW4sIHJvdW5kZWRJbnRQb2ludChyLmxvY2F0aW9uKCkpKTsKIH0KIAogdm9pZCBSZW5k
ZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGludCBsaXN0SW5kZXgpCkBAIC00MzUsNyArNDM1
LDcgQEAgdm9pZCBSZW5kZXJMaXN0Qm94OjpwYWludEl0ZW1CYWNrZ3JvdW5kKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNw
YWNlID0gaXRlbVN0eWxlLmNvbG9yU3BhY2UoKTsKICAgICAgICAgTGF5b3V0UmVjdCBpdGVtUmVj
dCA9IGl0ZW1Cb3VuZGluZ0JveFJlY3QocGFpbnRPZmZzZXQsIGxpc3RJbmRleCk7CiAgICAgICAg
IGl0ZW1SZWN0LmludGVyc2VjdChjb250cm9sQ2xpcFJlY3QocGFpbnRPZmZzZXQpKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KGl0ZW1SZWN0KSwg
YmFja0NvbG9yLCBjb2xvclNwYWNlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxs
UmVjdChzbmFwcGVkSW50UmVjdChpdGVtUmVjdCksIGJhY2tDb2xvciwgY29sb3JTcGFjZSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5j
cHAKaW5kZXggYTg1NWE0OGU1Mjg4MDhiMjRjZjk1YzgxNzIwZTBjOTkxYzRiNTg2MC4uOGJhMGQ2
ZDMyMTRmNGRjNTZhY2IwMTQ4NjQ2MTg2NDA0ZjdlNWFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMTE5NCwxNCArMTE5NCwxNCBAQCB2
b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZQogICAgIEZsb2F0UmVjdCBtYXJrZXIgPSBnZXRSZWxhdGl2
ZU1hcmtlclJlY3QoKTsKICAgICBtYXJrZXIubW92ZUJ5KGJveE9yaWdpbik7CiAKLSAgICBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgaWYgKGlzSW1hZ2Uo
KSkgewotICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywgbWFy
a2VyLnNpemUoKSkuZ2V0KCksIHN0eWxlKCkuY29sb3JTcGFjZSgpLCBtYXJrZXIpOworICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZShtX2ltYWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKS5n
ZXQoKSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIG1hcmtlcik7CiAgICAgICAgIGlmIChzZWxlY3Rp
b25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIExheW91dFJlY3Qgc2Vs
UmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICAgICAgc2VsUmVjdC5tb3ZlQnko
Ym94T3JpZ2luKTsKLSAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0
KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgp
LmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRS
ZWN0KHNlbFJlY3QpLCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHls
ZSgpLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEyMDksMjYgKzEyMDksMjYgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBpZiAoc2Vs
ZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgIExheW91dFJlY3Qgc2Vs
UmVjdCA9IGxvY2FsU2VsZWN0aW9uUmVjdCgpOwogICAgICAgICBzZWxSZWN0Lm1vdmVCeShib3hP
cmlnaW4pOwotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzbmFwcGVkSW50UmVjdChzZWxSZWN0
KSwgbV9saXN0SXRlbS5zZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUoKS5jb2xvclNw
YWNlKCkpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbFJlY3Qp
LCBtX2xpc3RJdGVtLnNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3Bh
Y2UoKSk7CiAgICAgfQogCiAgICAgY29uc3QgQ29sb3IgY29sb3Ioc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvcikpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZUNv
bG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBm
KTsKLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoY29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgp
KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2Uo
KSk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29s
b3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKIAogICAgIEVMaXN0U3R5bGVUeXBlIHR5cGUgPSBz
dHlsZSgpLmxpc3RTdHlsZVR5cGUoKTsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2Fz
ZSBEaXNjOgotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsbGlwc2UobWFya2VyKTsKKyAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0VsbGlwc2UobWFya2VyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgY2FzZSBDaXJjbGU6Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdFbGxpcHNlKG1hcmtlcik7CisgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAg
ICAgY29udGV4dC5kcmF3RWxsaXBzZShtYXJrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIFNxdWFyZToKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdSZWN0KG1hcmtlcik7
CisgICAgICAgICAgICBjb250ZXh0LmRyYXdSZWN0KG1hcmtlcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGNhc2UgTm9uZUxpc3RTdHlsZToKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEzMTcsMjIgKzEzMTcsMjIgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICBjb25zdCBG
b250Q2FzY2FkZSYgZm9udCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKTsKICAgICBUZXh0UnVuIHRl
eHRSdW4gPSBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bih0aGlzLCBmb250LCBtX3RleHQs
IHN0eWxlKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpj
b250ZXh0LCBmYWxzZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQsIGZhbHNlKTsKICAgICBpZiAoIXN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICBtYXJrZXIubW92ZUJ5KC1ib3hPcmlnaW4pOwogICAgICAgICBtYXJr
ZXIgPSBtYXJrZXIudHJhbnNwb3NlZFJlY3QoKTsKICAgICAgICAgbWFya2VyLm1vdmVCeShGbG9h
dFBvaW50KGJveC54KCksIGJveC55KCkgLSBsb2dpY2FsSGVpZ2h0KCkpKTsKICAgICAgICAgc3Rh
dGVTYXZlci5zYXZlKCk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShtYXJrZXIueCgpLCBt
YXJrZXIubWF4WSgpKTsKLSAgICAgICAgY29udGV4dC0+cm90YXRlKHN0YXRpY19jYXN0PGZsb2F0
PihkZWcycmFkKDkwLikpKTsKLSAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1tYXJrZXIueCgp
LCAtbWFya2VyLm1heFkoKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKG1hcmtlci54KCks
IG1hcmtlci5tYXhZKCkpOworICAgICAgICBjb250ZXh0LnJvdGF0ZShzdGF0aWNfY2FzdDxmbG9h
dD4oZGVnMnJhZCg5MC4pKSk7CisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1tYXJrZXIueCgp
LCAtbWFya2VyLm1heFkoKSk7CiAgICAgfQogCiAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2luID0g
RmxvYXRQb2ludChtYXJrZXIueCgpLCBtYXJrZXIueSgpICsgc3R5bGUoKS5mb250TWV0cmljcygp
LmFzY2VudCgpKTsKICAgICB0ZXh0T3JpZ2luID0gcm91bmRQb2ludFRvRGV2aWNlUGl4ZWxzKExh
eW91dFBvaW50KHRleHRPcmlnaW4pLCBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCksIHN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsKIAogICAgIGlmICh0eXBlID09IEFzdGVy
aXNrcyB8fCB0eXBlID09IEZvb3Rub3RlcykKLSAgICAgICAgY29udGV4dC0+ZHJhd1RleHQoZm9u
dCwgdGV4dFJ1biwgdGV4dE9yaWdpbik7CisgICAgICAgIGNvbnRleHQuZHJhd1RleHQoZm9udCwg
dGV4dFJ1biwgdGV4dE9yaWdpbik7CiAgICAgZWxzZSB7CiAgICAgICAgIGNvbnN0IFVDaGFyIHN1
ZmZpeCA9IGxpc3RNYXJrZXJTdWZmaXgodHlwZSwgbV9saXN0SXRlbS52YWx1ZSgpKTsKIApAQCAt
MTM2Myw3ICsxMzYzLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgfQogICAg
ICAgICB0ZXh0UnVuLnNldFRleHQoU3RyaW5nVmlldyh0b0RyYXcpKTsKIAotICAgICAgICBjb250
ZXh0LT5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKKyAgICAgICAgY29udGV4
dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xzLmNwcAppbmRleCAy
MTcxMzg4ZWFmZThhOGMyM2JkMzE1OTZhYzBjZWU5NDgyOGI4YjFhLi5iNTJhNmM5YjRjZGRiNjkw
MTMwY2ZiOTFiZTdmOGRmMmI2NGRjOGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbHMuY3BwCkBAIC05MSw5ICs5MSw5IEBAIHN0YXRpYyBGbG9h
dFJlY3QgZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQoY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAgIHVuem9v
bWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAg
ICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxl
dmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3Qu
eCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVu
em9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxlKEZsb2F0
U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0K
ICAgICByZXR1cm4gdW56b29tZWRSZWN0OwogfQpAQCAtMTI4LDc2ICsxMjgsNzYgQEAgdm9pZCBS
ZW5kZXJNZWRpYUNvbnRyb2xzOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHls
ZSYgc3R5bGUpCiAKIGJvb2wgUmVuZGVyTWVkaWFDb250cm9sczo6cGFpbnRNZWRpYUNvbnRyb2xz
UGFydChNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBwYXJ0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4
dCgpKTsKIAogICAgIHN3aXRjaCAocGFydCkgewogICAgIGNhc2UgTWVkaWFFbnRlckZ1bGxzY3Jl
ZW5CdXR0b246CiAgICAgY2FzZSBNZWRpYUV4aXRGdWxsc2NyZWVuQnV0dG9uOgogICAgICAgICBp
ZiAoTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0
PE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAg
ICAgICAgICBib29sIGVudGVyQnV0dG9uID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhRW50
ZXJGdWxsc2NyZWVuQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoZW50ZXJC
dXR0b24gPyBXS01lZGlhVUlQYXJ0RnVsbHNjcmVlbkJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRFeGl0
RnVsbHNjcmVlbkJ1dHRvbiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBy
LCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChlbnRl
ckJ1dHRvbiA/IFdLTWVkaWFVSVBhcnRGdWxsc2NyZWVuQnV0dG9uIDogV0tNZWRpYVVJUGFydEV4
aXRGdWxsc2NyZWVuQnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVNob3dDbG9zZWRDYXB0aW9uc0J1dHRvbjoKICAgICBjYXNlIE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2Vk
Q2FwdGlvbnNCdXR0b25FbGVtZW50KiBidG4gPSBzdGF0aWNfY2FzdDxNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQqPihvLm5vZGUoKSkpIHsKICAgICAgICAgICAg
IGJvb2wgY2FwdGlvbnNWaXNpYmxlID0gYnRuLT5kaXNwbGF5VHlwZSgpID09IE1lZGlhSGlkZUNs
b3NlZENhcHRpb25zQnV0dG9uOwotICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoY2FwdGlv
bnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6IFdLTWVk
aWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoY2FwdGlvbnNWaXNpYmxlID8gV0tNZWRpYVVJUGFydEhpZGVDbG9zZWRDYXB0
aW9uc0J1dHRvbiA6IFdLTWVkaWFVSVBhcnRTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24sIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhTXV0ZUJ1dHRvbjoKICAg
ICBjYXNlIE1lZGlhVW5NdXRlQnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVt
ZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGF1ZGlvRW5hYmxlZCA9IGJ0bi0+
ZGlzcGxheVR5cGUoKSA9PSBNZWRpYU11dGVCdXR0b247Ci0gICAgICAgICAgICB3a0RyYXdNZWRp
YVVJUGFydChhdWRpb0VuYWJsZWQgPyBXS01lZGlhVUlQYXJ0TXV0ZUJ1dHRvbiA6IFdLTWVkaWFV
SVBhcnRVbk11dGVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoYXVk
aW9FbmFibGVkID8gV0tNZWRpYVVJUGFydE11dGVCdXR0b24gOiBXS01lZGlhVUlQYXJ0VW5NdXRl
QnV0dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1p
bmVTdGF0ZShvKSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVBh
dXNlQnV0dG9uOgogICAgIGNhc2UgTWVkaWFQbGF5QnV0dG9uOgogICAgICAgICBpZiAoTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQqIGJ0biA9IHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50Kj4oby5ub2RlKCkpKSB7CiAgICAgICAgICAgICBib29sIGNhblBsYXkg
PSBidG4tPmRpc3BsYXlUeXBlKCkgPT0gTWVkaWFQbGF5QnV0dG9uOwotICAgICAgICAgICAgd2tE
cmF3TWVkaWFVSVBhcnQoY2FuUGxheSA/IFdLTWVkaWFVSVBhcnRQbGF5QnV0dG9uIDogV0tNZWRp
YVVJUGFydFBhdXNlQnV0dG9uLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KGNh
blBsYXkgPyBXS01lZGlhVUlQYXJ0UGxheUJ1dHRvbiA6IFdLTWVkaWFVSVBhcnRQYXVzZUJ1dHRv
biwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXdpbmRC
dXR0b246Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRSZXdpbmRCdXR0
b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0ZXJtaW5lU3Rh
dGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0UmV3aW5kQnV0
dG9uLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRlcm1pbmVT
dGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0U2Vla1RvUmVh
bHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgZGV0
ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla1RvUmVhbHRpbWVCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVNlZWtCYWNrQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0U2Vla0JhY2tCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCks
IHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVNl
ZWtGb3J3YXJkQnV0dG9uOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQYXJ0
U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwg
ciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlh
VUlQYXJ0U2Vla0ZvcndhcmRCdXR0b24sIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250
ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZWRpYVNsaWRlcjogewogICAgICAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
ID0gcGFyZW50TWVkaWFFbGVtZW50KG8pKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdW56b29t
ZWRSZWN0ID0gZ2V0VW56b29tZWRSZWN0QW5kQWRqdXN0Q3VycmVudENvbnRleHQobywgcGFpbnRJ
bmZvLCByKTsKLSAgICAgICAgICAgIHdrRHJhd01lZGlhU2xpZGVyVHJhY2socGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykp
OworICAgICAgICAgICAgd2tEcmF3TWVkaWFTbGlkZXJUcmFjayhwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLCB1bnpvb21lZFJlY3QsIG1lZGlhRWxlbWVudC0+cGVyY2VudExv
YWRlZCgpICogbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpLCBtZWRpYUVsZW1lbnQtPmN1cnJlbnRU
aW1lKCksIG1lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSwgZGV0ZXJtaW5lU3RhdGUobykpOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE1lZGlhU2xpZGVyVGh1bWI6
Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRUaW1lbGluZVNsaWRlclRo
dW1iLCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0
YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFRpbWVsaW5l
U2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRl
dGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydFZv
bHVtZVNsaWRlckNvbnRhaW5lciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXJDb250YWluZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZWRpYVZvbHVtZVNsaWRlcjoKLSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRp
YVVJUGFydFZvbHVtZVNsaWRlciwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRWb2x1bWVTbGlkZXIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRp
YVZvbHVtZVNsaWRlclRodW1iOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01lZGlhVUlQ
YXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgciwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0Vm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXI6Ci0gICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0
KFdLTWVkaWFVSVBhcnRGdWxsU2NyZWVuVm9sdW1lU2xpZGVyLCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICAgICAgd2tEcmF3
TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXIsIHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZWRpYUZ1bGxTY3JlZW5Wb2x1bWVTbGlkZXJUaHVtYjoK
LSAgICAgICAgd2tEcmF3TWVkaWFVSVBhcnQoV0tNZWRpYVVJUGFydEZ1bGxTY3JlZW5Wb2x1bWVT
bGlkZXJUaHVtYiwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBkZXRl
cm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVkaWFVSVBhcnRG
dWxsU2NyZWVuVm9sdW1lU2xpZGVyVGh1bWIsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1D
b250ZXh0KCksIHIsIGRldGVybWluZVN0YXRlKG8pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOgotICAgICAgICB3a0RyYXdNZWRpYVVJUGFydChXS01l
ZGlhVUlQYXJ0QmFja2dyb3VuZCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgICAgIHdrRHJhd01lZGlhVUlQYXJ0KFdLTWVk
aWFVSVBhcnRCYWNrZ3JvdW5kLCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgp
LCByLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFD
dXJyZW50VGltZURpc3BsYXk6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXgg
N2UxZmQ1YjRjNGY2N2Y4MzYxNzZhMjVkMTFkNDk5OWM3ZWY3OGIyYi4uNTljNjNjMGEwYmMyZjVk
MTJiZjFjMjRhMjVjNzY0OGY2NThkMjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC01NzAsNyArNTcwLDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Zmxvd1RocmVhZFBvcnRpb25PdmVyZmxvd1JlY3Qo
Y29uc3QgTGF5b3V0UmVjdCYKIAogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1
bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zm
c2V0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQor
ICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKiBmbG93VGhyZWFkID0g
bXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG8KICAgICBpZiAoY29sQ291bnQgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4
dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxpYXNMaW5lcyhwYWludEluZm8u
Y29udGV4dCgpKTsKIAogICAgIGlmIChmbG93VGhyZWFkLT5wcm9ncmVzc2lvbklzSW5saW5lKCkp
IHsKICAgICAgICAgYm9vbCBsZWZ0VG9SaWdodCA9IHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIF4gZmxvd1RocmVhZC0+cHJvZ3Jlc3Npb25Jc1JldmVyc2VkKCk7CkBAIC02MTcsNyAr
NjE3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cGFpbnRDb2x1bW5SdWxlcyhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgICAgICAgICBMYXlvdXRV
bml0IHJ1bGVUb3AgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcGFpbnRPZmZzZXQueSgp
ICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBwYWludE9mZnNldC55KCkgKyBydWxlTG9n
aWNhbExlZnQgLSBydWxlVGhpY2tuZXNzIC8gMiArIHJ1bGVBZGQ7CiAgICAgICAgICAgICAgICAg
TGF5b3V0VW5pdCBydWxlQm90dG9tID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJ1bGVU
b3AgKyBjb250ZW50SGVpZ2h0KCkgOiBydWxlVG9wICsgcnVsZVRoaWNrbmVzczsKICAgICAgICAg
ICAgICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJ1bGVSZWN0ID0gc25hcHBlZEludFJlY3QocnVs
ZUxlZnQsIHJ1bGVUb3AsIHJ1bGVSaWdodCAtIHJ1bGVMZWZ0LCBydWxlQm90dG9tIC0gcnVsZVRv
cCk7Ci0gICAgICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29udGV4
dCwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJveFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAw
LCAwLCBhbnRpYWxpYXMpOworICAgICAgICAgICAgICAgIGRyYXdMaW5lRm9yQm94U2lkZShwYWlu
dEluZm8uY29udGV4dCgpLCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVsZUNvbG9y
LCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIHJ1bGVMb2dpY2FsTGVmdCA9IGN1cnJMb2dpY2FsTGVmdE9mZnNldDsK
QEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0OjpwYWludENvbHVt
blJ1bGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAxOyBpIDwgY29sQ291bnQ7IGkrKykgewogICAgICAgICAgICAgcnVsZVJl
Y3QubW92ZShzdGVwKTsKICAgICAgICAgICAgIEludFJlY3QgcGl4ZWxTbmFwcGVkUnVsZVJlY3Qg
PSBzbmFwcGVkSW50UmVjdChydWxlUmVjdCk7Ci0gICAgICAgICAgICBkcmF3TGluZUZvckJveFNp
ZGUoKnBhaW50SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRSdWxlUmVjdCwgYm94U2lkZSwgcnVs
ZUNvbG9yLCBydWxlU3R5bGUsIDAsIDAsIGFudGlhbGlhcyk7CisgICAgICAgICAgICBkcmF3TGlu
ZUZvckJveFNpZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcGl4ZWxTbmFwcGVkUnVsZVJlY3QsIGJv
eFNpZGUsIHJ1bGVDb2xvciwgcnVsZVN0eWxlLCAwLCAwLCBhbnRpYWxpYXMpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCA5NzllOWNmZjczYzJiZWQ5ZDA5NzM2YjhiYmM2YTE3NzBmZDMyNDdkLi5jODA1MWQ5MWEzZmEx
MmFlYWJhYWFlNmJhYzU2NGE5ZWZlNjYyMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcApAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojph
ZGRQREZVUkxSZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBocmVmID0gZG93bmNhc3Q8RWxlbWVudD4oKm5v
ZGUpLmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0VVJMRm9yUmVjdChub2RlLT5k
b2N1bWVudCgpLmNvbXBsZXRlVVJMKGhyZWYpLCBzbmFwcGVkSW50UmVjdCh1cmxSZWN0KSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRVUkxGb3JSZWN0KG5vZGUtPmRvY3VtZW50KCkuY29t
cGxldGVVUkwoaHJlZiksIHNuYXBwZWRJbnRSZWN0KHVybFJlY3QpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmlu
ZGV4IDhjOThiYmE4NTQ2MzYwZmEwMmVkNWNiNWFhNzdlMjU0YTBhZWYyOWQuLmZkMjA1MDRlYzNk
NWNjZTgxYWI2MTRhYTYyZDU1YmQ3MDcxNDM0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcApAQCAtMTc4LDEwICsxNzgsMTAgQEAgdm9pZCBSZW5kZXJS
ZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKICAgICAgICAgICAgIGNvbXBsZXRlbHlDbGlwcGVkT3V0ID0gdHJ1ZTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBQdXNoIGEgY2xpcCBpZiB3ZSBoYXZlIGEgYm9y
ZGVyIHJhZGl1cywgc2luY2Ugd2Ugd2FudCB0byByb3VuZCB0aGUgZm9yZWdyb3VuZCBjb250ZW50
IHRoYXQgZ2V0cyBwYWludGVkLgotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICAgICAg
RmxvYXRSb3VuZGVkUmVjdCByb3VuZGVkSW5uZXJSZWN0ID0gRmxvYXRSb3VuZGVkUmVjdChzdHls
ZSgpLmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3QsCiAgICAgICAgICAgICAgICAg
cGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCksIHBhZGRpbmdCb3R0b20oKSArIGJvcmRlckJvdHRv
bSgpLCBwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpLCBwYWRkaW5nUmlnaHQoKSArIGJvcmRl
clJpZ2h0KCksIHRydWUsIHRydWUpKTsKLSAgICAgICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0
KHBhaW50SW5mby5jb250ZXh0LCBwYWludFJlY3QsIHJvdW5kZWRJbm5lclJlY3QpOworICAgICAg
ICAgICAgY2xpcFJvdW5kZWRJbm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgcGFpbnRSZWN0
LCByb3VuZGVkSW5uZXJSZWN0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg5LDcgKzE4OSw3
IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIHBhaW50UmVwbGFjZWQocGFpbnRJ
bmZvLCBhZGp1c3RlZFBhaW50T2Zmc2V0KTsKIAogICAgICAgICBpZiAoc3R5bGUoKS5oYXNCb3Jk
ZXJSYWRpdXMoKSkKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICB9CiAgICAgICAg
IAogICAgIC8vIFRoZSBzZWxlY3Rpb24gdGludCBuZXZlciBnZXRzIGNsaXBwZWQgYnkgYm9yZGVy
LXJhZGl1cyByb3VuZGluZywgc2luY2Ugd2Ugd2FudCBpdCB0byBydW4gcmlnaHQgdXAgdG8gdGhl
IGVkZ2VzIG9mCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQo
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAg
ICBpZiAoZHJhd1NlbGVjdGlvblRpbnQpIHsKICAgICAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25Q
YWludGluZ1JlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAgICAgc2VsZWN0aW9uUGFp
bnRpbmdSZWN0Lm1vdmVCeShhZGp1c3RlZFBhaW50T2Zmc2V0KTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblBhaW50aW5nUmVjdCks
IHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2VsZWN0aW9u
UGFpbnRpbmdSZWN0KSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
aWNhLmNwcAppbmRleCAzNzcyMGZlMzg5YzE5MzZjOGRlMjY1ZGM2ZWM0YTFmYmNkMjA3MzNmLi42
MWQwYTE3YjM4YTE5OGQyZmNkZjBlMDZkYWI0MjdlMjYyMTJkOWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgUmVu
ZGVyUmVwbGljYTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAgICAgUmVuZGVyTGF5ZXIqIHJvb3RQYWludGluZ0xheWVyID0g
bGF5ZXIoKS0+dHJhbnNmb3JtKCkgPyBsYXllcigpLT5wYXJlbnQoKSA6IGxheWVyKCktPmVuY2xv
c2luZ1RyYW5zZm9ybWVkQW5jZXN0b3IoKTsKICAgICAgICAgUmVuZGVyTGF5ZXI6OkxheWVyUGFp
bnRpbmdJbmZvIHBhaW50aW5nSW5mbyhyb290UGFpbnRpbmdMYXllciwgcGFpbnRJbmZvLnJlY3Qs
IFBhaW50QmVoYXZpb3JOb3JtYWwsIExheW91dFNpemUoKSwgMCk7CiAgICAgICAgIFJlbmRlckxh
eWVyOjpQYWludExheWVyRmxhZ3MgZmxhZ3MgPSBSZW5kZXJMYXllcjo6UGFpbnRMYXllckhhdmVU
cmFuc3BhcmVuY3kgfCBSZW5kZXJMYXllcjo6UGFpbnRMYXllckFwcGxpZWRUcmFuc2Zvcm0gfCBS
ZW5kZXJMYXllcjo6UGFpbnRMYXllclRlbXBvcmFyeUNsaXBSZWN0cyB8IFJlbmRlckxheWVyOjpQ
YWludExheWVyUGFpbnRpbmdSZWZsZWN0aW9uOwotICAgICAgICBsYXllcigpLT5wYXJlbnQoKS0+
cGFpbnRMYXllcihwYWludEluZm8uY29udGV4dCwgcGFpbnRpbmdJbmZvLCBmbGFncyk7CisgICAg
ICAgIGxheWVyKCktPnBhcmVudCgpLT5wYWludExheWVyKHBhaW50SW5mby5jb250ZXh0KCksIHBh
aW50aW5nSW5mbywgZmxhZ3MpOwogICAgIH0gZWxzZSBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VNYXNrKQogICAgICAgICBwYWludE1hc2socGFpbnRJbmZvLCBhZGp1c3RlZFBhaW50
T2Zmc2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5j
cHAKaW5kZXggYzM2NDEwZDU3MjA1MjJlMWRiOWYyNGY4MDA4OTM2MDgwNTU5OTg0Ny4uMjc3ZGFj
OGRmYTRjYzNhMzNlZWFkZDI3ZTFmMWU4MzYyYjNjNjAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKQEAgLTEwMiw5ICsxMDIsOSBAQCB2b2lkIFJl
bmRlclNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKCkKICAgICB1cGRhdGVTY3JvbGxiYXJQYXJ0cygp
OwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkK
IHsKLSAgICBpZiAoY29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgeworICAgIGlmIChj
b250ZXh0LnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAgICAgICAgdXBkYXRlU2Nyb2xsYmFy
UGFydHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lk
IFJlbmRlclNjcm9sbGJhcjo6dXBkYXRlU2Nyb2xsYmFyUGFydChTY3JvbGxiYXJQYXJ0IHBhcnRU
eXBlKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQoR3JhcGhpY3ND
b250ZXh0JiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcGFydFJlbmRlcmVyID0g
bV9wYXJ0cy5nZXQocGFydFR5cGUpOwogICAgIGlmICghcGFydFJlbmRlcmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IGY2Yzg1Yzk3N2MwYjRiZmQz
ZWZiNjk4YWRiYmFjZGQwMDA3OTdkNDYuLmYyN2VjMDNiYmIwOTA3ODBkNDJlMzQ3YjZjMjNhYTRk
NmQ4YzA0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
QEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyQm94KiBvd25pbmdSZW5kZXJl
cigpIGNvbnN0OwogCi0gICAgdm9pZCBwYWludFBhcnQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyUGFydCwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRQYXJ0KEdyYXBoaWNzQ29u
dGV4dCYsIFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3QmKTsKIAogICAgIEludFJlY3QgYnV0
dG9uUmVjdChTY3JvbGxiYXJQYXJ0KTsKICAgICBJbnRSZWN0IHRyYWNrUmVjdChpbnQgc3RhcnRM
ZW5ndGgsIGludCBlbmRMZW5ndGgpOwpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkUGFydChT
Y3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc3NlZFBhcnQo
U2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMWQ3MWE4OWIxY2NkOTg1ZDI2M2ZjMmUyYTBl
NTM4Nzc4OTI1MzkwMy4uMGNiZWMwZmM5MzRmMTZlZGVmMTQ1MGQ4NTA0NzQwNTJhN2RmMDk5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cApAQCAtMTU1LDIzICsxNTUsMjMgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0KiByZWMKICAgICB9CiB9
CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9S
ZWN0KEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJl
IG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0LgogICAgIHNldExvY2F0aW9uKHJlY3QubG9j
YXRpb24oKSAtIHRvTGF5b3V0U2l6ZShwYWludE9mZnNldCkpOwogICAgIHNldFdpZHRoKHJlY3Qu
d2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpOwogCi0gICAgaWYgKGdyYXBo
aWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFzdHlsZSgpLm9wYWNpdHkoKSkKKyAg
ICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSB8fCAhc3R5bGUoKS5vcGFj
aXR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIGRvbid0IHVzZSBSZW5kZXJMYXll
cnMgZm9yIHNjcm9sbGJhciBwYXJ0cywgc28gd2UgbmVlZCB0byBoYW5kbGUgb3BhY2l0eSBoZXJl
LgogICAgIC8vIE9wYWNpdHkgZm9yIFNjcm9sbGJhckJHUGFydCBpcyBoYW5kbGVkIGJ5IFJlbmRl
clNjcm9sbGJhclRoZW1lOjp3aWxsUGFpbnRTY3JvbGxiYXIoKS4KICAgICBib29sIG5lZWRzVHJh
bnNwYXJlbmN5TGF5ZXIgPSBtX3BhcnQgIT0gU2Nyb2xsYmFyQkdQYXJ0ICYmIHN0eWxlKCkub3Bh
Y2l0eSgpIDwgMTsKICAgICBpZiAobmVlZHNUcmFuc3BhcmVuY3lMYXllcikgewotICAgICAgICBn
cmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGlwKHJl
Y3QpOwotICAgICAgICBncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5
bGUoKS5vcGFjaXR5KCkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2F2ZSgpOworICAgICAg
ICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmJl
Z2luVHJhbnNwYXJlbmN5TGF5ZXIoc3R5bGUoKS5vcGFjaXR5KCkpOwogICAgIH0KICAgICAKICAg
ICAvLyBOb3cgZG8gdGhlIHBhaW50LgpAQCAtMTg3LDggKzE4Nyw4IEBAIHZvaWQgUmVuZGVyU2Ny
b2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QKICAgICBwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKIAogICAgIGlmIChu
ZWVkc1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7Cisg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBn
cmFwaGljc0NvbnRleHQucmVzdG9yZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKaW5kZXggN2E3MWZhNzM5ZjhkODUxMWM0
OTRhMDA0YTQzOTMzNzJmMTM0MzFjYS4uODY1OTkxNDJhOWZjYmFlMmM1OGU4NWIwZDBkYjE4Mjdk
YWQ5YWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBsYXlv
dXQoKSBvdmVycmlkZTsKICAgICAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0Jik7CisgICAgdm9pZCBw
YWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3Qg
TGF5b3V0UmVjdCYpOwogCiAgICAgLy8gU2Nyb2xsYmFyIHBhcnRzIG5lZWRzIHRvIGJlIHJlbmRl
cmVkIGF0IGRldmljZSBwaXhlbCBib3VuZGFyaWVzLgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBt
YXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdp
bkJveC50b3AoKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3gudG9wKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDA5ZDk2NTIx
OGU4NzVlZDY3NGE0YmNhMzcyZjhiOWI1ZWEyODM3OGEuLmRiNTI4OGZkYzVlNTUyNmE0M2YwYWJl
ZmI5N2Q5NmNmZDRkMDg2ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMTI1LDM1ICsxMjUsMzUgQEAgdm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6ZGlkUGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBTY3JvbGxiYXIKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNj
cm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCi0gICAgY29u
dGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICBjb250ZXh0LmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29s
b3JTcGFjZURldmljZVJHQik7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFNjcm9sbGJhciYg
c2Nyb2xsYmFyKQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5w
YWludFBhcnQoJmNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgp
KTsKKyAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KGNv
bnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Nyb2xsYmFyLmZyYW1lUmVjdCgpKTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZj
b250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFy
PihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAK
IHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIFNjcm9sbGJhciYgc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCiB7Ci0gICAgZG93bmNhc3Q8UmVuZGVyU2Nyb2xsYmFyPihzY3Jv
bGxiYXIpLnBhaW50UGFydCgmY29udGV4dCwgcGFydCwgcmVjdCk7CisgICAgZG93bmNhc3Q8UmVu
ZGVyU2Nyb2xsYmFyPihzY3JvbGxiYXIpLnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsK
IH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQogewotICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4oc2Ny
b2xsYmFyKS5wYWludFBhcnQoJmNvbnRleHQsIHBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJl
bmRlclNjcm9sbGJhcj4oc2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVjdCk7
CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
IHsKLSAgICBkb3duY2FzdDxSZW5kZXJTY3JvbGxiYXI+KHNjcm9sbGJhcikucGFpbnRQYXJ0KCZj
b250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOworICAgIGRvd25jYXN0PFJlbmRlclNjcm9sbGJhcj4o
c2Nyb2xsYmFyKS5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNDdm
MGY4MDMzZWIwOTRjMDRkMTk0M2FlZjY3ODQxZWY5NjQxODIwOC4uZjdlNDE5ZDA1YTFiNDMxNDc3
Y2Q1NTUyZjhjNmRjMzBkYzllOWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNo
b3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAppbmRleCA0NTVmY2U4OTI5ZDA1ZjJlYTEwMTNmNzNlN2ZlM2ViYjdkOTQ5
OThlLi5iZDFhOWQ1MWQyNWIzZDg5YzQxYTA5MTAyOWE4OTM0ZTFkZDY0NTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
QEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNu
YXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgIGlmICghY1dp
ZHRoIHx8ICFjSGVpZ2h0KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZShj
V2lkdGgsIGNIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRMb2NhdGlvbiA9IGxvY2F0
aW9uKCkgKyBwYWludE9mZnNldDsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFJlbmRlclNuYXBz
aG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQbwogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCiAgICAgb3JpZW50YXRp
b25EZXNjcmlwdGlvbi5zZXRJbWFnZU9yaWVudGF0aW9uRW51bShzdHlsZSgpLmltYWdlT3JpZW50
YXRpb24oKSk7CiAjZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlKCku
Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRp
b25EZXNjcmlwdGlvbiwgdXNlTG93UXVhbGl0eVNjYWxpbmcpKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZShpbWFnZSwgc3R5bGUoKS5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCB1c2VMb3dRdWFsaXR5U2NhbGluZykp
OwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmdldEN1cnNv
cihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJpZGVDdXJzb3IpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBjNzBhNGQxMjAw
N2E4NDI3YzI5YzI1NDYyNTdkMzVhMzA1NzMyMGE2Li40ODU1OTVhMWI4MDY0YTYzMmY5Zjg1MzQ0
ZDljZTFmOGQ2Mzk2ZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHAKQEAgLTc0OSw3ICs3NDksNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcAogICAgIExheW91
dFJlY3QgcmVjdChwYWludE9mZnNldCwgc2l6ZSgpKTsKICAgICBzdWJ0cmFjdENhcHRpb25SZWN0
KHJlY3QpOwogCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlID0g
ZGV0ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKHBhaW50SW5mby5jb250ZXh0KTsKKyAg
ICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UgPSBkZXRlcm1pbmVCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFib3hT
aGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQocmVjdC5sb2NhdGlvbigpLCBibGVlZEF2
b2lkYW5jZSkpCiAgICAgICAgIHBhaW50Qm94U2hhZG93KHBhaW50SW5mbywgcmVjdCwgc3R5bGUo
KSwgTm9ybWFsKTsKICAgICBwYWludEJhY2tncm91bmQocGFpbnRJbmZvLCByZWN0LCBibGVlZEF2
b2lkYW5jZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CmluZGV4IDE3ZTVhYzQ1NDBiNDczYmFlNmZhNmY5YjU3NTM2ZTRjNDM0ZDg2NTcuLjExNWZmYzc5
NzQ4NmI3OWE5ZmNjNDhjOGI3YzA4NjljNmM3Y2Q4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC0xMjAxLDggKzEyMDEsOCBAQCB2b2lkIFJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogICAgIGlmIChwYWludFJlY3QubWF4WSgpICsgdGFibGUoKS0+b3V0
ZXJCb3JkZXJCb3R0b20oKSA8PSBsb2NhbFJlcGFpbnRSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBpZiAoIXRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNz
Q29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBpZiAoIXRhYmxlKCktPmN1cnJl
bnRCb3JkZXJWYWx1ZSgpIHx8IGdyYXBoaWNzQ29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZUZvckNlbGxGbG93
ID0gdGhpcy0+c3R5bGVGb3JDZWxsRmxvdygpOwpAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG8KICAgICAKICAgICBmb3IgKENvbGxhcHNlZEJvcmRlciogYm9yZGVy
ID0gYm9yZGVycy5uZXh0Qm9yZGVyKCk7IGJvcmRlcjsgYm9yZGVyID0gYm9yZGVycy5uZXh0Qm9y
ZGVyKCkpIHsKICAgICAgICAgaWYgKGJvcmRlci0+Ym9yZGVyVmFsdWUuaXNTYW1lSWdub3JpbmdD
b2xvcigqdGFibGUoKS0+Y3VycmVudEJvcmRlclZhbHVlKCkpKQotICAgICAgICAgICAgZHJhd0xp
bmVGb3JCb3hTaWRlKCpncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdChGbG9hdFBvaW50KGJvcmRl
ci0+eDEsIGJvcmRlci0+eTEpLCBGbG9hdFBvaW50KGJvcmRlci0+eDIsIGJvcmRlci0+eTIpKSwg
Ym9yZGVyLT5zaWRlLAorICAgICAgICAgICAgZHJhd0xpbmVGb3JCb3hTaWRlKGdyYXBoaWNzQ29u
dGV4dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoYm9yZGVyLT54MSwgYm9yZGVyLT55MSksIEZsb2F0
UG9pbnQoYm9yZGVyLT54MiwgYm9yZGVyLT55MikpLCBib3JkZXItPnNpZGUsCiAgICAgICAgICAg
ICAgICAgYm9yZGVyLT5ib3JkZXJWYWx1ZS5jb2xvcigpLCBib3JkZXItPnN0eWxlLCAwLCAwLCBh
bnRpYWxpYXMpOwogICAgIH0KIH0KQEAgLTEyNzUsMTEgKzEyNzUsMTEgQEAgdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXkKICAgICAgICAgLy8gV2UgaGF2ZSB0byBjbGlwIGhlcmUgYmVjYXVzZSB0aGUg
YmFja2dyb3VuZCB3b3VsZCBwYWludAogICAgICAgICAvLyBvbiB0b3Agb2YgdGhlIGJvcmRlcnMg
b3RoZXJ3aXNlLiAgVGhpcyBvbmx5IG1hdHRlcnMgZm9yIGNlbGxzIGFuZCByb3dzLgogICAgICAg
ICBib29sIHNob3VsZENsaXAgPSBiYWNrZ3JvdW5kT2JqZWN0LT5oYXNMYXllcigpICYmIChiYWNr
Z3JvdW5kT2JqZWN0ID09IHRoaXMgfHwgYmFja2dyb3VuZE9iamVjdCA9PSBwYXJlbnQoKSkgJiYg
dGFibGVFbHQtPmNvbGxhcHNlQm9yZGVycygpOwotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0LCBzaG91bGRDbGlwKTsKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0
KCksIHNob3VsZENsaXApOwogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
TGF5b3V0UmVjdCBjbGlwUmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJvcmRlckxlZnQo
KSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSwKICAgICAgICAgICAgICAg
ICB3aWR0aCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKSwgaGVpZ2h0KCkgLSBib3Jk
ZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChj
bGlwUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywg
YywgYmdMYXllciwgTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzbmFwcGVkSW50UmVj
dChmcmFtZVJlY3QoKSkuc2l6ZSgpKSwgQmFja2dyb3VuZEJsZWVkTm9uZSwgQ29tcG9zaXRlU291
cmNlT3ZlciwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBjOTEwYWI2ZjZhYjA2OWJhNGI2
MzI1MjI0ZmVhMDAxMmM0NmY3ZTUzLi4zZTlkOGE1ZmIxY2FiYzkxMGQyODRkYTE1ZjNkZDcwZTRj
NmFjOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0
aW9uLmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBh
aW50Um93R3JvdXBCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGJvb2wgYW4KICAg
ICByZWN0LmludGVyc2VjdChwYWludEluZm8ucmVjdCk7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29u
dGV4dCwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoYm9yZGVyQ29s
b3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKKyAgICBkcmF3TGluZUZvckJveFNp
ZGUocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVjdCwgc2lkZSwgc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoYm9yZGVyQ29sb3IpLCBib3JkZXJTdHlsZSwgMCwgMCwgYW50aWFsaWFzKTsKIH0K
IAogaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6b2Zmc2V0TGVmdEZvclJvd0dyb3VwQm9yZGVyKFJl
bmRlclRhYmxlQ2VsbCogY2VsbCwgY29uc3QgTGF5b3V0UmVjdCYgcm93R3JvdXBSZWN0LCB1bnNp
Z25lZCByb3cpCkBAIC0xMTY5LDExICsxMTY5LDExIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9u
OjpwYWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5m
CiB7CiAgICAgaWYgKHRhYmxlKCktPmN1cnJlbnRCb3JkZXJWYWx1ZSgpLT5wcmVjZWRlbmNlKCkg
PiBCUk9XR1JPVVApCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSA9IHRoaXMtPnN0eWxlKCk7Ci0gICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRBbnRpYWxp
YXNMaW5lcyhwYWludEluZm8uY29udGV4dCk7CisgICAgYm9vbCBhbnRpYWxpYXMgPSBzaG91bGRB
bnRpYWxpYXNMaW5lcyhwYWludEluZm8uY29udGV4dCgpKTsKICAgICBMYXlvdXRSZWN0IHJvd0dy
b3VwUmVjdCA9IExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUoKSk7CiAgICAgcm93R3JvdXBS
ZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQob3V0ZXJCb3JkZXJMZWZ0KCZzdHlsZSksIChib3JkZXJT
aWRlID09IEJTUmlnaHQpID8gMCA6IG91dGVyQm9yZGVyVG9wKCZzdHlsZSkpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggN2EyYjk3NmNkNjk5MmJlNTJi
NjAwZjYwYmRiNDA2ZjVmZTY0YzEwYy4uZGNhYzRmYTczMTZlYzM1YjBlNjFiYzIwMGQ4MjIxZWE2
MDIzZTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0y
NjcsMTIgKzI2NywxMiBAQCBib29sIFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gm
IGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0YXRlcywgY29ucwogICAgIC8vIElmIHBhaW50
aW5nIGlzIGRpc2FibGVkLCBidXQgd2UgYXJlbid0IHVwZGF0aW5nIGNvbnRyb2wgdGludHMsIHRo
ZW4ganVzdCBiYWlsLgogICAgIC8vIElmIHdlIGFyZSB1cGRhdGluZyBjb250cm9sIHRpbnRzLCBq
dXN0IHNjaGVkdWxlIGEgcmVwYWludCBpZiB0aGUgdGhlbWUgc3VwcG9ydHMgdGludGluZwogICAg
IC8vIGZvciB0aGF0IGNvbnRyb2wuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT51cGRhdGlu
Z0NvbnRyb2xUaW50cygpKSB7CisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkudXBkYXRpbmdD
b250cm9sVGludHMoKSkgewogICAgICAgICBpZiAoY29udHJvbFN1cHBvcnRzVGludHMoYm94KSkK
ICAgICAgICAgICAgIGJveC5yZXBhaW50KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBDb250cm9sUGFydCBwYXJ0ID0gYm94LnN0eWxlKCkuYXBwZWFyYW5jZSgp
OwpAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50KGNvbnN0IFJlbmRl
ckJveCYgYm94LCBDb250cm9sU3RhdGVzJiBjb250cm9sU3RhdGVzLCBjb25zCiAgICAgY2FzZSBC
dXR0b25QYXJ0OgogICAgIGNhc2UgSW5uZXJTcGluQnV0dG9uUGFydDoKICAgICAgICAgdXBkYXRl
Q29udHJvbFN0YXRlc0ZvclJlbmRlcmVyKGJveCwgY29udHJvbFN0YXRlcyk7Ci0gICAgICAgIG1f
dGhlbWUtPnBhaW50KHBhcnQsIGNvbnRyb2xTdGF0ZXMsIGNvbnN0X2Nhc3Q8R3JhcGhpY3NDb250
ZXh0Kj4ocGFpbnRJbmZvLmNvbnRleHQpLCBkZXZpY2VQaXhlbFNuYXBwZWRSZWN0LCBib3guc3R5
bGUoKS5lZmZlY3RpdmVab29tKCksICZib3gudmlldygpLmZyYW1lVmlldygpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgcGFnZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgbV90aGVtZS0+cGFpbnQocGFydCwg
Y29udHJvbFN0YXRlcywgcGFpbnRJbmZvLmNvbnRleHQoKSwgZGV2aWNlUGl4ZWxTbmFwcGVkUmVj
dCwgYm94LnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCAmYm94LnZpZXcoKS5mcmFtZVZpZXcoKSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIHBhZ2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQxMSw3ICs0MTEsNyBAQCBib29s
IFJlbmRlclRoZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYg
Y29udHJvbFN0YXRlcywgY29ucwogCiBib29sIFJlbmRlclRoZW1lOjpwYWludEJvcmRlck9ubHko
Y29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdE
aXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtNDY1LDcg
KzQ2NSw3IEBAIGJvb2wgUmVuZGVyVGhlbWU6OnBhaW50Qm9yZGVyT25seShjb25zdCBSZW5kZXJC
b3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluCiAKIGJvb2wgUmVuZGVyVGhlbWU6OnBh
aW50RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogewotICAgIGlmIChwYWludEluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50UmVjdCBp
bnRlZ3JhbFNuYXBwZWRSZWN0ID0gc25hcHBlZEludFJlY3QocmVjdCk7CkBAIC0xMDUzLDggKzEw
NTMsOCBAQCB2b2lkIFJlbmRlclRoZW1lOjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludAogICAgICAgICB0aWNrUmVnaW9uV2lkdGgg
PSB0cmFja0JvdW5kcy5oZWlnaHQoKSAtIHRodW1iU2l6ZS53aWR0aCgpOwogICAgIH0KICAgICBS
ZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwotICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioby5zdHlsZSgpLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9yKG8uc3R5bGUoKS52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IE5vZGUqIG5vZGUgPSBvcHRpb25zLT5pdGVtKGkpOyBp
KyspIHsKICAgICAgICAgQVNTRVJUKGlzPEhUTUxPcHRpb25FbGVtZW50Pigqbm9kZSkpOwogICAg
ICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uRWxlbWVudCA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50Pigqbm9kZSk7CkBAIC0xMDY5LDcgKzEwNjksNyBAQCB2b2lkIFJlbmRlclRoZW1l
OjpwYWludFNsaWRlclRpY2tzKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYWludAogICAgICAgICAgICAgdGlja1JlY3Quc2V0WCh0aWNrUG9zaXRpb24pOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0aWNrUmVjdC5zZXRZKHRpY2tQb3NpdGlvbik7Ci0gICAgICAg
IHBhaW50SW5mby5jb250ZXh0LT5maWxsUmVjdCh0aWNrUmVjdCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZmlsbFJlY3QodGlja1JlY3QpOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggZDBmY2FkNjk2MjM0
YjNkZGVlNzI0NWNkOTg0ZGIwZTQ2OGFjNzlhYi4uYmFjMWQ2ZjIxMDBhNTk1N2YzMTAwMzRmOTM3
NWM5Y2E2NDY5ZjAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVF
ZmwuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVt
ZVBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIEZvcm1UeXBlIHR5cGUsIGMKICAgICBl
ZGplX29iamVjdF9tZXNzYWdlX3NpZ25hbF9wcm9jZXNzKGVudHJ5LT5lZGplKCkpOwogICAgIGV2
YXNfcmVuZGVyKGVjb3JlX2V2YXNfZ2V0KGVudHJ5LT5jYW52YXMoKSkpOwogCi0gICAgY2Fpcm9f
dCogY2Fpcm8gPSBpbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworICAgIGNh
aXJvX3QqIGNhaXJvID0gaW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAg
ICAgQVNTRVJUKGNhaXJvKTsKIAogICAgIGNhaXJvX3NhdmUoY2Fpcm8pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMTg2Yjc2MDE0OWU2YWVlNjBj
MGRhY2I3NDIyZTkwNTc0Mjg3NjFiMS4uZmVmYmIyNGI1NjQ4MjRlMzQ2MzljNTE5MDllZDNmMDZj
N2QzOTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3Bw
CkBAIC01MjYsMTYgKzUyNiwxNiBAQCBzdGF0aWMgdm9pZCBwYWludFRvZ2dsZShjb25zdCBSZW5k
ZXJUaGVtZUd0ayogdGhlbWUsIEdUeXBlIHdpZGdldFR5cGUsIGNvbnN0IFJlbgogICAgIGd0a19z
dHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZsYWdz
PihmbGFncykpOwogCiAgICAgaWYgKHdpZGdldFR5cGUgPT0gR1RLX1RZUEVfQ0hFQ0tfQlVUVE9O
KQotICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2NoZWNrKGNvbnRleHQsIHBhaW50
SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKICAgICBlbHNlCi0gICAgICAgIGd0a19y
ZW5kZXJfb3B0aW9uKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgICAgICBndGtfcmVuZGVyX29wdGlvbihjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgp
LnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmpl
Y3QpKSB7CiAgICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdChyZWN0KTsKICAgICAgICAgZ2lu
dCBpbmRpY2F0b3JTcGFjaW5nOwogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUo
Y29udGV4dCwgImluZGljYXRvci1zcGFjaW5nIiwgJmluZGljYXRvclNwYWNpbmcsIG51bGxwdHIp
OwogICAgICAgICBpbmRpY2F0b3JSZWN0LmluZmxhdGUoaW5kaWNhdG9yU3BhY2luZyk7Ci0gICAg
ICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCBpbmRpY2F0b3JSZWN0LngoKSwgaW5kaWNhdG9yUmVjdC55KCksCisg
ICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaW5kaWNhdG9yUmVjdC54KCksIGluZGljYXRvclJlY3QueSgp
LAogICAgICAgICAgICAgaW5kaWNhdG9yUmVjdC53aWR0aCgpLCBpbmRpY2F0b3JSZWN0LmhlaWdo
dCgpKTsKICAgICB9CiAKQEAgLTU5NCw4ICs1OTQsOCBAQCBzdGF0aWMgdm9pZCByZW5kZXJCdXR0
b24oUmVuZGVyVGhlbWUqIHRoZW1lLCBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJl
bgogICAgICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxF
X0NMQVNTX0RFRkFVTFQpOwogICAgIH0KIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJl
Y3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgp
LCBidXR0b25SZWN0LndpZHRoKCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5k
ZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4
dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lk
dGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0
LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWln
aHQoKSk7CiAKICAgICBpZiAodGhlbWUtPmlzRm9jdXNlZChyZW5kZXJPYmplY3QpKSB7CiAgICAg
ICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7CkBAIC02MjcsNyArNjI3LDcgQEAgc3RhdGlj
IHZvaWQgcmVuZGVyQnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBSZW4KICAgICAgICAgICAgIGJ1dHRvblJlY3QubW92ZShjaGlsZERpc3Bs
YWNlbWVudFgsIGNoaWxkRGlzcGxhY2VtZW50WSk7CiAgICAgICAgIH0KIAotICAgICAgICBndGtf
cmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRo
KCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRl
eHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJl
Y3QueCgpLCBidXR0b25SZWN0LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0Lmhl
aWdodCgpKTsKICAgICB9CiB9CiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludEJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC03NDQsNyArNzQ0LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29u
c3QgUGFpbnQKICAgICAvLyBGSVhNRTogYWRvcHQgc3VicGl4ZWwgdGhlbWVzLgogICAgIEludFJl
Y3QgcmVjdCA9IEludFJlY3Qocik7CiAKLSAgICBjYWlyb190KiBjYWlyb0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CisgICAgY2Fpcm9fdCogY2Fp
cm9Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsK
ICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PEd0a1RleHREaXJl
Y3Rpb24+KGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkp
KTsKIAogICAgIC8vIFBhaW50IHRoZSBidXR0b24uCkBAIC04ODAsOCArODgwLDggQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJP
YmplY3QsIGNvbnN0IFBhaW4KICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfRk9DVVNF
RDsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8
R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVy
X2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3Io
KSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAg
IGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVj
dCkgJiYgaXNFbmFibGVkKHJlbmRlck9iamVjdCkpIHsKICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJp
b3JGb2N1czsKQEAgLTg5MCw3ICs4OTAsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRl
eHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbgogICAg
ICAgICBpZiAoIWludGVyaW9yRm9jdXMpIHsKICAgICAgICAgICAgIEludFJlY3QgZm9jdXNSZWN0
KHJlY3QpOwogICAgICAgICAgICAgZm9jdXNSZWN0LmluZmxhdGUoZm9jdXNXaWR0aCArIGZvY3Vz
UGFkKTsKLSAgICAgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3Qu
eSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAg
IGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNv
bnRleHQoKS0+Y3IoKSwgZm9jdXNSZWN0LngoKSwgZm9jdXNSZWN0LnkoKSwgZm9jdXNSZWN0Lndp
ZHRoKCksIGZvY3VzUmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkwNCw3
ICs5MDQsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjbwogICAgIHJldHVybiBwYWludFRleHRG
aWVsZChvLCBpLCByKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGlj
b25SZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnN0IEludFJlY3QmIGljb25SZWN0KQogewog
ICAgIEludFNpemUgaWNvblNpemUoZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgoaWNvbiksIGdka19waXhi
dWZfZ2V0X2hlaWdodChpY29uKSk7CiAgICAgR1JlZlB0cjxHZGtQaXhidWY+IHNjYWxlZEljb247
CkBAIC05MTQsNyArOTE0LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHZGtQaXhidWYoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBHZGtQaXhidWYqIGljb24sIGNvbnMKICAgICAgICAgaWNv
biA9IHNjYWxlZEljb24uZ2V0KCk7CiAgICAgfQogCi0gICAgY2Fpcm9fdCogY3IgPSBjb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190KiBjciA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAgICAgZ2RrX2NhaXJv
X3NldF9zb3VyY2VfcGl4YnVmKGNyLCBpY29uLCBpY29uUmVjdC54KCksIGljb25SZWN0LnkoKSk7
CiAgICAgY2Fpcm9fcGFpbnQoY3IpOwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUd0azo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFydChjb25zdCBSZW5k
ZXJPYmplY3QmIHIKICAgICAgICAgZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3Quc3R5bGUo
KS5kaXJlY3Rpb24oKSksCiAgICAgICAgIGd0a0ljb25TdGF0ZSh0aGlzLCByZW5kZXJPYmplY3Qp
LAogICAgICAgICBnZXRJY29uU2l6ZUZvclBpeGVsU2l6ZShyZWN0LmhlaWdodCgpKSk7Ci0gICAg
cGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQsIGljb24uZ2V0KCksIGljb25SZWN0KTsK
KyAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCgpLCBpY29uLmdldCgpLCBpY29u
UmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDI3LDcgKzEwMjcsNyBAQCBib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyT2JqZQogICAgICAgICBndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVj
dC5zdHlsZSgpLmRpcmVjdGlvbigpKSwKICAgICAgICAgZ3RrSWNvblN0YXRlKHRoaXMsIHJlbmRl
ck9iamVjdCksCiAgICAgICAgIGdldEljb25TaXplRm9yUGl4ZWxTaXplKHJlY3QuaGVpZ2h0KCkp
KTsKLSAgICBwYWludEdka1BpeGJ1ZihwYWludEluZm8uY29udGV4dCwgaWNvbi5nZXQoKSwgaWNv
blJlY3QpOworICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0KCksIGljb24uZ2V0
KCksIGljb25SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTEwNDcsNyArMTA0Nyw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiB7CiAgICAgLy8gVGhlIG90aGVyIHBhaW50IG1l
dGhvZHMgZG9uJ3QgbmVlZCB0byBjaGVjayB3aGV0aGVyIHBhaW50aW5nIGlzIGRpc2FibGVkIGJl
Y2F1c2UgUmVuZGVyVGhlbWUgYWxyZWFkeSBjaGVja3MgaXQKICAgICAvLyBiZWZvcmUgY2FsbGlu
ZyB0aGVtLCBidXQgcGFpbnRDYXBzTG9ja0luZGljYXRvcigpIGlzIGNhbGxlZCBieSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUgd2hpY2ggZG9lc24ndCBjaGVjayBpdC4KLSAgICBpZiAocGFp
bnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNv
bnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
aW50IGljb25TaXplID0gc3RkOjptaW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKQEAg
LTEwNjMsNyArMTA2Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50Q2Fwc0xvY2tJbmRp
Y2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvCiAgICAgICAgIHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpIC0gaWNvblNpemUsCiAgICAgICAgIHJlY3QueSgpICsgKHJlY3Qu
aGVpZ2h0KCkgLSBpY29uU2l6ZSkgLyAyLAogICAgICAgICBpY29uU2l6ZSwgaWNvblNpemUpOwot
ICAgIHBhaW50R2RrUGl4YnVmKHBhaW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVj
dCk7CisgICAgcGFpbnRHZGtQaXhidWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwg
aWNvblJlY3QpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTAyLDE1ICsxMTAyLDE1IEBA
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVyT2JqZWN0
KSkKICAgICAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRlKGNvbnRleHQsIEdUS19TVEFU
RV9GTEFHX0lOU0VOU0lUSVZFKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0
LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBndGtfcmVuZGVyX2Zy
YW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
cmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0
a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKICAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVjdCkp
IHsKICAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKICAgICAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsICJmb2N1cy1saW5lLXdpZHRoIiwgJmZvY3VzV2lk
dGgsICJmb2N1cy1wYWRkaW5nIiwgJmZvY3VzUGFkLCBudWxscHRyKTsKICAgICAgICAgSW50UmVj
dCBmb2N1c1JlY3QocmVjdCk7CiAgICAgICAgIGZvY3VzUmVjdC5pbmZsYXRlKGZvY3VzV2lkdGgg
KyBmb2N1c1BhZCk7Ci0gICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1Jl
Y3QueSgpLCBmb2N1c1JlY3Qud2lkdGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAg
Z3RrX3JlbmRlcl9mb2N1cyhjb250ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLT5jcigpLCBmb2N1c1JlY3QueCgpLCBmb2N1c1JlY3QueSgpLCBmb2N1c1JlY3Qud2lk
dGgoKSwgZm9jdXNSZWN0LmhlaWdodCgpKTsKICAgICB9CiAKICAgICBndGtfc3R5bGVfY29udGV4
dF9yZXN0b3JlKGNvbnRleHQpOwpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGEKICAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfQUNUSVZFOwogICAgIGd0
a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtTdGF0ZUZs
YWdzPihmbGFncykpOwogCi0gICAgZ3RrX3JlbmRlcl9zbGlkZXIoY29udGV4dCwgcGFpbnRJbmZv
LmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKKyAgICBndGtfcmVuZGVyX3NsaWRlcihjb250ZXh0
LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwg
cmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwKICAgICAgICAgcGFydCA9PSBT
bGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwgOiBH
VEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9y
ZShjb250ZXh0KTsKQEAgLTExNzQsOCArMTE3NCw4IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBh
aW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
CiAKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NM
QVNTX1RST1VHSCk7CiAKLSAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCByZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgZ3RrX3JlbmRlcl9mcmFtZShjb250
ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHJlY3QueCgp
LCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBndGtfcmVuZGVy
X2JhY2tncm91bmQoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OworICAgIGd0a19yZW5kZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0
Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsK
IApAQCAtMTE5Myw3ICsxMTkzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVz
c0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBwcm9n
cmVzc1JlY3QgPSBSZW5kZXJUaGVtZUd0azo6Y2FsY3VsYXRlUHJvZ3Jlc3NSZWN0KHJlbmRlck9i
amVjdCwgcHJvZ3Jlc3NSZWN0KTsKIAogICAgIGlmICghcHJvZ3Jlc3NSZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgZ3RrX3JlbmRlcl9hY3Rpdml0eShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55
KCksIHByb2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOworICAgICAg
ICBndGtfcmVuZGVyX2FjdGl2aXR5KGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCktPmNyKCksIHByb2dyZXNzUmVjdC54KCksIHByb2dyZXNzUmVjdC55KCksIHBy
b2dyZXNzUmVjdC53aWR0aCgpLCBwcm9ncmVzc1JlY3QuaGVpZ2h0KCkpOwogCiAgICAgZ3RrX3N0
eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjU2
LDggKzEyNTYsOCBAQCBzdGF0aWMgdm9pZCBwYWludFNwaW5BcnJvd0J1dHRvbihSZW5kZXJUaGVt
ZSogdGhlbWUsIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgYwogICAgIGJ1dHRvblJlY3Quc2V0
SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyAyKTsKICAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfanVu
Y3Rpb25fc2lkZXMoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrSnVuY3Rpb25TaWRlcz4oanVuY3Rp
b24pKTsKIAotICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWludEluZm8uY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGJ1dHRvblJlY3QueCgpLCBidXR0b25SZWN0
LnkoKSwgYnV0dG9uUmVjdC53aWR0aCgpLCBidXR0b25SZWN0LmhlaWdodCgpKTsKLSAgICBndGtf
cmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+Y3IoKSwgYnV0dG9uUmVjdC54KCksIGJ1dHRvblJlY3QueSgpLCBidXR0b25SZWN0LndpZHRo
KCksIGJ1dHRvblJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250
ZXh0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25S
ZWN0LngoKSwgYnV0dG9uUmVjdC55KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5o
ZWlnaHQoKSk7CisgICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4
dCgpLnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBidXR0b25SZWN0LngoKSwgYnV0dG9uUmVjdC55
KCksIGJ1dHRvblJlY3Qud2lkdGgoKSwgYnV0dG9uUmVjdC5oZWlnaHQoKSk7CiAKICAgICAvLyBQ
YWludCBhcnJvdyBjZW50ZXJlZCBpbnNpZGUgYnV0dG9uLgogICAgIC8vIFRoaXMgY29kZSBpcyBi
YXNlZCBvbiBndGtzcGluYnV0dG9uLmMgY29kZS4KQEAgLTEyODMsNyArMTI4Myw3IEBAIHN0YXRp
YyB2b2lkIHBhaW50U3BpbkFycm93QnV0dG9uKFJlbmRlclRoZW1lKiB0aGVtZSwgR3RrU3R5bGVD
b250ZXh0KiBjb250ZXh0LCBjCiAgICAgZ2ludCBoZWlnaHQgPSAod2lkdGggKyAxKSAvIDI7CiAK
ICAgICBhcnJvd1JlY3QubW92ZSgoYXJyb3dSZWN0LndpZHRoKCkgLSB3aWR0aCkgLyAyLCAoYXJy
b3dSZWN0LmhlaWdodCgpIC0gaGVpZ2h0KSAvIDIpOwotICAgIGd0a19yZW5kZXJfYXJyb3coY29u
dGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBhbmdsZSwg
YXJyb3dSZWN0LngoKSwgYXJyb3dSZWN0LnkoKSwgd2lkdGgpOworICAgIGd0a19yZW5kZXJfYXJy
b3coY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwg
YW5nbGUsIGFycm93UmVjdC54KCksIGFycm93UmVjdC55KCksIHdpZHRoKTsKIAogICAgIGd0a19z
dHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiB9CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBT
dHJpbmcgUmVuZGVyVGhlbWVHdGs6OmV4dHJhRnVsbFNjcmVlblN0eWxlU2hlZXQoKQogfQogI2Vu
ZGlmCiAKLWJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJPYmplY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgY2hhciogc3ltYm9saWNJY29uTmFtZSwgY29uc3QgY2hhciogZmFs
bGJhY2tTdG9ja0ljb25OYW1lKQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYUJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBjaGFyKiBzeW1ib2xpY0ljb25OYW1lLCBj
b25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUpCiB7CiAgICAgSW50UmVjdCBpY29uUmVj
dCgKICAgICAgICAgcmVjdC54KCkgKyAocmVjdC53aWR0aCgpIC0gbV9tZWRpYUljb25TaXplKSAv
IDIsCkBAIC0xNDM2LDcgKzE0MzYsNyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpoYXNPd25EaXNh
YmxlZFN0YXRlSGFuZGxpbmdGb3IoQ29udHJvbFBhcnQgcGFydCkgY29uc3QKIAogYm9vbCBSZW5k
ZXJUaGVtZUd0azo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewotICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QsICJ2aWV3LWZ1bGxzY3JlZW4tc3ltYm9saWMiLCBHVEtfU1RP
Q0tfRlVMTFNDUkVFTik7CisgICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0
LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0LCAidmlldy1mdWxsc2NyZWVuLXN5bWJvbGljIiwg
R1RLX1NUT0NLX0ZVTExTQ1JFRU4pOwogfQogCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1l
ZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC0xNDQ2LDcgKzE0NDYs
NyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhTXV0ZUJ1dHRvbihjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIG11dGVkID0gbWVkaWFFbGVtZW50LT5tdXRlZCgpOwotICAgIHJldHVybiBwYWludE1l
ZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsCisgICAgcmV0
dXJuIHBhaW50TWVkaWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCgpLCBy
ZWN0LAogICAgICAgICBtdXRlZCA/ICJhdWRpby12b2x1bWUtbXV0ZWQtc3ltYm9saWMiIDogImF1
ZGlvLXZvbHVtZS1oaWdoLXN5bWJvbGljIiwKICAgICAgICAgbXV0ZWQgPyAiYXVkaW8tdm9sdW1l
LW11dGVkIiA6ICJhdWRpby12b2x1bWUtaGlnaCIpOwogfQpAQCAtMTQ2MSwxOSArMTQ2MSwxOSBA
QCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhUGxheUJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlck9iamVjdCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9v
bCBzaG93UGxheUJ1dHRvbiA9IG5vZGVIYXNDbGFzcyhub2RlLCAicGF1c2VkIik7CiAKLSAgICBy
ZXR1cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0LCBy
ZWN0LAorICAgIHJldHVybiBwYWludE1lZGlhQnV0dG9uKHJlbmRlck9iamVjdCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCwKICAgICAgICAgc2hvd1BsYXlCdXR0b24gPyAibWVkaWEtcGxheWJh
Y2stc3RhcnQtc3ltYm9saWMiIDogIm1lZGlhLXBsYXliYWNrLXBhdXNlLXN5bWJvbGljIiwKICAg
ICAgICAgc2hvd1BsYXlCdXR0b24gPyBHVEtfU1RPQ0tfTUVESUFfUExBWSA6IEdUS19TVE9DS19N
RURJQV9QQVVTRSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrQmFj
a0J1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVk
aWFCdXR0b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNl
ZWstYmFja3dhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfUkVXSU5EKTsKKyAgICByZXR1
cm4gcGFpbnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJl
Y3QsICJtZWRpYS1zZWVrLWJhY2t3YXJkLXN5bWJvbGljIiwgR1RLX1NUT0NLX01FRElBX1JFV0lO
RCk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRv
bihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50TWVkaWFCdXR0
b24ocmVuZGVyT2JqZWN0LCBwYWludEluZm8uY29udGV4dCwgcmVjdCwgIm1lZGlhLXNlZWstZm9y
d2FyZC1zeW1ib2xpYyIsIEdUS19TVE9DS19NRURJQV9GT1JXQVJEKTsKKyAgICByZXR1cm4gcGFp
bnRNZWRpYUJ1dHRvbihyZW5kZXJPYmplY3QsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QsICJt
ZWRpYS1zZWVrLWZvcndhcmQtc3ltYm9saWMiLCBHVEtfU1RPQ0tfTUVESUFfRk9SV0FSRCk7CiB9
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIFJl
bmRlclRoZW1lR3RrOjpwYWludE1lZGlhVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24oY29uc3Qg
UmVuZGVyT2JqZWN0JiByZQogICAgICAgICBpY29uID0gZ2V0U3RvY2tTeW1ib2xpY0ljb25Gb3JX
aWRnZXRUeXBlKEdUS19UWVBFX0NPTlRBSU5FUiwgInVzZXItaW52aXNpYmxlLXN5bWJvbGljIiwg
R1RLX1NUT0NLX0pVU1RJRllfRklMTCwKICAgICAgICAgICAgIGd0a1RleHREaXJlY3Rpb24ocmVu
ZGVyT2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkpLCBndGtJY29uU3RhdGUodGhpcywgcmVuZGVy
T2JqZWN0KSwgaWNvblJlY3Qud2lkdGgoKSk7CiAgICAgfQotICAgIHBhaW50R2RrUGl4YnVmKHBh
aW50SW5mby5jb250ZXh0LCBpY29uLmdldCgpLCBpY29uUmVjdCk7CisgICAgcGFpbnRHZGtQaXhi
dWYocGFpbnRJbmZvLmNvbnRleHQoKSwgaWNvbi5nZXQoKSwgaWNvblJlY3QpOwogICAgIHJldHVy
biB0cnVlOwogfQogI2VuZGlmCkBAIC0xNTA3LDkgKzE1MDcsOSBAQCBib29sIFJlbmRlclRoZW1l
R3RrOjpwYWludE1lZGlhU2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQ
YWludEluZgogICAgIGlmICghbWVkaWFFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKLSAgICBj
b250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoTm9TdHJva2UpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CisgICAg
Y29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CiAK
ICAgICBmbG9hdCBtZWRpYUR1cmF0aW9uID0gbWVkaWFFbGVtZW50LT5kdXJhdGlvbigpOwogICAg
IGZsb2F0IHRvdGFsVHJhY2tXaWR0aCA9IHIud2lkdGgoKTsKQEAgLTE1MjcsMTcgKzE1MjcsMTcg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmYKICAgICAgICAgcmFuZ2VSZWN0LnNldFdpZHRoKGxl
bmd0aFJhdGlvICogdG90YWxUcmFja1dpZHRoKTsKICAgICAgICAgaWYgKGluZGV4KQogICAgICAg
ICAgICAgcmFuZ2VSZWN0Lm1vdmUoc3RhcnRSYXRpbyAqIHRvdGFsVHJhY2tXaWR0aCwgMCk7Ci0g
ICAgICAgIGNvbnRleHQtPmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVj
dCwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgICAgICBjb250
ZXh0LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHJhbmdlUmVjdCwgYm9yZGVyUmFk
aWlGcm9tU3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3Bl
cnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwogICAgIH0KIAotICAgIGNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJP
YmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQog
ewogICAgIFJlbmRlclN0eWxlJiBzdHlsZSA9IG8uc3R5bGUoKTsKLSAgICBwYWludEluZm8uY29u
dGV4dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9t
U3R5bGUoc3R5bGUpKSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29s
b3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJv
dW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QociwgYm9yZGVyUmFkaWlGcm9tU3R5bGUoc3R5bGUp
KSwgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5j
b2xvclNwYWNlKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTU1Niw5ICsxNTU2LDkg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICBpZiAoIXZvbHVtZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29u
dGV4dDsKLSAgICBjb250ZXh0LT5zYXZlKCk7Ci0gICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUo
Tm9TdHJva2UpOworICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IHBhaW50SW5mby5jb250
ZXh0KCk7CisgICAgY29udGV4dC5zYXZlKCk7CisgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShO
b1N0cm9rZSk7CiAKICAgICBpbnQgcmVjdEhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CiAgICAgZmxv
YXQgdHJhY2tIZWlnaHQgPSByZWN0SGVpZ2h0ICogdm9sdW1lOwpAQCAtMTU2Nyw5ICsxNTY3LDkg
QEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWMKICAgICB2b2x1bWVSZWN0Lm1vdmUoMCwgcmVjdEhl
aWdodCAtIHRyYWNrSGVpZ2h0KTsKICAgICB2b2x1bWVSZWN0LnNldEhlaWdodChjZWlsKHRyYWNr
SGVpZ2h0KSk7CiAKLSAgICBjb250ZXh0LT5maWxsUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVj
dCh2b2x1bWVSZWN0LCBib3JkZXJSYWRpaUZyb21TdHlsZShzdHlsZSkpLAorICAgIGNvbnRleHQu
ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3Qodm9sdW1lUmVjdCwgYm9yZGVyUmFkaWlG
cm9tU3R5bGUoc3R5bGUpKSwKICAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKKyAgICBjb250ZXh0LnJlc3RvcmUoKTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKaW5kZXggZjliNzEwZjZlY2Qz
NjI0ODFlMzFjOGM2NGE3OGVmM2E1YWI2M2Q2YS4uYjc5NDExNmFkYzlhM2RiOTEyODVkMTI5MGVl
NTVjMzZiNmI3NTdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNldFRleHRJ
bnB1dEJvcmRlcnMoUmVuZGVyU3R5bGUmKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBib29s
IHBhaW50TWVkaWFCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYsIGNvbnN0IGNoYXIqIHN5bWJvbGljSWNvbk5hbWUsIGNvbnN0IGNoYXIq
IGZhbGxiYWNrU3RvY2tJY29uTmFtZSk7CisgICAgYm9vbCBwYWludE1lZGlhQnV0dG9uKGNvbnN0
IFJlbmRlck9iamVjdCYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBj
aGFyKiBzeW1ib2xpY0ljb25OYW1lLCBjb25zdCBjaGFyKiBmYWxsYmFja1N0b2NrSWNvbk5hbWUp
OwogI2VuZGlmCiAKICAgICBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVQcm9ncmVzc1JlY3QoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MuaAppbmRleCA0YWNkMGE2ZTRkNTNkYzM5NDQ0MjlhYjgwNTNlMWIx
MmZiNTUxZTU4Li4xYjljMGIzMzhiZDI2YmZlZDFkMDk2N2E2N2M0OTA4OTE5NjkyZWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaApAQCAtMTE1LDcgKzExNSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVJT1MoKSB7IH0KIAogICAgIGNv
bnN0IENvbG9yJiBzaGFkb3dDb2xvcigpIGNvbnN0OwotICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVk
Qm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYpOworICAgIEZsb2F0UmVjdCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBS
ZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAg
ICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IGVjNzJh
ZTMzOWE2MmU3ZGQ5NTAyMDcyOWExZGIyZGZmNDEwNDM3MGYuLjcwNDdmM2Q0M2JkMWZmNmQ2MjUz
YjUzMjE1ZmM4YWJlOGRhYzBmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KQEAgLTMyNCw3ICszMjQsNyBAQCBjb25zdCBDb2xvciYgUmVuZGVyVGhlbWVJ
T1M6OnNoYWRvd0NvbG9yKCkgY29uc3QKICAgICByZXR1cm4gY29sb3I7CiB9CiAKLUZsb2F0UmVj
dCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVyT2JqZWN0
JiBib3gsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0Zs
b2F0UmVjdCBSZW5kZXJUaGVtZUlPUzo6YWRkUm91bmRlZEJvcmRlckNsaXAoY29uc3QgUmVuZGVy
T2JqZWN0JiBib3gsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICAvLyBUbyBmaXggaW5uZXIgYm9yZGVyIGJsZWVkaW5nIGlzc3VlcyA8cmRhcjov
L3Byb2JsZW0vOTgxMjUwNz4sIHdlIGNsaXAgdG8gdGhlIG91dGVyIGJvcmRlciBhbmQgYXNzZXJ0
IHRoYXQKICAgICAvLyB0aGUgYm9yZGVyIGlzIG9wYXF1ZSBvciB0cmFuc3BhcmVudCwgdW5sZXNz
IHdlJ3JlIGNoZWNrZWQgYmVjYXVzZSBjaGVja2VkIHJhZGlvL2NoZWNrYm94ZXMgc2hvdyBubyBi
bGVlZGluZy4KQEAgLTMzMiw5ICszMzIsOSBAQCBGbG9hdFJlY3QgUmVuZGVyVGhlbWVJT1M6OmFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBHcmFwaGljcwogICAg
IFJvdW5kZWRSZWN0IGJvcmRlciA9IGlzQ2hlY2tlZChib3gpID8gc3R5bGUuZ2V0Um91bmRlZElu
bmVyQm9yZGVyRm9yKHJlY3QpIDogc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihyZWN0KTsKIAog
ICAgIGlmIChib3JkZXIuaXNSb3VuZGVkKCkpCi0gICAgICAgIGNvbnRleHQtPmNsaXBSb3VuZGVk
UmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikpOworICAgICAgICBjb250ZXh0LmNsaXBSb3Vu
ZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJvcmRlcikpOwogICAgIGVsc2UKLSAgICAgICAgY29u
dGV4dC0+Y2xpcChib3JkZXIucmVjdCgpKTsKKyAgICAgICAgY29udGV4dC5jbGlwKGJvcmRlci5y
ZWN0KCkpOwogCiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIEFTU0VSVChzdHls
ZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcikuYWxwaGEo
KSAlIDI1NSA9PSAwKTsKQEAgLTM2NywxMyArMzY3LDEzIEBAIHN0YXRpYyBDR1BvaW50IHNob3J0
ZW5lZChDR1BvaW50IHN0YXJ0LCBDR1BvaW50IGVuZCwgZmxvYXQgd2lkdGgpCiAKIGJvb2wgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3Qm
IGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29u
dGV4dCk7Ci0gICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRSb3VuZGVkQm9yZGVyQ2xpcChib3gsIHBh
aW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgRmxvYXRSZWN0IGNsaXAgPSBhZGRS
b3VuZGVkQm9yZGVyQ2xpcChib3gsIHBhaW50SW5mby5jb250ZXh0KCksIHJlY3QpOwogCiAgICAg
ZmxvYXQgd2lkdGggPSBjbGlwLndpZHRoKCk7CiAgICAgZmxvYXQgaGVpZ2h0ID0gY2xpcC5oZWln
aHQoKTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5m
by5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7
CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShD
b25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNs
aXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAKQEAgLTM5OCwxNSArMzk4LDE1IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50Q2hlY2tib3hEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJPYmplY3QmIGJveCwgY29uc3QgUGFpCiAgICAgICAgICAgICBzaG9ydGVuZWQobGluZVsyXSwg
bGluZVsxXSwgbGluZVdpZHRoIC8gNC4wZikKICAgICAgICAgfTsKIAotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7Ci0gICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjdm
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0
U3Ryb2tlVGhpY2tuZXNzKGxpbmVXaWR0aCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC43ZiksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Sm9pbmVkTGluZXMo
c2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJlKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3Sm9pbmVkTGluZXMoc2hhZG93LCAzLCB0cnVlLCBrQ0dMaW5lQ2FwU3F1YXJl
KTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0ZDo6
bWluKGNsaXAud2lkdGgoKSwgY2xpcC5oZWlnaHQoKSkgKiB0aGlja25lc3NSYXRpbyk7Ci0gICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAx
LjBmLCAyNDAgLyAyNTUuMGYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Moc3RkOjptaW4oY2xpcC53aWR0aCgpLCBj
bGlwLmhlaWdodCgpKSAqIHRoaWNrbmVzc1JhdGlvKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAyNDAgLyAyNTUuMGYp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0pvaW5lZExpbmVzKGxpbmUsIDMsIHRydWUpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmRyYXdKb2luZWRMaW5lcyhsaW5lLCAzLCB0cnVlKTsKICAgICB9IGVsc2UgewogICAgICAgICBG
bG9hdFBvaW50IGJvdHRvbUNlbnRlcihjbGlwLngoKSArIGNsaXAud2lkdGgoKSAvIDIuMGYsIGNs
aXAubWF4WSgpKTsKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQoY2dDb250ZXh0LCBncmFkaWVu
dFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9uKCksIEZsb2F0UG9pbnQoY2xp
cC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC00NTAsMTAgKzQ1
MCwxMCBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjphZGp1c3RSYWRpb1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbgogCiBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludFJhZGlvRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0
UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwg
cmVjdCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5m
by5jb250ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAo
Ym94LCBwYWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgaWYgKGlzQ2hlY2tlZChib3gpKSB7CiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb25jYXZlR3JhZGllbnQpLCBjbGlwLmxvY2F0aW9u
KCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlv
bik7CiAKQEAgLTQ2NSwxMCArNDY1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UmFk
aW9EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgY29uc3QgUGFpbnRJCiAgICAg
ICAgIGNsaXAuaW5mbGF0ZVgoLWNsaXAud2lkdGgoKSAqIElubmVySW52ZXJzZVJhdGlvKTsKICAg
ICAgICAgY2xpcC5pbmZsYXRlWSgtY2xpcC5oZWlnaHQoKSAqIElubmVySW52ZXJzZVJhdGlvKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZHJhd1JhaXNlZEVsbGlwc2UoY2xpcCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzaGFkb3dDb2xvcigpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBz
ZShjbGlwLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHNoYWRvd0NvbG9yKCks
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIEZsb2F0U2l6ZSByYWRpdXMoY2xpcC53
aWR0aCgpIC8gMi4wZiwgY2xpcC5oZWlnaHQoKSAvIDIuMGYpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCBy
YWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xp
cFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoY2xpcCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1
cywgcmFkaXVzKSk7CiAgICAgfQogICAgIEZsb2F0UG9pbnQgYm90dG9tQ2VudGVyKGNsaXAueCgp
ICsgY2xpcC53aWR0aCgpIC8gMi4wLCBjbGlwLm1heFkoKSk7CiAgICAgZHJhd0F4aWFsR3JhZGll
bnQoY2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNoYWRlR3JhZGllbnQpLCBjbGlwLmxvY2F0
aW9uKCksIEZsb2F0UG9pbnQoY2xpcC54KCksIGNsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xh
dGlvbik7CkBAIC00ODEsMTUgKzQ4MSwxNSBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFRl
eHRGaWVsZERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYQogICAg
IFJlbmRlclN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAgIEZsb2F0UG9pbnQgcG9pbnQo
cmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5ib3Jk
ZXJUb3BXaWR0aCgpKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAotICAgIHBhaW50SW5mby5jb250ZXh0LT5j
bGlwUm91bmRlZFJlY3Qoc3R5bGUuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KHJlY3Qp
KS5waXhlbFNuYXBwZWRSb3VuZGVkUmVjdEZvclBhaW50aW5nKGJveC5kb2N1bWVudCgpLmRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVj
dChzdHlsZS5nZXRSb3VuZGVkQm9yZGVyRm9yKExheW91dFJlY3QocmVjdCkpLnBpeGVsU25hcHBl
ZFJvdW5kZWRSZWN0Rm9yUGFpbnRpbmcoYm94LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSkpOwogCiAgICAgLy8gVGhpcyBncmFkaWVudCBnZXRzIGRyYXduIGJsYWNrIHdoZW4gcHJpbnRp
bmcuCiAgICAgLy8gRG8gbm90IGRyYXcgdGhlIGdyYWRpZW50IGlmIHRoZXJlIGlzIG5vIHZpc2li
bGUgdG9wIGJvcmRlci4KICAgICBib29sIHRvcEJvcmRlcklzSW52aXNpYmxlID0gIXN0eWxlLmhh
c0JvcmRlcigpIHx8ICFzdHlsZS5ib3JkZXJUb3BXaWR0aCgpIHx8IHN0eWxlLmJvcmRlclRvcElz
VHJhbnNwYXJlbnQoKTsKICAgICBpZiAoIWJveC52aWV3KCkucHJpbnRpbmcoKSAmJiAhdG9wQm9y
ZGVySXNJbnZpc2libGUpCi0gICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgZ3JhZGllbnRXaXRoTmFtZShJbnNldEdyYWRpZW50KSwg
cG9pbnQsIEZsb2F0UG9pbnQoQ0dQb2ludE1ha2UocG9pbnQueCgpLCBwb2ludC55KCkgKyAzLjBm
KSksIExpbmVhckludGVycG9sYXRpb24pOworICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBncmFkaWVudFdpdGhOYW1lKEluc2V0
R3JhZGllbnQpLCBwb2ludCwgRmxvYXRQb2ludChDR1BvaW50TWFrZShwb2ludC54KCksIHBvaW50
LnkoKSArIDMuMGYpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdAogICAgIFJlbmRl
clN0eWxlJiBzdHlsZSA9IGJveC5zdHlsZSgpOwogICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoID0g
c3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9hdFJlY3QgY2xpcChyZWN0LngoKSArIHN0
eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCks
IHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIC0gc3R5bGUuYm9yZGVyUmln
aHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSAtIHN0eWxl
LmJvcmRlckJvdHRvbVdpZHRoKCkpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBmbG9h
dCBhZGp1c3RMZWZ0ID0gMC41OwogICAgIGZsb2F0IGFkanVzdFJpZ2h0ID0gMC41OwpAQCAtNjI5
LDkgKzYyOSw5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICB7CiAgICAgICAgIEZsb2F0
UmVjdCB0aXRsZUNsaXAoY2xpcC54KCkgLSBhZGp1c3RMZWZ0LCBjbGlwLnkoKSAtIGFkanVzdFRv
cCwgY2xpcC53aWR0aCgpIC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQgKyBhZGp1c3RMZWZ0
LCBjbGlwLmhlaWdodCgpICsgYWRqdXN0VG9wICsgYWRqdXN0Qm90dG9tKTsKIAotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdCh0aXRsZUNsaXAsCisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCku
Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGl0bGVDbGlwLAogICAgICAgICAgICAg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS53aWR0
aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9yTGVu
Z3RoKHN0eWxlLmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApLAogICAgICAgICAgICAg
RmxvYXRTaXplKHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53
aWR0aCgpLCByZWN0LndpZHRoKCkpIC0gc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCksIHZhbHVlRm9y
TGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWln
aHQoKSkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSwgRmxvYXRTaXplKDAsIDApKSk7CiAK
QEAgLTY0MywxOSArNjQzLDE5IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RC
dXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKIAogICAgIGZsb2F0
IHNlcGFyYXRvciA9IGNsaXAubWF4WCgpIC0gTWVudUxpc3RCdXR0b25QYWRkaW5nUmlnaHQ7CiAK
LSAgICBib3guZHJhd0xpbmVGb3JCb3hTaWRlKCpwYWludEluZm8uY29udGV4dCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoc2VwYXJhdG9yIC0gYm9yZGVyVG9wV2lkdGgsIGNsaXAueSgpKSwgRmxvYXRQ
b2ludChzZXBhcmF0b3IsIGNsaXAubWF4WSgpKSksIEJTUmlnaHQsIHN0eWxlLnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yKSwgc3R5bGUuYm9yZGVyVG9wU3R5
bGUoKSwgMCwgMCk7CisgICAgYm94LmRyYXdMaW5lRm9yQm94U2lkZShwYWludEluZm8uY29udGV4
dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludChzZXBhcmF0b3IgLSBib3JkZXJUb3BXaWR0aCwgY2xp
cC55KCkpLCBGbG9hdFBvaW50KHNlcGFyYXRvciwgY2xpcC5tYXhZKCkpKSwgQlNSaWdodCwgc3R5
bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHls
ZS5ib3JkZXJUb3BTdHlsZSgpLCAwLCAwKTsKIAogICAgIEZsb2F0UmVjdCBidXR0b25DbGlwKHNl
cGFyYXRvciAtIGFkanVzdFRvcCwgY2xpcC55KCkgLSBhZGp1c3RUb3AsIE1lbnVMaXN0QnV0dG9u
UGFkZGluZ1JpZ2h0ICsgYWRqdXN0VG9wICsgYWRqdXN0UmlnaHQsIGNsaXAuaGVpZ2h0KCkgKyBh
ZGp1c3RUb3AgKyBhZGp1c3RCb3R0b20pOwogCiAgICAgLy8gTm93IHBhaW50IHRoZSBidXR0b24g
cG9ydGlvbi4KICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGJ1dHRvbkNsaXAsCisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJl
Y3QoYnV0dG9uQ2xpcCwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXplKHZh
bHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKSwgcmVjdC53
aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgoc3R5bGUu
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkgLSBzdHlsZS5i
b3JkZXJUb3BXaWR0aCgpKSwKICAgICAgICAgICAgIEZsb2F0U2l6ZSgwLCAwKSwgRmxvYXRTaXpl
KHZhbHVlRm9yTGVuZ3RoKHN0eWxlLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKSwg
cmVjdC53aWR0aCgpKSAtIHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgdmFsdWVGb3JMZW5ndGgo
c3R5bGUuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSwgcmVjdC5oZWlnaHQoKSkg
LSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKSkpOwogCi0gICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT5maWxsUmVjdChidXR0b25DbGlwLCBzdHlsZS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3QoYnV0dG9uQ2xpcCwgc3R5bGUudmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBzdHlsZS5jb2xvclNwYWNlKCkp
OwogCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwgZ3JhZGllbnRXaXRoTmFt
ZShpc0ZvY3VzZWQoYm94KSAmJiAhaXNSZWFkT25seUNvbnRyb2woYm94KSA/IENvbmNhdmVHcmFk
aWVudCA6IENvbnZleEdyYWRpZW50KSwgYnV0dG9uQ2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50
KGJ1dHRvbkNsaXAueCgpLCBidXR0b25DbGlwLm1heFkoKSksIExpbmVhckludGVycG9sYXRpb24p
OwogICAgIH0KQEAgLTY3MCw3ICs2NzAsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0CiAgICAg
ICAgIEZsb2F0UmVjdCBlbGxpcHNlKGJ1dHRvbkNsaXAueCgpICsgKGJ1dHRvbkNsaXAud2lkdGgo
KSAtIGNvdW50ICogKHNpemUgKyBwYWRkaW5nKSArIHBhZGRpbmcpIC8gMi4wLCBidXR0b25DbGlw
Lm1heFkoKSAtIDEwLjAsIHNpemUsIHNpemUpOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdSYWlz
ZWRFbGxpcHNlKGVsbGlwc2UsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC41ZiksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3UmFpc2VkRWxsaXBzZShlbGxpcHNlLCBDb2xv
cjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAu
NWYpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgIGVsbGlwc2UubW92ZShzaXpl
ICsgcGFkZGluZywgMCk7CiAgICAgICAgIH0KICAgICB9ICBlbHNlIHsKQEAgLTY4OSwxMyArNjg5
LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QKICAgICAgICAgc2hhZG93WzJdID0gRmxvYXRQ
b2ludChhcnJvd1syXS54KCksIGFycm93WzJdLnkoKSArIDEuMGYpOwogCiAgICAgICAgIGZsb2F0
IG9wYWNpdHkgPSBpc1JlYWRPbmx5Q29udHJvbChib3gpID8gMC4yIDogMC41OwotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
b3BhY2l0eSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+c2V0RmlsbENvbG9yKENvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIG9wYWNpdHkpLCBDb2xvclNw
YWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdDb252ZXhQb2x5
Z29uKDMsIHNoYWRvdywgdHJ1ZSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ry
b2tlQ29sb3IoQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgb3BhY2l0eSksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCBvcGFjaXR5KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgc2hhZG93LCB0cnVlKTsK
IAotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3I6OndoaXRl
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZp
bGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+ZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOworICAgICAg
ICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0RmlsbENvbG9y
KENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3csIHRydWUpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTc1OSwxMyArNzU5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5m
byYKIAogICAgIC8vIERyYXcgdGhlIHRyYWNrIGdyYWRpZW50LgogICAgIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7Cisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29u
dGV4dCgpKTsKIAogICAgICAgICBJbnRTaXplIGNvcm5lclNpemUoY29ybmVyV2lkdGgsIGNvcm5l
ckhlaWdodCk7CiAgICAgICAgIEZsb2F0Um91bmRlZFJlY3QgaW5uZXJCb3JkZXIodHJhY2tDbGlw
LCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKTsKLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChpbm5lckJvcmRlcik7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGlubmVyQm9yZGVyKTsKIAot
ICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpOworICAgICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICAgICAgSU9TR3JhZGllbnRSZWYgZ3Jh
ZGllbnQgPSByZWFkb25seSA/IGdyYWRpZW50V2l0aE5hbWUoUmVhZG9ubHlTbGlkZXJUcmFja0dy
YWRpZW50KSA6IGdyYWRpZW50V2l0aE5hbWUoU2xpZGVyVHJhY2tHcmFkaWVudCk7CiAgICAgICAg
IGlmIChpc0hvcml6b250YWwpCiAgICAgICAgICAgICBkcmF3QXhpYWxHcmFkaWVudChjZ0NvbnRl
eHQsIGdyYWRpZW50LCB0cmFja0NsaXAubG9jYXRpb24oKSwgRmxvYXRQb2ludCh0cmFja0NsaXAu
eCgpLCB0cmFja0NsaXAubWF4WSgpKSwgTGluZWFySW50ZXJwb2xhdGlvbik7CkBAIC03NzUsMTMg
Kzc3NSwxMyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJl
bmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mCiAKICAgICAvLyBEcmF3IHRoZSB0cmFj
ayBib3JkZXIuCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgICAgIENHQ29udGV4
dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7Cisg
ICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRm
b3JtQ29udGV4dCgpOwogICAgICAgICBpZiAocmVhZG9ubHkpCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IoQ29sb3IoMTc4LCAxNzgsIDE3OCksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VD
b2xvcihDb2xvcigxNzgsIDE3OCwgMTc4KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cig3NiwgNzYsIDc2KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKENvbG9yKDc2LCA3NiwgNzYpLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gcm91bmRl
ZFJlY3RQYXRoID0gYWRvcHRDRihDR1BhdGhDcmVhdGVNdXRhYmxlKCkpOwogICAgICAgICBDR1Bh
dGhBZGRSb3VuZGVkUmVjdChyb3VuZGVkUmVjdFBhdGguZ2V0KCksIDAsIHRyYWNrQ2xpcCwgY29y
bmVyV2lkdGgsIGNvcm5lckhlaWdodCk7CkBAIC04MTIsMTAgKzgxMiwxMCBAQCB2b2lkIFJlbmRl
clRoZW1lSU9TOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmIHN0eWxlLCBFbGVt
ZW50KikgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTbGlkZXJUaHVtYkRlY29y
YXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKLSAgICBGbG9hdFJlY3QgY2xpcCA9IGFk
ZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgIEdy
YXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsK
KyAgICBGbG9hdFJlY3QgY2xpcCA9IGFkZFJvdW5kZWRCb3JkZXJDbGlwKGJveCwgcGFpbnRJbmZv
LmNvbnRleHQoKSwgcmVjdCk7CiAKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwogICAgIEZsb2F0UG9p
bnQgYm90dG9tQ2VudGVyKGNsaXAueCgpICsgY2xpcC53aWR0aCgpIC8gMi4wZiwgY2xpcC5tYXhZ
KCkpOwogICAgIGlmIChpc1ByZXNzZWQoYm94KSkKICAgICAgICAgZHJhd0F4aWFsR3JhZGllbnQo
Y2dDb250ZXh0LCBncmFkaWVudFdpdGhOYW1lKFNsaWRlclRodW1iT3BhcXVlUHJlc3NlZEdyYWRp
ZW50KSwgY2xpcC5sb2NhdGlvbigpLCBGbG9hdFBvaW50KGNsaXAueCgpLCBjbGlwLm1heFkoKSks
IExpbmVhckludGVycG9sYXRpb24pOwpAQCAtODQ1LDE4ICs4NDUsMTggQEAgYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBj
b25zdCBQYWludEkKICAgICBjb25zdCBpbnQgcHJvZ3Jlc3NCYXJIZWlnaHQgPSA5OwogICAgIGNv
bnN0IGZsb2F0IHZlcnRpY2FsT2Zmc2V0ID0gKHJlY3QuaGVpZ2h0KCkgLSBwcm9ncmVzc0Jhckhl
aWdodCkgLyAyLjA7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
KnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKHJlY3Qud2lkdGgoKSA8IDEwIHx8
IHJlY3QuaGVpZ2h0KCkgPCA5KSB7CiAgICAgICAgIC8vIFRoZSByZWN0IGlzIHNtYWxsZXIgdGhh
biB0aGUgc3RhbmRhcmQgcHJvZ3Jlc3MgYmFyLiBXZSBjbGlwIHRvIHRoZSBlbGVtZW50J3MgcmVj
dCB0byBhdm9pZAogICAgICAgICAvLyBsZWFraW5nIHBpeGVscyBvdXRzaWRlIHRoZSByZXBhaW50
IHJlY3QuCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHJlY3QpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXAocmVjdCk7CiAgICAgfQogCiAgICAgLy8gMSkgRHJhdyB0
aGUgcHJvZ3Jlc3MgYmFyIHRyYWNrLgogICAgIC8vIDEuMSkgRHJhdyB0aGUgd2hpdGUgYmFja2dy
b3VuZCB3aXRoIGdyZXkgZ3JhZGllbnQgYm9yZGVyLgotICAgIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwotICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVz
cygwLjY4KTsKLSAgICBjb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKKyAgICBjb250
ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygwLjY4KTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxl
KFNvbGlkU3Ryb2tlKTsKIAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRp
b24gPSByZWN0LnkoKSArIHZlcnRpY2FsT2Zmc2V0OwogICAgIFJlZlB0cjxHcmFkaWVudD4gc3Ry
b2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRp
Y2FsUmVuZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSk7CkBAIC04NjQsMjggKzg2NCwy
OCBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xv
clN0b3AoMC40NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMHhlZSwgMHhlZSwgMHhlZSkpOwogICAgIHN0cm9r
ZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcigweDhkLCAweDhkLCAweDhkKSk7Ci0g
ICAgY29udGV4dC0+c2V0U3Ryb2tlR3JhZGllbnQoc3Ryb2tlR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgY29udGV4dC5zZXRTdHJva2VHcmFkaWVudChzdHJva2VHcmFkaWVudC5yZWxl
YXNlTm9uTnVsbCgpKTsKIAogICAgIENvbG9yU3BhY2UgY29sb3JTcGFjZSA9IHJlbmRlcmVyLnN0
eWxlKCkuY29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcigyNTUs
IDI1NSwgMjU1KSwgY29sb3JTcGFjZSk7CisgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Io
MjU1LCAyNTUsIDI1NSksIGNvbG9yU3BhY2UpOwogCiAgICAgUGF0aCB0cmFja1BhdGg7CiAgICAg
RmxvYXRSZWN0IHRyYWNrUmVjdChyZWN0LngoKSArIDAuMjUsIHZlcnRpY2FsUmVuZGVyaW5nUG9z
aXRpb24gKyAwLjI1LCByZWN0LndpZHRoKCkgLSAwLjUsIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41
KTsKICAgICBGbG9hdFNpemUgcm91bmRlZENvcm5lclJhZGl1cyg1LCA0KTsKICAgICB0cmFja1Bh
dGguYWRkUm91bmRlZFJlY3QodHJhY2tSZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICBj
b250ZXh0LT5kcmF3UGF0aCh0cmFja1BhdGgpOworICAgIGNvbnRleHQuZHJhd1BhdGgodHJhY2tQ
YXRoKTsKIAogICAgIC8vIDEuMikgRHJhdyB0b3AgZ3JhZGllbnQgb24gdGhlIHVwcGVyIGhhbGYu
IEl0IGlzIHN1cHBvc2VkIHRvIG92ZXJsYXkgdGhlIGZpbGwgZnJvbSB0aGUgYmFja2dyb3VuZCBh
bmQgZGFya2VyIHRoZSBzdHJva2VkIHBhdGguCiAgICAgRmxvYXRSZWN0IGJvcmRlcihyZWN0Lngo
KSwgcmVjdC55KCkgKyB2ZXJ0aWNhbE9mZnNldCwgcmVjdC53aWR0aCgpLCBwcm9ncmVzc0Jhckhl
aWdodCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5k
ZWRSZWN0KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywg
cm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoYm9yZGVyLCByb3Vu
ZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVzLCByb3VuZGVkQ29ybmVyUmFkaXVz
LCByb3VuZGVkQ29ybmVyUmFkaXVzKSk7CiAKICAgICBmbG9hdCB1cHBlckdyYWRpZW50SGVpZ2h0
ID0gcHJvZ3Jlc3NCYXJIZWlnaHQgLyAyLjsKICAgICBSZWZQdHI8R3JhZGllbnQ+IHVwcGVyR3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyAwLjUpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkpOwogICAgIHVwcGVyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCgwLjAsIENvbG9yKDEzMywgMTMzLCAxMzMsIDE4OCkpOwogICAg
IHVwcGVyR3JhZGllbnQtPmFkZENvbG9yU3RvcCgxLjAsIENvbG9yKDE4LCAxOCwgMTgsIDUxKSk7
Ci0gICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KHVwcGVyR3JhZGllbnQucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQodXBwZXJHcmFkaWVudC5yZWxlYXNl
Tm9uTnVsbCgpKTsKIAotICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiwgcmVjdC53aWR0aCgpLCB1cHBlckdyYWRpZW50SGVp
Z2h0KSk7CisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24sIHJlY3Qud2lkdGgoKSwgdXBwZXJHcmFkaWVudEhlaWdodCkpOwog
CiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVz
cz4ocmVuZGVyZXIpOwogICAgIGlmIChyZW5kZXJQcm9ncmVzcy5pc0RldGVybWluYXRlKCkpIHsK
QEAgLTg5OSwxMyArODk5LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NC
YXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJCiAgICAgICAgIGJh
ckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41MSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7CiAgICAg
ICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41NSwgQ29sb3IoMzYsIDExNCwgMjEwKSk7
CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoMS4wLCBDb2xvcig1NywgMTQyLCAy
NDQpKTsKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGJhckdyYWRpZW50LnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChiYXJHcmFkaWVu
dC5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGJhclN0cm9r
ZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJp
bmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkpOwogICAgICAgICBiYXJTdHJva2VH
cmFkaWVudC0+YWRkQ29sb3JTdG9wKDAuMCwgQ29sb3IoOTUsIDEwNywgMTgzKSk7CiAgICAgICAg
IGJhclN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoMC41LCBDb2xvcig2NiwgMTA2LCAxNzQs
IDI0MCkpOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKDEuMCwgQ29s
b3IoMzgsIDEwNCwgMTY2KSk7Ci0gICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KGJh
clN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBjb250ZXh0LnNldFN0
cm9rZUdyYWRpZW50KGJhclN0cm9rZUdyYWRpZW50LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAg
ICAgIFBhdGggYmFyUGF0aDsKICAgICAgICAgaW50IGxlZnQgPSByZWN0LngoKTsKQEAgLTkxMyw3
ICs5MTMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SQogICAgICAgICAgICAgbGVmdCA9IHJl
Y3QubWF4WCgpIC0gYmFyV2lkdGg7CiAgICAgICAgIEZsb2F0UmVjdCBiYXJSZWN0KGxlZnQgKyAw
LjI1LCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC4yNSwgc3RkOjptYXgoYmFyV2lkdGgg
LSAwLjUsIDAuMCksIHByb2dyZXNzQmFySGVpZ2h0IC0gMC41KTsKICAgICAgICAgYmFyUGF0aC5h
ZGRSb3VuZGVkUmVjdChiYXJSZWN0LCByb3VuZGVkQ29ybmVyUmFkaXVzKTsKLSAgICAgICAgY29u
dGV4dC0+ZHJhd1BhdGgoYmFyUGF0aCk7CisgICAgICAgIGNvbnRleHQuZHJhd1BhdGgoYmFyUGF0
aCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTg0LDEwICs5ODQsMTAgQEAgYm9v
bCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmpl
Y3QmIGJveCwgY29uc3QgUGFpbnQKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRQdXNoQnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiBib3gsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgIEZsb2F0UmVjdCBj
bGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBwYWludEluZm8uY29udGV4dCwgcmVjdCk7
CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250
ZXh0KCkpOworICAgIEZsb2F0UmVjdCBjbGlwID0gYWRkUm91bmRlZEJvcmRlckNsaXAoYm94LCBw
YWludEluZm8uY29udGV4dCgpLCByZWN0KTsKIAotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQg
PSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVm
IGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
aWYgKGJveC5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikuaXNEYXJrKCkpCiAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNnQ29udGV4dCwg
Z3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCksIGNsaXAubG9jYXRpb24oKSwgRmxvYXRQ
b2ludChjbGlwLngoKSwgY2xpcC5tYXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICBl
bHNlIHsKQEAgLTEwMTQsNyArMTAxNCw3IEBAIGNvbnN0IGludCBrTXVsdGlwbGVUaHVtYm5haWxT
aHJpbmtTaXplID0gMjsKIAogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNv
bkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlck9iamVjdCYgYnV0
dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBJY29uKiBpY29uLCBGaWxlVXBsb2FkRGVjb3JhdGlvbnMgZmlsZVVwbG9hZERlY29yYXRp
b25zKQogewotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJ
bmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
YWludEluZm8uY29udGV4dCgpKTsKIAogICAgIEludFNpemUgY29ybmVyU2l6ZShrVGh1bWJuYWls
Qm9yZGVyQ29ybmVyUmFkaXVzLCBrVGh1bWJuYWlsQm9yZGVyQ29ybmVyUmFkaXVzKTsKICAgICBD
b2xvciBwaWN0dXJlRnJhbWVDb2xvciA9IGJ1dHRvblJlbmRlcmVyLnN0eWxlKCkudmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpOwpAQCAtMTAzMSwxMiArMTAz
MSwxMiBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludEZpbGVVcGxvYWRJY29uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUgogCiAgICAgICAgIC8vIEJhY2tncm91bmQg
cGljdHVyZSBmcmFtZSBhbmQgc2ltcGxlIGJhY2tncm91bmQgaWNvbiB3aXRoIGEgZ3JhZGllbnQg
bWF0Y2hpbmcgdGhlIGJ1dHRvbi4KICAgICAgICAgQ29sb3IgYmFja2dyb3VuZEltYWdlQ29sb3Ig
PSBDb2xvcihidXR0b25SZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4
dC0+ZmlsbFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QodGh1bWJuYWlsUGljdHVyZUZyYW1l
UmVjdCwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSwgY29ybmVyU2l6ZSksIHBp
Y3R1cmVGcmFtZUNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUm91
bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdCh0aHVtYm5haWxQaWN0dXJlRnJhbWVSZWN0LCBjb3Ju
ZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplLCBjb3JuZXJTaXplKSwgcGljdHVyZUZyYW1l
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSZWN0KHRodW1ibmFpbFJlY3QsIGJhY2tncm91bmRJbWFnZUNvbG9yLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKICAgICAgICAgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyMigqcGFpbnRJbmZvLmNvbnRleHQpOwotICAgICAgICAgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
LSAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKHRodW1ibmFpbFJlY3QpOworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyMihwYWludEluZm8u
Y29udGV4dCgpKTsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludElu
Zm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQoKS5jbGlwKHRodW1ibmFpbFJlY3QpOwogICAgICAgICAgICAgaWYgKGJhY2tncm91bmRJ
bWFnZUNvbG9yLmlzRGFyaygpKQogICAgICAgICAgICAgICAgIGRyYXdBeGlhbEdyYWRpZW50KGNn
Q29udGV4dCwgZ3JhZGllbnRXaXRoTmFtZShDb252ZXhHcmFkaWVudCksIHRodW1ibmFpbFJlY3Qu
bG9jYXRpb24oKSwgRmxvYXRQb2ludCh0aHVtYm5haWxSZWN0LngoKSwgdGh1bWJuYWlsUmVjdC5t
YXhZKCkpLCBMaW5lYXJJbnRlcnBvbGF0aW9uKTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTA1
Miw4ICsxMDUyLDggQEAgYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRGaWxlVXBsb2FkSWNvbkRl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFIKICAgICB9CiAKICAgICAvLyBG
b3JlZ3JvdW5kIHBpY3R1cmUgZnJhbWUgYW5kIGljb24uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgaWNvbi0+cGFpbnQoKnBh
aW50SW5mby5jb250ZXh0LCB0aHVtYm5haWxSZWN0KTsKKyAgICBwYWludEluZm8uY29udGV4dCgp
LmZpbGxSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KHRodW1ibmFpbFBpY3R1cmVGcmFtZVJl
Y3QsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUsIGNvcm5lclNpemUpLCBwaWN0
dXJlRnJhbWVDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgaWNvbi0+cGFpbnQocGFp
bnRJbmZvLmNvbnRleHQoKSwgdGh1bWJuYWlsUmVjdCk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggZGUyMmQw
MGM4NjdlNDQwMGRlNDY4MzEwNmY0ZjQ3NjIyM2UwZmZhMi4uZmI0ZTRjODBjODYyOTBkY2UxNmFj
YWExOWRiZmI3ZDJmYTM2ZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQpAQCAtODUwLDExICs4NTAsMTEgQEAgTlNDb250cm9sU2l6ZSBSZW5kZXJUaGVt
ZU1hYzo6Y29udHJvbFNpemVGb3JTeXN0ZW1Gb250KFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QK
IAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByKQogewot
ICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNv
bnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU1RleHRGaWVsZENlbGwgKnRleHRGaWVsZCA9IHRo
aXMtPnRleHRGaWVsZCgpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCiAgICAgW3RleHRGaWVsZCBzZXRFbmFi
bGVkOihpc0VuYWJsZWQobykgJiYgIWlzUmVhZE9ubHlDb250cm9sKG8pKV07CiAgICAgW3RleHRG
aWVsZCBkcmF3V2l0aEZyYW1lOk5TUmVjdChyKSBpblZpZXc6ZG9jdW1lbnRWaWV3Rm9yKG8pXTsK
QEAgLTg3MCw3ICs4NzAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RUZXh0RmllbGRT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KgogCiBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKLSAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0
KCkpOwogICAgIHdrRHJhd0JlemVsZWRUZXh0QXJlYShyLCBpc0VuYWJsZWQobykgJiYgIWlzUmVh
ZE9ubHlDb250cm9sKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC05MDksNyArOTA5LDcg
QEAgY29uc3QgaW50KiBSZW5kZXJUaGVtZU1hYzo6cG9wdXBCdXR0b25QYWRkaW5nKE5TQ29udHJv
bFNpemUgc2l6ZSkgY29uc3QKIAogYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdChj
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBo
aWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgc2V0UG9w
dXBCdXR0b25DZWxsU3RhdGUocmVuZGVyZXIsIEludFNpemUocmVjdC5zaXplKCkpKTsKIAogICAg
IE5TUG9wVXBCdXR0b25DZWxsKiBwb3B1cEJ1dHRvbiA9IHRoaXMtPnBvcHVwQnV0dG9uKCk7CkBA
IC05MjQsMTkgKzkyNCwxOSBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0KGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbwogICAgIGlmIChyZWN0
LndpZHRoKCkgPj0gbWluaW11bU1lbnVMaXN0U2l6ZShyZW5kZXJlci5zdHlsZSgpKSkKICAgICAg
ICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QocmVjdCwgc2l6ZSwgcG9wdXBCdXR0b25NYXJn
aW5zKCksIHpvb21MZXZlbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICAvLyBCZWZvcmUgWW9zZW1p
dGUgd2UgZGlkIG5vdCB3YW50IHRoZSBjZWxsIHRvIGV2ZXIgZHJhdyBvdXRzaWRlIHRoZSBnaXZl
biByZWN0YW5nbGUuCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTAw
MAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwKGluZmxhdGVkUmVjdCk7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5jbGlwKGluZmxhdGVkUmVjdCk7CiAjZW5kaWYKIAogICAgIGlmICh6b29t
TGV2ZWwgIT0gMS4wZikgewogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRS
ZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0
KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29t
TGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRS
ZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgp
LnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54
KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAKICAgICBwYWludENlbGxBbmRTZXRGb2N1
c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5KHBvcHVwQnV0dG9uLCByZW5kZXJlciwg
cGFpbnRJbmZvLCBpbmZsYXRlZFJlY3QpOwpAQCAtOTY0LDEwICs5NjQsMTAgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmYKICAgICBpZiAoIWlzPFJlbmRlck1ldGVyPihyZW5kZXJPYmplY3QpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBs
b2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBOU0xldmVs
SW5kaWNhdG9yQ2VsbCogY2VsbCA9IGxldmVsSW5kaWNhdG9yRm9yKGRvd25jYXN0PFJlbmRlck1l
dGVyPihyZW5kZXJPYmplY3QpKTsKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBbY2VsbCBkcmF3V2l0aEZy
YW1lOnJlY3QgaW5WaWV3OmRvY3VtZW50Vmlld0ZvcihyZW5kZXJPYmplY3QpXTsKICAgICBbY2Vs
bCBzZXRDb250cm9sVmlldzpuaWxdOwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVj
dCwgY29uc3QgUGEKICAgICB0cmFja0luZm8ucmVzZXJ2ZWQgPSAwOwogICAgIHRyYWNrSW5mby5m
aWxsZXIxID0gMDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNv
bnRleHQsIHRydWUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQiwgcGFpbnRJbmZvLmNv
bnRleHQoKSwgdHJ1ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTExNDIsMTQgKzExNDIsMTQgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQ
cm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVyLmNvbnRleHQoKTsK
ICAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVP
cmllbnRhdGlvbk5vcm1hbCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBpZiAoIXJlbmRlclByb2dy
ZXNzLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7Ci0gICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUoMiAqIGluZmxhdGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qu
d2lkdGgoKSwgMCk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUo
LTEsIDEpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUoMiAqIGluZmxh
dGVkUmVjdC54KCkgKyBpbmZsYXRlZFJlY3Qud2lkdGgoKSwgMCk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAgfQogCi0gICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBA
IC0xMjEwLDEwICsxMjEwLDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RC
dXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHIu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250ZXh0Q29udGFpbmVyIGNnQ29u
dGV4dENvbnRhaW5lcihwYWludEluZm8uY29udGV4dCk7CisgICAgQ29udGV4dENvbnRhaW5lciBj
Z0NvbnRleHRDb250YWluZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBjZ0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBib3JkZXIgPSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUo
KS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlp
KCkudG9wTGVmdCgpLndpZHRoKCk7CkBAIC0xMjM5LDMzICsxMjM5LDMzIEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBjb25zdCBQCiAgICAgUmV0YWluUHRyPENHU2hhZGluZ1JlZj4gcmlnaHRTaGFkaW5nID0g
YWRvcHRDRihDR1NoYWRpbmdDcmVhdGVBeGlhbChjc3BhY2UsIENHUG9pbnRNYWtlKHIubWF4WCgp
LCAgci55KCkpLCBDR1BvaW50TWFrZShyLm1heFgoKSAtIHJhZGl1cywgci55KCkpLCBtYWluRnVu
Y3Rpb24uZ2V0KCksIGZhbHNlLCBmYWxzZSkpOwogCiAgICAgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBj
Z0NvbnRleHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGlu
Zyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsK
KyAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5j
b250ZXh0KCkpOwogICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHRvcEdyYWRp
ZW50KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJv
dW5kZWRSZWN0KGVuY2xvc2luZ0ludFJlY3QodG9wR3JhZGllbnQpLCBib3JkZXIucmFkaWkoKS50
b3BMZWZ0KCksIGJvcmRlci5yYWRpaSgpLnRvcFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgp
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdCh0b3BHcmFkaWVudCksIGJvcmRlci5yYWRpaSgpLnRv
cExlZnQoKSwgYm9yZGVyLnJhZGlpKCkudG9wUmlnaHQoKSwgSW50U2l6ZSgpLCBJbnRTaXplKCkp
KTsKICAgICAgICAgY29udGV4dCA9IGNnQ29udGV4dENvbnRhaW5lci5jb250ZXh0KCk7CiAgICAg
ICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNvbnRleHQsIHRvcFNoYWRpbmcuZ2V0KCkpOwogICAg
IH0KIAogICAgIGlmICghYm90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm90dG9tR3JhZGll
bnQpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91
bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVjdChib3R0b21HcmFkaWVudCksIEludFNpemUoKSwgSW50
U2l6ZSgpLCBib3JkZXIucmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvcmRlci5yYWRpaSgpLmJvdHRv
bVJpZ2h0KCkpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3Qo
RmxvYXRSb3VuZGVkUmVjdChlbmNsb3NpbmdJbnRSZWN0KGJvdHRvbUdyYWRpZW50KSwgSW50U2l6
ZSgpLCBJbnRTaXplKCksIGJvcmRlci5yYWRpaSgpLmJvdHRvbUxlZnQoKSwgYm9yZGVyLnJhZGlp
KCkuYm90dG9tUmlnaHQoKSkpOwogICAgICAgICBjb250ZXh0ID0gY2dDb250ZXh0Q29udGFpbmVy
LmNvbnRleHQoKTsKICAgICAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgYm90dG9t
U2hhZGluZy5nZXQoKSk7CiAgICAgfQogCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
ICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CisgICAgICAgIHBhaW50SW5mby5jb250
ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvcmRlcik7CiAgICAgICAgIGNvbnRleHQgPSBjZ0NvbnRl
eHRDb250YWluZXIuY29udGV4dCgpOwogICAgICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250
ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdTaGFkaW5nKGNv
bnRleHQsIHJpZ2h0U2hhZGluZy5nZXQoKSk7CkBAIC0xMjkyLDEwICsxMjkyLDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgaWYgKGJvdW5kcy53aWR0aCgpIDwgYXJyb3dXaWR0aCAr
IGFycm93UGFkZGluZ0xlZnQgKiByZW5kZXJlci5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUNvbG9yKSwgcmVuZGVyZXIuc3R5bGUoKS5jb2xvclNwYWNlKCkpOwotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShOb1N0cm9rZSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5zZXRGaWxsQ29sb3IocmVuZGVyZXIuc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHJlbmRlcmVyLnN0eWxlKCkuY29sb3JTcGFjZSgpKTsK
KyAgICBwYWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKE5vU3Ryb2tlKTsKIAogICAg
IEZsb2F0UG9pbnQgYXJyb3cxWzNdOwogICAgIGFycm93MVswXSA9IEZsb2F0UG9pbnQobGVmdEVk
Z2UsIGNlbnRlclkgLSBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAgLTEzMDMsNyArMTMw
Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cxWzJdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZIC0gc3BhY2VCZXR3ZWVuQXJy
b3dzIC8gMi4wZiAtIGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhlIHRvcCBhcnJvdwot
ICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigzLCBhcnJvdzEsIHRydWUp
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHlnb24oMywgYXJyb3cxLCB0
cnVlKTsKIAogICAgIEZsb2F0UG9pbnQgYXJyb3cyWzNdOwogICAgIGFycm93MlswXSA9IEZsb2F0
UG9pbnQobGVmdEVkZ2UsIGNlbnRlclkgKyBzcGFjZUJldHdlZW5BcnJvd3MgLyAyLjBmKTsKQEAg
LTEzMTEsNyArMTMxMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0
b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAgYXJyb3cyWzJd
ID0gRmxvYXRQb2ludChsZWZ0RWRnZSArIGFycm93V2lkdGggLyAyLjBmLCBjZW50ZXJZICsgc3Bh
Y2VCZXR3ZWVuQXJyb3dzIC8gMi4wZiArIGFycm93SGVpZ2h0KTsKIAogICAgIC8vIERyYXcgdGhl
IGJvdHRvbSBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3Q29udmV4UG9seWdvbigz
LCBhcnJvdzIsIHRydWUpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0NvbnZleFBvbHln
b24oMywgYXJyb3cyLCB0cnVlKTsKIAogICAgIENvbG9yIGxlZnRTZXBhcmF0b3JDb2xvcigwLCAw
LCAwLCA0MCk7CiAgICAgQ29sb3IgcmlnaHRTZXBhcmF0b3JDb2xvcigyNTUsIDI1NSwgMjU1LCA0
MCk7CkBAIC0xMzIxLDE0ICsxMzIxLDE0IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVu
dUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjCiAgICAg
aW50IGxlZnRFZGdlT2ZTZXBhcmF0b3IgPSBzdGF0aWNfY2FzdDxpbnQ+KGxlZnRFZGdlIC0gYXJy
b3dQYWRkaW5nTGVmdCAqIHJlbmRlcmVyLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsgLy8gRklY
TUU6IFJvdW5kPwogCiAgICAgLy8gRHJhdyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRo
ZSBhcnJvd3MKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOyAv
LyBEZWxpYmVyYXRlbHkgaWdub3JlcyB6b29tIHNpbmNlIGl0IGxvb2tzIG5pY2VyIGlmIGl0IHN0
YXlzIHRoaW4uCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRv
ckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBwYWludEluZm8uY29udGV4dC0+ZHJh
d0xpbmUoSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLnkoKSksCisgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7IC8vIERlbGliZXJhdGVseSBp
Z25vcmVzIHpvb20gc2luY2UgaXQgbG9va3MgbmljZXIgaWYgaXQgc3RheXMgdGhpbi4KKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldFN0cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2lu
dChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3VuZHMueSgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQobGVmdEVkZ2VPZlNlcGFyYXRvciwgYm91bmRzLm1heFkoKSkp
OwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKHJpZ2h0U2VwYXJhdG9y
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5k
cy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IocmlnaHRTZXBh
cmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3TGluZShJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2Us
IGJvdW5kcy55KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChs
ZWZ0RWRnZU9mU2VwYXJhdG9yICsgc2VwYXJhdG9yU3BhY2UsIGJvdW5kcy5tYXhZKCkpKTsKICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xNDU0LDcgKzE0NTQsNyBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpwYWludENlbGxBbmRTZXRGb2N1c2VkRWxlbWVudE5lZWRzUmVwYWludElmTmVjZXNzYXJ5
KE5TQ2VsbAogICAgIGJvb2wgc2hvdWxkRHJhd0ZvY3VzUmluZyA9IGlzRm9jdXNlZChyZW5kZXJl
cikgJiYgcmVuZGVyZXIuc3R5bGUoKS5vdXRsaW5lU3R5bGVJc0F1dG8oKTsKICAgICBib29sIHNo
b3VsZFVzZUltYWdlQnVmZmVyID0gcmVuZGVyZXIuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkgIT0g
MSB8fCBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKSAhPSAxOwogICAgIGJvb2wgc2hvdWxkRHJhd0Nl
bGwgPSB0cnVlOwotICAgIGlmIChUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoY2VsbCwgcGFpbnRJbmZvLmNvbnRleHQsIHJlY3QsIGRvY3VtZW50Vmlld0Zv
cihyZW5kZXJlciksIHNob3VsZERyYXdDZWxsLCBzaG91bGREcmF3Rm9jdXNSaW5nLCBzaG91bGRV
c2VJbWFnZUJ1ZmZlciwgcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSkpCisgICAgaWYgKFRoZW1l
TWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChjZWxsLCBwYWludElu
Zm8uY29udGV4dCgpLCByZWN0LCBkb2N1bWVudFZpZXdGb3IocmVuZGVyZXIpLCBzaG91bGREcmF3
Q2VsbCwgc2hvdWxkRHJhd0ZvY3VzUmluZywgc2hvdWxkVXNlSW1hZ2VCdWZmZXIsIHBhZ2UtPmRl
dmljZVNjYWxlRmFjdG9yKCkpKQogICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRG
b2N1c2VkRWxlbWVudE5lZWRzUmVwYWludCgpOwogfQogCkBAIC0xNDkxLDcgKzE0OTEsNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYg
bywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgICAgICBib3VuZHMuc2V0WChyLngoKSArIHIud2lk
dGgoKSAvIDIgLSB6b29tZWRUcmFja1dpZHRoIC8gMik7CiAgICAgfQogCi0gICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4
dCgpKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGxvY2FsQ29udGV4dC5jZ0NvbnRleHQo
KTsKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigp
OwogCkBAIC0xNDk5LDcgKzE0OTksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNsaWRl
clRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIHBh
aW50U2xpZGVyVGlja3MobywgcGFpbnRJbmZvLCByKTsKICNlbmRpZgogCi0gICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwog
ICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgYm91bmRzKTsKIAogICAgIHN0cnVjdCBD
R0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNrR3JhZGllbnRJbnRl
cnBvbGF0ZSwgTlVMTCB9OwpAQCAtMTUxMSw3ICsxNTExLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5m
byYgcGEKICAgICAgICAgbWFpblNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFs
KGNzcGFjZSwgQ0dQb2ludE1ha2UoYm91bmRzLngoKSwgIGJvdW5kcy55KCkpLCBDR1BvaW50TWFr
ZShib3VuZHMueCgpLCBib3VuZHMubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwg
ZmFsc2UpKTsKIAogICAgIEludFNpemUgcmFkaXVzKHRyYWNrUmFkaXVzLCB0cmFja1JhZGl1cyk7
Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvdW5kcywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKSk7CisgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3VuZHMsIHJhZGl1
cywgcmFkaXVzLCByYWRpdXMsIHJhZGl1cykpOwogICAgIGNvbnRleHQgPSBsb2NhbENvbnRleHQu
Y2dDb250ZXh0KCk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgbWFpblNoYWRp
bmcuZ2V0KCkpOwogCkBAIC0xNTMyLDcgKzE1MzIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBw
YQogICAgICAgICA/IHNsaWRlclRodW1iVmVydGljYWwoKQogICAgICAgICA6IHNsaWRlclRodW1i
SG9yaXpvbnRhbCgpOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUg
dmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2xp
ZGVyVGh1bWJDZWxsLCBvKTsKQEAgLTE1NjgsMTYgKzE1NjgsMTYgQEAgYm9vbCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGEKICAgICBpZiAoby5zdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJUaHVtYlZl
cnRpY2FsUGFydCkKICAgICAgICAgYm91bmRzLnNldEhlaWdodChib3VuZHMuaGVpZ2h0KCkgKyB2
ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgKiBvLnN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpKTsK
IAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihwYWludElu
Zm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZmZWN0aXZl
Wm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVjdCA9IGJvdW5kczsKICAgICBpZiAo
em9vbUxldmVsICE9IDEuMGYpIHsKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9v
bWVkUmVjdC53aWR0aCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhl
aWdodCh1bnpvb21lZFJlY3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwg
em9vbUxldmVsKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoLXVuem9v
bWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQoKS50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxl
dmVsKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKC11bnpvb21lZFJl
Y3QueCgpLCAtdW56b29tZWRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgW3NsaWRlclRodW1iQ2Vs
bCBkcmF3S25vYjp1bnpvb21lZFJlY3RdOwpAQCAtMTU4OCwxMiArMTU4OCwxMiBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29u
c3QgUGFpbnRJbmZvJiBwYQogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxk
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHIpCiB7Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29u
dGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBOU1NlYXJjaEZpZWxkQ2Vs
bCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CiAKICAgICBzZXRTZWFyY2hDZWxsU3RhdGUobywg
cik7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpOwogCkBAIC0xNjAyLDkgKzE2MDIsOSBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZv
JiBwYQogICAgIGlmICh6b29tTGV2ZWwgIT0gMS4wZikgewogICAgICAgICB1bnpvb21lZFJlY3Qu
c2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7Ci0g
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56
b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRy
YW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJl
Y3QueSgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zY2FsZShGbG9hdFNpemUoem9v
bUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xh
dGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKICAgICAv
LyBTZXQgdGhlIHNlYXJjaCBidXR0b24gdG8gbmlsIGJlZm9yZSBkcmF3aW5nLiAgVGhlbiByZXNl
dCBpdCBzbyB3ZSBjYW4gZHJhdyBpdCBsYXRlci4KQEAgLTE2ODUsNyArMTY4NSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKCFpbnB1dC0+cmVuZGVyZXIoKS0+aXNCb3goKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0
IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3JhcGhp
Y3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKICAgICBzZXRTZWFy
Y2hDZWxsU3RhdGUoKmlucHV0LT5yZW5kZXJlcigpLCByKTsKIAogICAgIE5TU2VhcmNoRmllbGRD
ZWxsKiBzZWFyY2ggPSB0aGlzLT5zZWFyY2goKTsKQEAgLTE2OTUsNyArMTY5NSw3IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgZWxzZSBpZiAoW1tzZWFyY2ggY2FuY2VsQnV0dG9uQ2Vs
bF0gaXNIaWdobGlnaHRlZF0pCiAgICAgICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIHNl
dEhpZ2hsaWdodGVkOk5PXTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihwYWludEluZm8uY29udGV4dCgpKTsKIAogICAgIGZsb2F0IHpvb21MZXZlbCA9
IG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCk7CiAKQEAgLTE3MDYsOSArMTcwNiw5IEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVy
T2JqZWN0JiBvLCBjb25zdCBQCiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAgICAg
IHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7
CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8g
em9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21l
ZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVjdC54
KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNjYWxl
KEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwog
ICAgIH0KIAogICAgIFtbc2VhcmNoIGNhbmNlbEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6dW56
b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOwpAQCAtMTc2Niw3ICsxNzY2LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
UGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBpZiAoIWlucHV0LT5yZW5kZXJlcigpLT5p
c0JveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KTsKKyAgICBMb2NhbEN1cnJl
bnRHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
IHNldFNlYXJjaENlbGxTdGF0ZSgqaW5wdXQtPnJlbmRlcmVyKCksIHIpOwogCiAgICAgTlNTZWFy
Y2hGaWVsZENlbGwqIHNlYXJjaCA9IHRoaXMtPnNlYXJjaCgpOwpAQCAtMTc5OSw3ICsxNzk5LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGlmICghaW5wdXQtPnJlbmRlcmVyKCktPmlz
Qm94KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQpOworICAgIExvY2FsQ3VycmVu
dEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAg
c2V0U2VhcmNoQ2VsbFN0YXRlKCppbnB1dC0+cmVuZGVyZXIoKSwgcik7CiAKICAgICBOU1NlYXJj
aEZpZWxkQ2VsbCogc2VhcmNoID0gdGhpcy0+c2VhcmNoKCk7CkBAIC0xODA3LDcgKzE4MDcsNyBA
QCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKCFbc2VhcmNoIHNlYXJjaE1lbnVUZW1w
bGF0ZV0pCiAgICAgICAgIFtzZWFyY2ggc2V0U2VhcmNoTWVudVRlbXBsYXRlOnNlYXJjaE1lbnVU
ZW1wbGF0ZSgpXTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigq
cGFpbnRJbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihwYWludEluZm8uY29udGV4dCgpKTsKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLnN0eWxl
KCkuZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3NlYXJj
aCBzZWFyY2hCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChzbmFwcGVkSW50UmVjdChpbnB1dC0+
cmVuZGVyQm94KCktPmNvbnRlbnRCb3hSZWN0KCkpKV07CkBAIC0xODE3LDkgKzE4MTcsOSBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBS
ZW5kZXJPYmplY3QmIG8sIGNvbnN0CiAgICAgaWYgKHpvb21MZXZlbCAhPSAxLjBmKSB7CiAgICAg
ICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZl
bCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgp
IC8gem9vbUxldmVsKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpv
b21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0
LnkoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRlKHVuem9vbWVkUmVj
dC54KCksIHVuem9vbWVkUmVjdC55KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnNj
YWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8u
Y29udGV4dCgpLnRyYW5zbGF0ZSgtdW56b29tZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkp
OwogICAgIH0KIAogICAgIFtbc2VhcmNoIHNlYXJjaEJ1dHRvbkNlbGxdIGRyYXdXaXRoRnJhbWU6
dW56b29tZWRSZWN0IGluVmlldzpkb2N1bWVudFZpZXdGb3IobyldOwpAQCAtMTg0Myw3ICsxODQz
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXko
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoIWNvbnRlbnRXaWR0aCB8fCAh
Y29udGVudEhlaWdodCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6
ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQpOwogICAgIExheW91dFBvaW50IGNvbnRlbnRM
b2NhdGlvbiA9IHJlbmRlckJsb2NrLmxvY2F0aW9uKCk7CkBAIC0xODk5LDcgKzE4OTksNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgp
IDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVy
LnN0eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNl
T3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2Uoc25hcHNob3QsIHBsdWdJblJlbmRlcmVyLnN0
eWxlKCkuY29sb3JTcGFjZSgpLCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29tcG9zaXRlU291cmNlT3Zl
cik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0yMDYzLDEwICsyMDYzLDEwIEBAIGJvb2wg
UmVuZGVyVGhlbWVNYWM6OnBhaW50SW1hZ2VDb250cm9sc0J1dHRvbihjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zCiAjaWYgSEFWRShBUFBLSVRfU0VSVklDRV9DT05UUk9MU19TVVBQ
T1JUKQogICAgIE5TU2VydmljZXNSb2xsb3ZlckJ1dHRvbkNlbGwgKmNlbGwgPSBzZXJ2aWNlc1Jv
bGxvdmVyQnV0dG9uQ2VsbCgpOwogCi0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxv
Y2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCk7Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CisgICAgTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAK
LSAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Cisg
ICAgcGFpbnRJbmZvLmNvbnRleHQoKS50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpKTsKIAog
ICAgIEludFJlY3QgaW5uZXJGcmFtZShJbnRQb2ludCgpLCByZWN0LnNpemUoKSk7CiAgICAgW2Nl
bGwgZHJhd1dpdGhGcmFtZTppbm5lckZyYW1lIGluVmlldzpkb2N1bWVudFZpZXdGb3IocmVuZGVy
ZXIpXTsKQEAgLTI0NjIsOCArMjQ2Miw4IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50QXR0
YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQYWludEluCiAKICAg
ICBBdHRhY2htZW50TGF5b3V0IGxheW91dChhdHRhY2htZW50KTsKIAotICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCA9ICpwYWludEluZm8uY29udGV4dDsKLSAgICBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZjb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOworICAgIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQoY29udGV4dCk7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzYXZlcihjb250ZXh0KTsKIAogICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXpl
KHBhaW50UmVjdC5sb2NhdGlvbigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lU2FmYXJpLmNwcAppbmRleCA1NWMwOGQ1NjUyM2U5NWZkZTcyNTYzZWNlMjQ4ODFh
ZjEwMDkwM2NhLi40NzcxOTNjMTNlZTVmYTk2M2E5NmQxNWE4ZmIyMDQ4ODc4ZGQ1MTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVTYWZhcmkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVNhZmFyaS5jcHAKQEAgLTM5
Miw3ICszOTIsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludENoZWNrYm94KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBwYQogICAgIE5TQ29udHJvbFNpemUg
Y29udHJvbFNpemUgPSBjb250cm9sU2l6ZUZvckZvbnQoby5zdHlsZSgpKTsKIAogICAgIEludFJl
Y3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QociwgY2hlY2tib3hTaXplcygpW2NvbnRyb2xT
aXplXSwgY2hlY2tib3hNYXJnaW5zKGNvbnRyb2xTaXplKSk7ICAKLSAgICBwYWludFRoZW1lUGFy
dChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsK
KyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6Q2hlY2tib3hQYXJ0LCBwYWludEluZm8u
Y29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBk
ZXRlcm1pbmVTdGF0ZShvKSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC00MzEsNyArNDMx
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmpl
Y3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnQKICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xT
aXplID0gY29udHJvbFNpemVGb3JGb250KG8uc3R5bGUoKSk7CiAgCiAgICAgSW50UmVjdCBpbmZs
YXRlZFJlY3QgPSBpbmZsYXRlUmVjdChyLCByYWRpb1NpemVzKClbY29udHJvbFNpemVdLCByYWRp
b01hcmdpbnMoY29udHJvbFNpemUpKTsgICAgCi0gICAgcGFpbnRUaGVtZVBhcnQoUmFkaW9CdXR0
b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGluZmxhdGVkUmVj
dCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKKyAgICBwYWludFRoZW1lUGFydChS
YWRpb0J1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCksIGlu
ZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpw
YWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbgog
ICAgIH0gZWxzZQogICAgICAgICBwYXJ0ID0gU2FmYXJpVGhlbWU6OlNxdWFyZUJ1dHRvblBhcnQ7
CiAKLSAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8pKTsK
KyAgICBwYWludFRoZW1lUGFydChwYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpLCBpbmZsYXRlZFJlY3QsIGNvbnRyb2xTaXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC01ODUsNyArNTg1LDcgQEAgYm9vbCBSZW5kZXJUaGVt
ZVNhZmFyaTo6cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWlu
dEluZm8mIHAKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFp
bnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRGaWVsZFBhcnQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5TQ29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUo
bykgJiB+Rm9jdXNlZFN0YXRlKTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6VGV4
dEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgKE5T
Q29udHJvbFNpemUpMCwgZGV0ZXJtaW5lU3RhdGUobykgJiB+Rm9jdXNlZFN0YXRlKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTU5OCwxMCArNTk4LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVT
YWZhcmk6OnBhaW50Q2Fwc0xvY2tJbmRpY2F0b3IoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
dCBQYWluCiAjaWYgZGVmaW5lZChTQUZBUklfVEhFTUVfVkVSU0lPTikgJiYgU0FGQVJJX1RIRU1F
X1ZFUlNJT04gPj0gMQogICAgIEFTU0VSVChTYWZhcmlUaGVtZUxpYnJhcnkoKSk7CiAKLSAgICBp
ZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKKyAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcGFpbnRUaGVtZVBhcnQoQ2Fwc0xvY2tQYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0ZSkw
KTsKKyAgICBwYWludFRoZW1lUGFydChDYXBzTG9ja1BhcnQsIHBhaW50SW5mby5jb250ZXh0KCku
cGxhdGZvcm1Db250ZXh0KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIChUaGVtZUNvbnRyb2xTdGF0
ZSkwKTsKIAogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCkBAIC02MTMsNyArNjEzLDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmIG8s
IGNvbnN0IFBhaW50SW5mbyYgcGEKIHsKICAgICBBU1NFUlQoU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
OwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlRleHRBcmVhUGFydCwgcGFpbnRJ
bmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCAoTlNDb250cm9sU2l6ZSkwLCBkZXRl
cm1pbmVTdGF0ZShvKSAmIH5Gb2N1c2VkU3RhdGUpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFy
aVRoZW1lOjpUZXh0QXJlYVBhcnQsIHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0
KCksIHIsIChOU0NvbnRyb2xTaXplKTAsIGRldGVybWluZVN0YXRlKG8pICYgfkZvY3VzZWRTdGF0
ZSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC02NjIsNyArNjYyLDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0
IFBhaW50SW5mbyYgaW4KICAgICBpZiAoci53aWR0aCgpID49IG1pbmltdW1NZW51TGlzdFNpemUo
by5zdHlsZSgpKSkKICAgICAgICAgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0ZVJlY3QoaW5mbGF0ZWRS
ZWN0LCBzaXplLCBwb3B1cEJ1dHRvbk1hcmdpbnMoY29udHJvbFNpemUpKTsKIAotICAgIHBhaW50
VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgaW5mbGF0ZWRSZWN0LCBjb250cm9sU2l6ZSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAg
IHBhaW50VGhlbWVQYXJ0KERyb3BEb3duQnV0dG9uUGFydCwgaW5mby5jb250ZXh0KCkucGxhdGZv
cm1Db250ZXh0KCksIGluZmxhdGVkUmVjdCwgY29udHJvbFNpemUsIGRldGVybWluZVN0YXRlKG8p
KTsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTcyMyw5ICs3MjMsOSBAQCB2b2lkIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29ucwogICAgIGlmIChyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBs
YXRmb3JtQ29udGV4dCgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKIAogICAgIEZsb2F0Um91bmRlZFJlY3QgYm91bmQg
PSBGbG9hdFJvdW5kZWRSZWN0KG8uc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHIpKTsKICAg
ICBpbnQgcmFkaXVzID0gYm91bmQucmFkaWkoKS50b3BMZWZ0KCkud2lkdGgoKTsKQEAgLTc0OSwz
NCArNzQ5LDM0IEBAIHZvaWQgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50TWVudUxpc3RCdXR0b25H
cmFkaWVudHMoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zCiAgICAgUmV0YWluUHRyPENHU2hh
ZGluZ1JlZj4gbGVmdFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0ZUF4aWFsKGNzcGFj
ZSwgQ0dQb2ludE1ha2Uoci54KCksICByLnkoKSksIENHUG9pbnRNYWtlKHIueCgpICsgcmFkaXVz
LCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZhbHNlKSk7CiAKICAgICBSZXRh
aW5QdHI8Q0dTaGFkaW5nUmVmPiByaWdodFNoYWRpbmcgPSBhZG9wdENGKENHU2hhZGluZ0NyZWF0
ZUF4aWFsKGNzcGFjZSwgQ0dQb2ludE1ha2Uoci5tYXhYKCksICByLnkoKSksIENHUG9pbnRNYWtl
KHIubWF4WCgpIC0gcmFkaXVzLCByLnkoKSksIG1haW5GdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGZh
bHNlKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKKyAgICBwYWludEluZm8uY29u
dGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIHIpOwotICAg
IHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmQpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5kKTsKICAgICBDR0NvbnRleHREcmF3U2hh
ZGluZyhjb250ZXh0LCBtYWluU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAotICAgIHBh
aW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7
CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCB0b3BHcmFkaWVudCk7Ci0gICAgcGFp
bnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2lu
Z0ludFJlY3QodG9wR3JhZGllbnQpLCBib3VuZC5yYWRpaSgpLnRvcExlZnQoKSwgYm91bmQucmFk
aWkoKS50b3BSaWdodCgpLCBJbnRTaXplKCksIEludFNpemUoKSkpOworICAgIHBhaW50SW5mby5j
b250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KEZsb2F0Um91bmRlZFJlY3QoZW5jbG9zaW5nSW50UmVj
dCh0b3BHcmFkaWVudCksIGJvdW5kLnJhZGlpKCkudG9wTGVmdCgpLCBib3VuZC5yYWRpaSgpLnRv
cFJpZ2h0KCksIEludFNpemUoKSwgSW50U2l6ZSgpKSk7CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRp
bmcoY29udGV4dCwgdG9wU2hhZGluZy5nZXQoKSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJl
c3RvcmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIAogICAgIGlmICgh
Ym90dG9tR3JhZGllbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
YXZlKCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogICAgICAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGJvdHRvbUdyYWRpZW50KTsKLSAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xvc2luZ0lu
dFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQucmFkaWko
KS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOworICAgICAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0KGVuY2xv
c2luZ0ludFJlY3QoYm90dG9tR3JhZGllbnQpLCBJbnRTaXplKCksIEludFNpemUoKSwgYm91bmQu
cmFkaWkoKS5ib3R0b21MZWZ0KCksIGJvdW5kLnJhZGlpKCkuYm90dG9tUmlnaHQoKSkpOwogICAg
ICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBib3R0b21TaGFkaW5nLmdldCgpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQoKS5yZXN0b3JlKCk7CiAgICAgfQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNh
dmUoKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLnNhdmUoKTsKICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIHIpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJl
Y3QoYm91bmQpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xpcFJvdW5kZWRSZWN0KGJvdW5k
KTsKICAgICBDR0NvbnRleHREcmF3U2hhZGluZyhjb250ZXh0LCBsZWZ0U2hhZGluZy5nZXQoKSk7
CiAgICAgQ0dDb250ZXh0RHJhd1NoYWRpbmcoY29udGV4dCwgcmlnaHRTaGFkaW5nLmdldCgpKTsK
LSAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0
KCkucmVzdG9yZSgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLnJlc3RvcmUoKTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVNhZmFy
aTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CkBAIC03OTgsMTAgKzc5OCwxMCBAQCBib29sIFJlbmRlclRoZW1lU2FmYXJpOjpwYWludE1lbnVM
aXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZQogICAgIGlmIChi
b3VuZHMud2lkdGgoKSA8IGFycm93V2lkdGggKyBhcnJvd1BhZGRpbmdMZWZ0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuc2F2ZSgpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldEZpbGxD
b2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKE5vU3Ryb2tlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8u
Y29udGV4dCgpLnNldEZpbGxDb2xvcihyZW5kZXJlci5zdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgcGFpbnRJ
bmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihOb1N0cm9rZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CiAKICAgICBGbG9hdFBvaW50IGFycm93WzNdOwogICAgIGFycm93WzBdID0gRmxvYXRQb2lu
dChsZWZ0RWRnZSwgY2VudGVyWSAtIGFycm93SGVpZ2h0IC8gMi4wZik7CkBAIC04MDksNyArODA5
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRp
b25zKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGUKICAgICBhcnJvd1syXSA9IEZsb2F0UG9pbnQo
bGVmdEVkZ2UgKyBhcnJvd1dpZHRoIC8gMi4wZiwgY2VudGVyWSArIGFycm93SGVpZ2h0IC8gMi4w
Zik7CiAKICAgICAvLyBEcmF3IHRoZSBhcnJvdwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3
Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5k
cmF3Q29udmV4UG9seWdvbigzLCBhcnJvdywgdHJ1ZSk7CiAKICAgICBDb2xvciBsZWZ0U2VwYXJh
dG9yQ29sb3IoMCwgMCwgMCwgNDApOwogICAgIENvbG9yIHJpZ2h0U2VwYXJhdG9yQ29sb3IoMjU1
LCAyNTUsIDI1NSwgNDApOwpAQCAtODE5LDE3ICs4MTksMTcgQEAgYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGUKICAgICBpbnQgbGVmdEVkZ2VPZlNlcGFyYXRvciA9IHN0YXRpY19jYXN0PGludD4obGVm
dEVkZ2UgLSBhcnJvd1BhZGRpbmdMZWZ0KTsgLy8gRklYTUU6IFJvdW5kPwogCiAgICAgLy8gRHJh
dyB0aGUgc2VwYXJhdG9yIHRvIHRoZSBsZWZ0IG9mIHRoZSBhcnJvd3MKLSAgICBwYWludEluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKDEpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5z
ZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFN0
cm9rZUNvbG9yKGxlZnRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAg
cGFpbnRJbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3Is
IGJvdW5kcy55KCkpLAorICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhpY2tuZXNz
KDEpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2Up
OworICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IobGVmdFNlcGFyYXRvckNv
bG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdM
aW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IsIGJvdW5kcy55KCkpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChsZWZ0RWRnZU9mU2VwYXJhdG9yLCBib3Vu
ZHMubWF4WSgpKSk7CiAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Iocmln
aHRTZXBhcmF0b3JDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgcGFpbnRJbmZvLmNv
bnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JT
cGFjZSwgYm91bmRzLnkoKSksCisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xv
cihyaWdodFNlcGFyYXRvckNvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBh
cmF0b3JTcGFjZSwgYm91bmRzLnkoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEludFBvaW50KGxlZnRFZGdlT2ZTZXBhcmF0b3IgKyBzZXBhcmF0b3JTcGFjZSwgYm91bmRzLm1h
eFkoKSkpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKKyAgICBwYWludElu
Zm8uY29udGV4dCgpLnJlc3RvcmUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTkzNSwx
MCArOTM1LDEwIEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29u
c3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mCiAgICAgZWxzZSBpZiAoby5zdHls
ZSgpLmFwcGVhcmFuY2UoKSA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpCiAgICAgICAgIGJvdW5kcy5z
ZXRSZWN0KEludFJlY3Qoci54KCkgKyByLndpZHRoKCkgLyAyIC0gdHJhY2tXaWR0aCAvIDIsIHIu
eSgpLCB0cmFja1dpZHRoLCByLmhlaWdodCgpKSk7CiAKLSAgICBDR0NvbnRleHRSZWYgY29udGV4
dCA9IHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRS
ZWYgY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCk7CiAgICAg
Q0dDb2xvclNwYWNlUmVmIGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKIAotICAg
IHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZl
KCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBib3VuZHMucmVjdCgpKTsKIAog
ICAgIHN0cnVjdCBDR0Z1bmN0aW9uQ2FsbGJhY2tzIG1haW5DYWxsYmFja3MgPSB7IDAsIFRyYWNr
R3JhZGllbnRJbnRlcnBvbGF0ZSwgTlVMTCB9OwpAQCAtOTQ5LDkgKzk0OSw5IEBAIGJvb2wgUmVu
ZGVyVGhlbWVTYWZhcmk6OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBj
b25zdCBQYWludEluZm8mCiAgICAgZWxzZQogICAgICAgICBtYWluU2hhZGluZyA9IGFkb3B0Q0Yo
Q0dTaGFkaW5nQ3JlYXRlQXhpYWwoY3NwYWNlLCBDR1BvaW50TWFrZShib3VuZHMucmVjdCgpLngo
KSwgIGJvdW5kcy5yZWN0KCkueSgpKSwgQ0dQb2ludE1ha2UoYm91bmRzLnJlY3QoKS54KCksIGJv
dW5kcy5yZWN0KCkubWF4WSgpKSwgbWFpbkZ1bmN0aW9uLmdldCgpLCBmYWxzZSwgZmFsc2UpKTsK
IAotICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm91bmRzKTsKKyAgICBw
YWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChib3VuZHMpOwogICAgIENHQ29udGV4
dERyYXdTaGFkaW5nKGNvbnRleHQsIG1haW5TaGFkaW5nLmdldCgpKTsKLSAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwog
ICAgIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTk2Nyw3ICs5NjcsNyBAQCBjb25zdCBmbG9h
dCB2ZXJ0aWNhbFNsaWRlckhlaWdodFBhZGRpbmcgPSAwLjFmOwogYm9vbCBSZW5kZXJUaGVtZVNh
ZmFyaTo6cGFpbnRTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByKQogewogICAgIEFTU0VSVChTYWZhcmlU
aGVtZUxpYnJhcnkoKSk7Ci0gICAgcGFpbnRUaGVtZVBhcnQoU2xpZGVyVGh1bWJQYXJ0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHIsIE5TU21hbGxDb250cm9sU2l6ZSwg
ZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNsaWRlclRodW1iUGFydCwg
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgciwgTlNTbWFsbENvbnRyb2xT
aXplLCBkZXRlcm1pbmVTdGF0ZShvKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05OTAs
NyArOTkwLDcgQEAgYm9vbCBSZW5kZXJUaGVtZVNhZmFyaTo6cGFpbnRTZWFyY2hGaWVsZChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYKIHsKICAgICBBU1NFUlQoU2FmYXJp
VGhlbWVMaWJyYXJ5KCkpOwogCi0gICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJj
aEZpZWxkUGFydCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250
cm9sU2l6ZUZyb21SZWN0KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8p
KTsKKyAgICBwYWludFRoZW1lUGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRQYXJ0LCBwYWlu
dEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCByLCBjb250cm9sU2l6ZUZyb21SZWN0
KHIsIHNlYXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKQEAgLTEwNTEsNyArMTA1MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6
OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25z
CiAKICAgICBJbnRSZWN0IHNlYXJjaFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRo
ZW1lOjpTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblBhcnQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9tUmVjdChzZWFyY2hSZWN0
LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7CisgICAgcGFpbnRUaGVt
ZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uUGFydCwgcGFpbnRJbmZv
LmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVGcm9t
UmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShvKSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMTA2LDcgKzExMDYsNyBAQCBib29sIFJlbmRl
clRoZW1lU2FmYXJpOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0
IFJlbmRlck9iamVjdAogCiAgICAgSW50UmVjdCBzZWFyY2hSZWN0ID0gcmVuZGVyZXItPmFic29s
dXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCk7CiAKLSAgICBwYWludFRoZW1l
UGFydChTYWZhcmlUaGVtZTo6U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQsIHBhaW50
SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2VhcmNoUmVjdCwgY29udHJvbFNpemVG
cm9tUmVjdChzZWFyY2hSZWN0LCBzZWFyY2hGaWVsZFNpemVzKCkpLCBkZXRlcm1pbmVTdGF0ZShv
KSk7CisgICAgcGFpbnRUaGVtZVBhcnQoU2FmYXJpVGhlbWU6OlNlYXJjaEZpZWxkUmVzdWx0c0Rl
Y29yYXRpb25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpLCBzZWFy
Y2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNlYXJjaEZpZWxkU2l6ZXMo
KSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzAs
NyArMTEzMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVTYWZhcmk6OnBhaW50U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uCiAKICAgICBJbnRSZWN0IHNlYXJj
aFJlY3QgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1RyYW5zZm9y
bXMoKTsKIAotICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNlYXJj
aFJlY3QsIGNvbnRyb2xTaXplRnJvbVJlY3Qoc2VhcmNoUmVjdCwgc2VhcmNoRmllbGRTaXplcygp
KSwgZGV0ZXJtaW5lU3RhdGUobykpOworICAgIHBhaW50VGhlbWVQYXJ0KFNhZmFyaVRoZW1lOjpT
ZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25QYXJ0LCBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3Jt
Q29udGV4dCgpLCBzZWFyY2hSZWN0LCBjb250cm9sU2l6ZUZyb21SZWN0KHNlYXJjaFJlY3QsIHNl
YXJjaEZpZWxkU2l6ZXMoKSksIGRldGVybWluZVN0YXRlKG8pKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4
IDE2MzVhNzRlNTg4YjU4Y2Q5ZDQ5MTQxNGYxY2ZjODdiM2VlYmJjYTUuLjk3ZGVmNjliYjk3NzE2
Mjg4NTdlM2QxZGRkYjA4NTUzMTg1MWNiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lV2luLmNwcApAQCAtNjIyLDcgKzYyMiw3IEBAIFRoZW1lRGF0YSBSZW5kZXJU
aGVtZVdpbjo6Z2V0VGhlbWVEYXRhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgQ29udHJvbFN1YlBh
cnQgc3ViCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0NvbnRyb2wo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmplY3QmIG8sIEhBTkRMRSB0
aGVtZSwgY29uc3QgVGhlbWVEYXRhJiB0aGVtZURhdGEsIGNvbnN0IEludFJlY3QmIHIpCitzdGF0
aWMgdm9pZCBkcmF3Q29udHJvbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgSEFORExFIHRoZW1lLCBjb25zdCBUaGVtZURhdGEmIHRoZW1lRGF0YSwgY29u
c3QgSW50UmVjdCYgcikKIHsKICAgICBib29sIGFscGhhQmxlbmQgPSBmYWxzZTsKICAgICBpZiAo
dGhlbWUpCkBAIC02NzcsMTMgKzY3NywxMyBAQCBzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCYgbywgSEFORExFCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWFscGhhQmxlbmQgJiYgIWNvbnRleHQtPmlzSW5UcmFu
c3BhcmVuY3lMYXllcigpKQorICAgIGlmICghYWxwaGFCbGVuZCAmJiAhY29udGV4dC5pc0luVHJh
bnNwYXJlbmN5TGF5ZXIoKSkKICAgICAgICAgRElCUGl4ZWxEYXRhOjpzZXRSR0JBQml0bWFwQWxw
aGEod2luZG93c0NvbnRleHQuaGRjKCksIHIsIDI1NSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVX
aW46OnBhaW50QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByKQogeyAgCi0gICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywg
YnV0dG9uVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKKyAgICBkcmF3Q29udHJvbChpLmNv
bnRleHQoKSwgIG8sIGJ1dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgcik7CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCkBAIC03MDcsOCArNzA3LDggQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6
cGFpbnRJbm5lclNwaW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludElu
Zm8KICAgICBJbnRSZWN0IGRvd25SZWN0KHIpOwogICAgIGRvd25SZWN0LnNldFkodXBSZWN0Lm1h
eFkoKSk7CiAgICAgZG93blJlY3Quc2V0SGVpZ2h0KHIuaGVpZ2h0KCkgLSB1cFJlY3QuaGVpZ2h0
KCkpOwotICAgIGRyYXdDb250cm9sKGkuY29udGV4dCwgbywgc3BpbkJ1dHRvblRoZW1lKCksIGdl
dFRoZW1lRGF0YShvLCBTcGluQnV0dG9uVXApLCB1cFJlY3QpOwotICAgIGRyYXdDb250cm9sKGku
Y29udGV4dCwgbywgc3BpbkJ1dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvLCBTcGluQnV0dG9u
RG93biksIGRvd25SZWN0KTsKKyAgICBkcmF3Q29udHJvbChpLmNvbnRleHQoKSwgbywgc3BpbkJ1
dHRvblRoZW1lKCksIGdldFRoZW1lRGF0YShvLCBTcGluQnV0dG9uVXApLCB1cFJlY3QpOworICAg
IGRyYXdDb250cm9sKGkuY29udGV4dCgpLCBvLCBzcGluQnV0dG9uVGhlbWUoKSwgZ2V0VGhlbWVE
YXRhKG8sIFNwaW5CdXR0b25Eb3duKSwgZG93blJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IApAQCAtNzMwLDcgKzczMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVXaW46OnNldENoZWNrYm94U2l6
ZShSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVGhlbWVXaW46OnBhaW50
VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBGbG9hdFJlY3QmIHIpCiB7Ci0gICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywgdGV4dEZp
ZWxkVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCBJbnRSZWN0KHIpKTsKKyAgICBkcmF3Q29udHJv
bChpLmNvbnRleHQoKSwgIG8sIHRleHRGaWVsZFRoZW1lKCksIGdldFRoZW1lRGF0YShvKSwgSW50
UmVjdChyKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC03NDYsNyArNzQ2LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLCBjb25zdCBQYWludEluZm8KICAgICAgICAgcGFydCA9IFRGUF9URVhURklFTEQ7CiAgICAg
fQogCi0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRlcmVyLCB0aGVtZSwg
VGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkp
OworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRlcmVyLCB0aGVtZSwg
VGhlbWVEYXRhKHBhcnQsIGRldGVybWluZVN0YXRlKHJlbmRlcmVyKSksIEludFJlY3QocmVjdCkp
OwogICAgIAogICAgIHJldHVybiBwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoZG93bmNh
c3Q8UmVuZGVyQm94PihyZW5kZXJlciksIHBhaW50SW5mbywgRmxvYXRSZWN0KHJlY3QpKTsKIH0K
QEAgLTgwOCw3ICs4MDgsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludE1lbnVMaXN0QnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgYwogICAgICAgICBidXR0
b25SZWN0LnNldFdpZHRoKGJ1dHRvblJlY3Qud2lkdGgoKSArIHZpc3RhTWVudUxpc3RCdXR0b25P
dXRzZXQpOwogICAgIH0KIAotICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5k
ZXJlciwgbWVudUxpc3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0
KTsKKyAgICBkcmF3Q29udHJvbChwYWludEluZm8uY29udGV4dCgpLCByZW5kZXJlciwgbWVudUxp
c3RUaGVtZSgpLCBnZXRUaGVtZURhdGEocmVuZGVyZXIpLCBidXR0b25SZWN0KTsKIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTgyNywxMyArODI3LDEzIEBAIGJvb2wgUmVuZGVyVGhlbWVXaW46
OnBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8m
IGksCiAgICAgICAgIGJvdW5kcy5zZXRYKHIueCgpICsgci53aWR0aCgpIC8gMiAtIHRyYWNrV2lk
dGggLyAyKTsKICAgICB9CiAgICAgCi0gICAgZHJhd0NvbnRyb2woaS5jb250ZXh0LCAgbywgc2xp
ZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCBib3VuZHMpOworICAgIGRyYXdDb250cm9sKGku
Y29udGV4dCgpLCAgbywgc2xpZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCBib3VuZHMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTbGlkZXJU
aHVtYihjb25zdCBSZW5kZXJPYmplY3QmIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50
UmVjdCYgcikKIHsgICAKLSAgICBkcmF3Q29udHJvbChpLmNvbnRleHQsICBvLCBzbGlkZXJUaGVt
ZSgpLCBnZXRUaGVtZURhdGEobyksIHIpOworICAgIGRyYXdDb250cm9sKGkuY29udGV4dCgpLCAg
bywgc2xpZGVyVGhlbWUoKSwgZ2V0VGhlbWVEYXRhKG8pLCByKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIFJlbmRlclRoZW1lV2luOjpwYWludFNlYXJj
aEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUAogCiAgICAg
c3RhdGljIEltYWdlKiBjYW5jZWxJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZSgi
c2VhcmNoQ2FuY2VsIikubGVha1JlZigpOwogICAgIHN0YXRpYyBJbWFnZSogY2FuY2VsUHJlc3Nl
ZEltYWdlID0gSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJzZWFyY2hDYW5jZWxQcmVzc2Vk
IikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5kcmF3SW1hZ2UoaXNQcmVzc2Vk
KG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNw
YWNlKCksIGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoaXNQcmVz
c2VkKG8pID8gY2FuY2VsUHJlc3NlZEltYWdlIDogY2FuY2VsSW1hZ2UsIG8uc3R5bGUoKS5jb2xv
clNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC05NDAsNyArOTQw
LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0
aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmIG8KICAgICBib3VuZHMuc2V0WShwYXJlbnRCb3gu
eSgpICsgKHBhcmVudEJveC5oZWlnaHQoKSAtIGJvdW5kcy5oZWlnaHQoKSArIDEpIC8gMik7CiAg
ICAgCiAgICAgc3RhdGljIEltYWdlKiBtYWduaWZpZXJJbWFnZSA9IEltYWdlOjpsb2FkUGxhdGZv
cm1SZXNvdXJjZSgic2VhcmNoTWFnbmlmaWVyIikubGVha1JlZigpOwotICAgIHBhaW50SW5mby5j
b250ZXh0LT5kcmF3SW1hZ2UobWFnbmlmaWVySW1hZ2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCks
IGJvdW5kcyk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UobWFnbmlmaWVySW1h
Z2UsIG8uc3R5bGUoKS5jb2xvclNwYWNlKCksIGJvdW5kcyk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC05NzUsNyArOTc1LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdAogICAgIGJvdW5k
cy5zZXRZKHBhcmVudEJveC55KCkgKyAocGFyZW50Qm94LmhlaWdodCgpIC0gYm91bmRzLmhlaWdo
dCgpICsgMSkgLyAyKTsKIAogICAgIHN0YXRpYyBJbWFnZSogbWFnbmlmaWVySW1hZ2UgPSBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoInNlYXJjaE1hZ25pZmllclJlc3VsdHMiKS5sZWFrUmVm
KCk7Ci0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5z
dHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRy
YXdJbWFnZShtYWduaWZpZXJJbWFnZSwgby5zdHlsZSgpLmNvbG9yU3BhY2UoKSwgYm91bmRzKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTExMzksMTQgKzExMzksMTQgQEAgYm9vbCBSZW5k
ZXJUaGVtZVdpbjo6cGFpbnRNZXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmYKICAgICBpbnQgcmVtYWluaW5nID0gc3RhdGljX2Nhc3Q8aW50PigoMS4w
IC0gZWxlbWVudC0+dmFsdWVSYXRpbygpKSAqIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVjdC5zaXpl
KCkud2lkdGgoKSkpOwogCiAgICAgLy8gRHJhdyB0aGUgYmFja2dyb3VuZAotICAgIGRyYXdDb250
cm9sKHBhaW50SW5mby5jb250ZXh0LCByZW5kZXJPYmplY3QsIHByb2dyZXNzQmFyVGhlbWUoKSwg
dGhlbWUsIHJlY3QpOworICAgIGRyYXdDb250cm9sKHBhaW50SW5mby5jb250ZXh0KCksIHJlbmRl
ck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgcmVjdCk7CiAKICAgICAvLyBEcmF3
IHRoZSBwcm9ncmVzcyBwb3J0aW9uCiAgICAgSW50UmVjdCBjb21wbGV0ZWRSZWN0KHJlY3QpOwog
ICAgIGNvbXBsZXRlZFJlY3QuY29udHJhY3QocmVtYWluaW5nLCAwKTsKIAogICAgIHRoZW1lLm1f
cGFydCA9IFBQX0ZJTEw7Ci0gICAgZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQsIHJlbmRl
ck9iamVjdCwgcHJvZ3Jlc3NCYXJUaGVtZSgpLCB0aGVtZSwgY29tcGxldGVkUmVjdCk7CisgICAg
ZHJhd0NvbnRyb2wocGFpbnRJbmZvLmNvbnRleHQoKSwgcmVuZGVyT2JqZWN0LCBwcm9ncmVzc0Jh
clRoZW1lKCksIHRoZW1lLCBjb21wbGV0ZWRSZWN0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKaW5kZXggNWY3Y2UxY2U3Njlk
YzE3NmU3NGJhNzA2NjQyMzlhNmY4YWI5NGE4Ny4uZTkzNTVhYTljMTVmOTllMGZjMzE4MWU2ZDFm
YjQ1NGI5NmM4NzM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3Bw
CkBAIC0xODAsMTEgKzE4MCwxMSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJlcGxhY2VkKFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogCiAgICAgTGF5
b3V0UmVjdCBjb250ZW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAgY29udGVudFJlY3Qu
bW92ZUJ5KHBhaW50T2Zmc2V0KTsKLSAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWlu
dEluZm8uY29udGV4dDsKKyAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBwYWludEluZm8u
Y29udGV4dCgpOwogICAgIGJvb2wgY2xpcCA9ICFjb250ZW50UmVjdC5jb250YWlucyhyZWN0KTsK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQsIGNsaXAp
OworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0LCBjbGlw
KTsKICAgICBpZiAoY2xpcCkKLSAgICAgICAgY29udGV4dC0+Y2xpcChjb250ZW50UmVjdCk7Cisg
ICAgICAgIGNvbnRleHQuY2xpcChjb250ZW50UmVjdCk7CiAKICAgICBpZiAoZGlzcGxheWluZ1Bv
c3RlcikKICAgICAgICAgcGFpbnRJbnRvUmVjdChjb250ZXh0LCByZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA4ZjBiNmU2MTk0ZTA3NTJkNjY3M2M5MjFl
OWRjMmZiNjA3M2RiM2YzLi4wNGEwOGQ1ZGVkMDNiZDNlNWQzN2Q5N2FhYzFlNjM2MmQ5MDNlNWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01MTcsNyArNTE3
LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogCiAgICAgLy8gVGhpcyBhdm9pZHMgcGFpbnRpbmcg
Z2FyYmFnZSBiZXR3ZWVuIGNvbHVtbnMgaWYgdGhlcmUgaXMgYSBjb2x1bW4gZ2FwLgogICAgIGlm
IChmcmFtZVZpZXcoKS5wYWdpbmF0aW9uKCkubW9kZSAhPSBQYWdpbmF0aW9uOjpVbnBhZ2luYXRl
ZCAmJiBwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KCp0aGlzKSkKLSAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNl
QmFja2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICBwYWludElu
Zm8uY29udGV4dCgpLmZpbGxSZWN0KHBhaW50SW5mby5yZWN0LCBmcmFtZVZpZXcoKS5iYXNlQmFj
a2dyb3VuZENvbG9yKCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgcGFpbnRPYmplY3Qo
cGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CkBAIC02MTMsMTIgKzYxMywxMiBAQCB2b2lkIFJl
bmRlclZpZXc6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JikKICAgICAgICAgQ29sb3IgZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IgPSBm
cmFtZVZpZXcoKS5kb2N1bWVudEJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IgPSAoYmFja2dyb3VuZFNob3VsZEV4dGVuZEJleW9uZFBhZ2UgJiYgZG9jdW1l
bnRCYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSA/IGRvY3VtZW50QmFja2dyb3VuZENvbG9yIDog
ZnJhbWVWaWV3KCkuYmFzZUJhY2tncm91bmRDb2xvcigpOwogICAgICAgICBpZiAoYmFja2dyb3Vu
ZENvbG9yLmFscGhhKCkpIHsKLSAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIHByZXZpb3Vz
T3BlcmF0b3IgPSBwYWludEluZm8uY29udGV4dC0+Y29tcG9zaXRlT3BlcmF0aW9uKCk7Ci0gICAg
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0
ZUNvcHkpOwotICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHBhaW50SW5m
by5yZWN0LCBiYWNrZ3JvdW5kQ29sb3IsIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKLSAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVy
YXRvcik7CisgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBwcmV2aW91c09wZXJhdG9yID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5jb21wb3NpdGVPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZUNvcHkpOwor
ICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChwYWludEluZm8ucmVjdCwg
YmFja2dyb3VuZENvbG9yLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7CisgICAgICAgICAgICBwYWlu
dEluZm8uY29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihwcmV2aW91c09wZXJhdG9yKTsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y2xlYXJSZWN0
KHBhaW50SW5mby5yZWN0KTsKKyAgICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuY2xlYXJS
ZWN0KHBhaW50SW5mby5yZWN0KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHAKaW5kZXggYWM3Yzg4ODJjZmM1ODIzNjEzNTBhY2NjOTg3MTNmMTE4
YmMxYjI1My4uOTk0Y2IwYzJjZjZmZmU3ODI4NjdmNTJkMWYyY2E5MzQ3MDQyZWNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTIyOCwxNCArMjI4LDE0
IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPCiAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRz
IGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBl
bmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIsCiAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlz
IGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3Qt
cmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KICAgICBpZiAoIXdpZGdldFBhaW50T2Zm
c2V0LmlzWmVybygpKSB7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lk
Z2V0UGFpbnRPZmZzZXQpOworICAgICAgICBwYWludEluZm8uY29udGV4dCgpLnRyYW5zbGF0ZSh3
aWRnZXRQYWludE9mZnNldCk7CiAgICAgICAgIHBhaW50UmVjdC5tb3ZlKC13aWRnZXRQYWludE9m
ZnNldCk7CiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgcmVwYWludHJlY3QgZW5jb2xzaW5n
L2ludGVncmFsIHNuYXBwaW5nIHdoZW4gUmVuZGVyV2lkZ2V0IGJlY29tZXMgZGV2aWNlIHBpeGVs
IHNuYXBwZWQuCi0gICAgbV93aWRnZXQtPnBhaW50KHBhaW50SW5mby5jb250ZXh0LCBzbmFwcGVk
SW50UmVjdChwYWludFJlY3QpKTsKKyAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRl
eHQoKSwgc25hcHBlZEludFJlY3QocGFpbnRSZWN0KSk7CiAKICAgICBpZiAoIXdpZGdldFBhaW50
T2Zmc2V0LmlzWmVybygpKQotICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC13
aWRnZXRQYWludE9mZnNldCk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkudHJhbnNsYXRl
KC13aWRnZXRQYWludE9mZnNldCk7CiAKICAgICBpZiAoaXM8RnJhbWVWaWV3PigqbV93aWRnZXQp
KSB7CiAgICAgICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gZG93bmNhc3Q8RnJhbWVWaWV3Pigq
bV93aWRnZXQpOwpAQCAtMjc1LDI2ICsyNzUsMjYgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUHVzaCBhIGNsaXAgaWYgd2UgaGF2ZSBh
IGJvcmRlciByYWRpdXMsIHNpbmNlIHdlIHdhbnQgdG8gcm91bmQgdGhlIGZvcmVncm91bmQgY29u
dGVudCB0aGF0IGdldHMgcGFpbnRlZC4KLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUo
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIEZsb2F0Um91
bmRlZFJlY3Qgcm91bmRlZElubmVyUmVjdCA9IEZsb2F0Um91bmRlZFJlY3Qoc3R5bGUoKS5nZXRS
b3VuZGVkSW5uZXJCb3JkZXJGb3IoYm9yZGVyUmVjdCwKICAgICAgICAgICAgIHBhZGRpbmdUb3Ao
KSArIGJvcmRlclRvcCgpLCBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSwgcGFkZGlu
Z0xlZnQoKSArIGJvcmRlckxlZnQoKSwgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJSaWdodCgpLCB0
cnVlLCB0cnVlKSk7Ci0gICAgICAgIGNsaXBSb3VuZGVkSW5uZXJSZWN0KHBhaW50SW5mby5jb250
ZXh0LCBib3JkZXJSZWN0LCByb3VuZGVkSW5uZXJSZWN0KTsKKyAgICAgICAgY2xpcFJvdW5kZWRJ
bm5lclJlY3QocGFpbnRJbmZvLmNvbnRleHQoKSwgYm9yZGVyUmVjdCwgcm91bmRlZElubmVyUmVj
dCk7CiAgICAgfQogCiAgICAgaWYgKG1fd2lkZ2V0KQogICAgICAgICBwYWludENvbnRlbnRzKHBh
aW50SW5mbywgcGFpbnRPZmZzZXQpOwogCiAgICAgaWYgKHN0eWxlKCkuaGFzQm9yZGVyUmFkaXVz
KCkpCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIHBhaW50
SW5mby5jb250ZXh0KCkucmVzdG9yZSgpOwogCiAgICAgLy8gUGFpbnQgYSBwYXJ0aWFsbHkgdHJh
bnNwYXJlbnQgd2FzaCBvdmVyIHNlbGVjdGVkIHdpZGdldHMuCiAgICAgaWYgKGlzU2VsZWN0ZWQo
KSAmJiAhZG9jdW1lbnQoKS5wcmludGluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzZWxlY3Rp
b25SZWN0KCkgaXMgaW4gYWJzb2x1dGUsIG5vdCBwYWludGluZyBjb29yZGluYXRlcy4KLSAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmZpbGxSZWN0KHNuYXBwZWRJbnRSZWN0KHNlbGVjdGlvblJl
Y3QoKSksIHNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpLCBzdHlsZSgpLmNvbG9yU3BhY2UoKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuZmlsbFJlY3Qoc25hcHBlZEludFJlY3Qoc2Vs
ZWN0aW9uUmVjdCgpKSwgc2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCksIHN0eWxlKCkuY29sb3JT
cGFjZSgpKTsKICAgICB9CiAKICAgICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5jYW5SZXNp
emUoKSkKLSAgICAgICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0LCBy
b3VuZGVkSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldCksIHBhaW50SW5mby5yZWN0KTsKKyAg
ICAgICAgbGF5ZXIoKS0+cGFpbnRSZXNpemVyKHBhaW50SW5mby5jb250ZXh0KCksIHJvdW5kZWRJ
bnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0KSwgcGFpbnRJbmZvLnJlY3QpOwogfQogCiB2b2lk
IFJlbmRlcldpZGdldDo6c2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCBpc092ZXJsYXBwZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggMzlmOTc5ZDYz
MzVmMzk4YzlkNzhiNDEzNGY4M2FmZWJlZWIwN2NhMS4uYzlmMGEwODI1ODUyYTQ1YTQ0OTNhZmU3
MzJjYTZhZDM3YzIxZjZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIEdhcFJlY3RzIFJvb3RJbmxpbmVCb3g6OmxpbmVT
ZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pCiAgICAg
ICAgICAgICAgICAgTGF5b3V0UmVjdCBnYXBSZWN0ID0gcm9vdEJsb2NrLmxvZ2ljYWxSZWN0VG9Q
aHlzaWNhbFJlY3Qocm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgbG9naWNhbFJlY3QpOwogICAg
ICAgICAgICAgICAgIGlmIChpc1ByZXZpb3VzQm94U2VsZWN0ZWQgJiYgZ2FwUmVjdC53aWR0aCgp
ID4gMCAmJiBnYXBSZWN0LmhlaWdodCgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
cGFpbnRJbmZvICYmIGJveC0+cGFyZW50KCktPnJlbmRlcmVyKCkuc3R5bGUoKS52aXNpYmlsaXR5
KCkgPT0gVklTSUJMRSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhaW50SW5mby0+Y29udGV4
dC0+ZmlsbFJlY3QoZ2FwUmVjdCwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zZWxlY3Rpb25C
YWNrZ3JvdW5kQ29sb3IoKSwgYm94LT5wYXJlbnQoKS0+cmVuZGVyZXIoKS5zdHlsZSgpLmNvbG9y
U3BhY2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWludEluZm8tPmNvbnRleHQoKS5m
aWxsUmVjdChnYXBSZWN0LCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnNlbGVjdGlvbkJhY2tn
cm91bmRDb2xvcigpLCBib3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLnN0eWxlKCkuY29sb3JTcGFj
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gVmlzaWJsZVNlbGVjdGlvbiBtYXkgYmUgbm9u
LWNvbnRpZ3VvdXMsIHNlZSBjb21tZW50IGFib3ZlLgogICAgICAgICAgICAgICAgICAgICByZXN1
bHQudW5pdGVDZW50ZXIoZ2FwUmVjdCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmlu
ZGV4IDU5ZDFhN2RlNTY3NDcxMjdiMzAzNDU3NThhYzI2YTZmMWNjMTYxYTIuLmYxYzZiMTBlN2Jk
ZGMyMzAxNmFjMDY1MjVhZmEyNGY5MzkxM2EzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBM
YXlvdXQmIGxheW91dCwgUGFpbnRJbmZvJiBwYWkKIAogICAgIGJvb2wgZGVidWdCb3JkZXJzRW5h
YmxlZCA9IGZsb3cuZnJhbWUoKS5zZXR0aW5ncygpLnNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRl
cnNFbmFibGVkKCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSAqcGFpbnRJbmZv
LmNvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRl
eHQoKTsKICAgICBjb25zdCBGb250Q2FzY2FkZSYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7
CiAgICAgVGV4dFBhaW50U3R5bGUgdGV4dFBhaW50U3R5bGUgPSBjb21wdXRlVGV4dFBhaW50U3R5
bGUoZmxvdy5mcmFtZSgpLCBzdHlsZSwgcGFpbnRJbmZvKTsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCwgdGV4dFBhaW50U3R5bGUuc3Ryb2tlV2lkdGgg
PiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAKaW5kZXggN2FhNTRmYjhjMjEzZDAzOGUxOTgzMWJkOTI1MTEwYTE4N2Nl
NGU0Zi4uYjZkZTc5ZThiMjQ2NTk5ZmQyYTQ1OTI0Yzc2OTRhMjE3YTg4YjE5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKQEAgLTk1LDMzICs5NSwzMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5k
ZXJGbGV4aWJsZUJveDo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwogICAgIAotICAgIGlmIChp
bmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhh
c2VGb3JlZ3JvdW5kKQorICAgIGlmIChpbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkg
fHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWlu
dE9mZnNldCArIGxvY2F0aW9uKCkpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VUaGlja25lc3MoMS4wZik7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShT
b2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAw
LCAyNTUpLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlVGhp
Y2tuZXNzKDEuMGYpOworICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VDb2xvcihDb2xvcigwLCAwLCAyNTUp
LCBDb2xvclNwYWNlU1JHQik7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShhZGp1
c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVs
U25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7Ci0gICAgaW5m
by5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBp
eGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSwgSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBh
ZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpKSk7Ci0g
ICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0Lngo
KSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSks
IEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lk
dGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQo
KSkpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgSW50
UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsg
cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShhZGp1c3RlZFBhaW50T2Zmc2V0LCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSAr
IHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSk7Cisg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54
KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSks
IEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lk
dGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBwaXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQo
KSkpOworICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpKSwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBwaXhlbFNuYXBwZWRP
ZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHBpeGVsU25hcHBlZE9mZnNl
dEhlaWdodCgpKSk7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9m
ZnNldCwgSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkpKTsKICAgICAKICAgICBpbnQgdG9w
U3RhcnQgPSBwYWRkaW5nVG9wKCk7CiAgICAgCi0gICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigwLCAyNTUsIDApLCBDb2xvclNwYWNlU1JHQik7CisgICAgaW5mby5jb250ZXh0
KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMCwgMjU1LCAwKSwgQ29sb3JTcGFjZVNSR0IpOwogICAg
IAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpLCBJbnRQb2ludChhZGp1
c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCksIGFkanVzdGVk
UGFpbnRPZmZzZXQueSgpICsgdG9wU3RhcnQpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5kcmF3TGlu
ZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyB0b3BTdGFydCksIEludFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgcGl4ZWxT
bmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyB0b3BTdGFydCkp
OwogICAgIAogICAgIGludCBiYXNlbGluZSA9IHJvdW5kVG9JbnQoYmFzZWxpbmVQb3NpdGlvbihB
bHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKSk7CiAgICAgCi0gICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyNTUsIDAsIDApLCBDb2xvclNwYWNlU1JH
Qik7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSwg
Q29sb3JTcGFjZVNSR0IpOwogICAgIAotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9p
bnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFz
ZWxpbmUpLCBJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIHBpeGVsU25hcHBlZE9m
ZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYmFzZWxpbmUpKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwg
YWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlbGluZSksIEludFBvaW50KGFkanVzdGVkUGFp
bnRPZmZzZXQueCgpICsgcGl4ZWxTbmFwcGVkT2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWludE9m
ZnNldC55KCkgKyBiYXNlbGluZSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShERUJVR19NQVRIX0xB
WU9VVCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcAppbmRleCA1MWYxNjhlYWViZjZhMmQ4YjNkZGZiN2EwNDE1
YTc3NDI0ODJkMzA1Li41MTliYjM4ODg5NjMyNjUzODU2OTY4MjhlYTBjNmI3ZjA2NWQyZDdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJh
Y3Rpb246OmxheW91dCgpCiB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjpwYWludChQYWludElu
Zm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJN
YXRoTUxCbG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwotICAgIGlmIChpbmZvLmNvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29u
dGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBSZW5kZXJCb3gqIGRlbm9taW5hdG9yV3JhcHBlciA9IGxhc3RDaGlsZEJv
eCgpOwpAQCAtMTUwLDEyICsxNTAsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6cGFp
bnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKIAogICAg
IEludFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSByb3VuZGVkSW50UG9pbnQocGFpbnRPZmZz
ZXQgKyBsb2NhdGlvbigpICsgZGVub21pbmF0b3JXcmFwcGVyLT5sb2NhdGlvbigpICsgTGF5b3V0
UG9pbnQoMCwgbV9saW5lVGhpY2tuZXNzIC8gMikpOwogICAgIAotICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5mby5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogICAgIAotICAgIGluZm8u
Y29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVRoaWNrbmVzcyk7Ci0gICAgaW5mby5j
b250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgQ29sb3JTcGFjZVNSR0IpOwotICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoYWRqdXN0
ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRP
ZmZzZXQueCgpICsgZGVub21pbmF0b3JXcmFwcGVyLT5vZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSkpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
bV9saW5lVGhpY2tuZXNzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VTUkdCKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50
UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBkZW5vbWluYXRvcldy
YXBwZXItPm9mZnNldFdpZHRoKCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBP
cHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE1lbmNsb3NlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwCmluZGV4IDE3NDY4YzExOTkzMDRhNzBkNjdiNzUwMGJlMmRiNzQw
NzVkNDJlNzUuLmI4NmUzNjI5YTZiNzhlNDA0YTVmYmFkZTQ0NzhkMmU0NzQ1NDc2OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xv
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
TWVuY2xvc2UuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MTWVuY2xvc2U6
OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiB7
CiAgICAgUmVuZGVyTWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAg
IGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBh
aW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisg
ICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9
IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBNYXRoTUxNZW5jbG9zZUVsZW1lbnQqIG1lbmNs
b3NlID0gZG93bmNhc3Q8TWF0aE1MTWVuY2xvc2VFbGVtZW50PihlbGVtZW50KCkpOwpAQCAtMTE0
LDIzICsxMTQsMjMgQEAgdm9pZCBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6cGFpbnQoUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAgICAgICAgaW50IGhhbGZi
b3hXaWR0aCA9IHJlY3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIGludCBoYWxmYm94SGVpZ2h0ID0g
cmVjdC5oZWlnaHQoKSAvIDI7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwotICAgICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9r
ZVRoaWNrbmVzcygxKTsKLSAgICAgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xp
ZFN0cm9rZSk7Ci0gICAgICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5j
b250ZXh0KCkpOworICAgICAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoMSk7
CisgICAgICAgIGluZm8uY29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAg
ICAgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAg
ICAvLyBUT0RPIGFkZCBzdXBwb3J0IGZvciBub3RhdGlvbiB2YWx1ZSB1cGRpYWdvbmFsYXJyb3cg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzQ2NgogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG5vdGF0aW9uYWxWYWx1ZVNpemU7IGkrKykgewogICAgICAg
ICAgICAgaWYgKG5vdGF0aW9uVmFsdWVzW2ldID09ICJ1cGRpYWdvbmFsc3RyaWtlIikKLSAgICAg
ICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQsIHRvcCArIGJv
eEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wKSk7CisgICAgICAgICAgICAg
ICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wICsgYm94SGVpZ2h0
KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoLCB0b3ApKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KG5vdGF0aW9uVmFsdWVzW2ldID09ICJkb3duZGlhZ29uYWxzdHJpa2UiKQotICAgICAgICAgICAg
ICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9wKSwgSW50UG9pbnQo
bGVmdCArIGJveFdpZHRoLCB0b3AgKyBib3hIZWlnaHQpKTsKKyAgICAgICAgICAgICAgICBpbmZv
LmNvbnRleHQoKS5kcmF3TGluZShJbnRQb2ludChsZWZ0LCB0b3ApLCBJbnRQb2ludChsZWZ0ICsg
Ym94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwogICAgICAgICAgICAgZWxzZSBpZiAobm90YXRp
b25WYWx1ZXNbaV0gPT0gInZlcnRpY2Fsc3RyaWtlIikKLSAgICAgICAgICAgICAgICBpbmZvLmNv
bnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCksIEludFBv
aW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOworICAgICAgICAgICAg
ICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgs
IHRvcCksIEludFBvaW50KGxlZnQgKyBoYWxmYm94V2lkdGgsIHRvcCArIGJveEhlaWdodCkpOwog
ICAgICAgICAgICAgZWxzZSBpZiAobm90YXRpb25WYWx1ZXNbaV0gPT0gImhvcml6b250YWxzdHJp
a2UiKQotICAgICAgICAgICAgICAgIGluZm8uY29udGV4dC0+ZHJhd0xpbmUoSW50UG9pbnQobGVm
dCwgdG9wICsgaGFsZmJveEhlaWdodCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCwgdG9wICsg
aGFsZmJveEhlaWdodCkpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5l
KEludFBvaW50KGxlZnQsIHRvcCArIGhhbGZib3hIZWlnaHQpLCBJbnRQb2ludChsZWZ0ICsgYm94
V2lkdGgsIHRvcCArIGhhbGZib3hIZWlnaHQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG5vdGF0
aW9uVmFsdWVzW2ldID09ICJjaXJjbGUiKSB7Ci0gICAgICAgICAgICAgICAgaW5mby5jb250ZXh0
LT5zZXRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
LSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdFbGxpcHNlKHJlY3QpOworICAgICAg
ICAgICAgICAgIGluZm8uY29udGV4dCgpLnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQs
IENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGluZm8uY29udGV4dCgpLmRy
YXdFbGxpcHNlKHJlY3QpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChub3RhdGlvblZhbHVlc1tp
XSA9PSAibG9uZ2RpdiIpCiAgICAgICAgICAgICAgICAgaXNEZWZhdWx0TG9uZ0RpdiA9IHRydWU7
CiAgICAgICAgIH0KQEAgLTE0NCw5ICsxNDQsOSBAQCB2b2lkIFJlbmRlck1hdGhNTE1lbmNsb3Nl
OjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldAog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIG1pZHhQb2ludCA9IHN0eWxlKCkucGFk
ZGluZ0xlZnQoKS52YWx1ZSgpOwogICAgICAgICAgICAgcm9vdC5hZGRCZXppZXJDdXJ2ZVRvKEZs
b2F0UG9pbnQobGVmdCwgdG9wKSwgRmxvYXRQb2ludChsZWZ0ICsgbWlkeFBvaW50LCB0b3AgKyBo
YWxmYm94SGVpZ2h0KSwgRmxvYXRQb2ludChsZWZ0LCB0b3AgKyBib3hIZWlnaHQpKTsKLSAgICAg
ICAgICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChyb290KTsKKyAgICAgICAgICAgIGluZm8u
Y29udGV4dCgpLnN0cm9rZVBhdGgocm9vdCk7CiAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0TG9u
Z0RpdikKLSAgICAgICAgICAgICAgICBpbmZvLmNvbnRleHQtPmRyYXdMaW5lKEludFBvaW50KGxl
ZnQsIHRvcCksIEludFBvaW50KGxlZnQgKyBib3hXaWR0aCArIG1pZHhQb2ludCwgdG9wKSk7Cisg
ICAgICAgICAgICAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoSW50UG9pbnQobGVmdCwgdG9w
KSwgSW50UG9pbnQobGVmdCArIGJveFdpZHRoICsgbWlkeFBvaW50LCB0b3ApKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggOTM4ZjZiYzhlMGQwZjU5YzQ3MzJjOTkz
MWM4NTgyMzIxY2VjZTdkYS4uM2NmZWIyMWNhOGQyNTdmM2VmZTUwYWExZTljZGMxN2U0OTIyYzFh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTE3OTcsMTIgKzE3OTcsMTIgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJNYXRoTUxPcGVyYXRvcjo6cGFpbnRHbHlwaChQYWludEluZm8mIGluZm8sIGNvbnN0IEds
eXBoRGF0YSYgZGEKICAgICB9CiAKICAgICAvLyBDbGlwcGluZyB0aGUgZW5jbG9zaW5nIEludFJl
Y3QgYXZvaWRzIGFueSBwb3RlbnRpYWwgaXNzdWVzIGF0IGpvaW5lZCBlZGdlcy4KLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5m
by5jb250ZXh0LT5jbGlwKGNsaXBCb3VuZHMpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CisgICAgaW5mby5jb250ZXh0KCkuY2xpcChj
bGlwQm91bmRzKTsKIAogICAgIEdseXBoQnVmZmVyIGJ1ZmZlcjsKICAgICBidWZmZXIuYWRkKGRh
dGEuZ2x5cGgsIGRhdGEuZm9udCwgYWR2YW5jZUZvckdseXBoKGRhdGEpKTsKLSAgICBpbmZvLmNv
bnRleHQtPmRyYXdHbHlwaHMoc3R5bGUoKS5mb250Q2FzY2FkZSgpLCAqZGF0YS5mb250LCBidWZm
ZXIsIDAsIDEsIG9yaWdpbik7CisgICAgaW5mby5jb250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgp
LmZvbnRDYXNjYWRlKCksICpkYXRhLmZvbnQsIGJ1ZmZlciwgMCwgMSwgb3JpZ2luKTsKIAogICAg
IHJldHVybiBnbHlwaFBhaW50UmVjdDsKIH0KQEAgLTE4MTgsNyArMTgxOCw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWludElu
Zm8mIGluZm8sIGNvbnN0CiAgICAgaWYgKGZyb20ueSgpID09IHRvLnkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNv
bnRleHQoKSk7CiAKICAgICBGbG9hdFJlY3QgZ2x5cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaCht
X3N0cmV0Y2h5RGF0YS5leHRlbnNpb24oKSk7CiAKQEAgLTE4MjcsNyArMTgyNyw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChQYWlu
dEluZm8mIGluZm8sIGNvbnN0CiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0
OwogICAgIGNsaXBCb3VuZHMuc2hpZnRZRWRnZVRvKGZyb20ueSgpKTsKICAgICBjbGlwQm91bmRz
LnNoaWZ0TWF4WUVkZ2VUbyh0by55KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91
bmRzKTsKKyAgICBpbmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJp
bW1pbmcgbWF5IHJlbW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIHRvcCBvZiB0aGUgZXh0
ZW5kZXIgZ2x5cGgsIHNvIHdlIG1vdmUgaXQgdXAgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBv
ZmZzZXRUb0dseXBoVG9wID0gZ2x5cGhCb3VuZHMueSgpICsgMjsKQEAgLTE4NTYsMTQgKzE4NTYs
MTQgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9udGFsRXh0ZW5z
aW9uR2x5cGgoUGFpbnRJbmZvJiBpbmZvLCBjb24KICAgICBpZiAoZnJvbS54KCkgPT0gdG8ueCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmluZm8uY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGluZm8uY29udGV4dCgpKTsKIAogICAgIC8vIENsaXBwaW5nIHRoZSBleHRlbmRlciBy
ZWdpb24gaGVyZSBhbGxvd3MgdXMgdG8gZHJhdyB0aGUgYm90dG9tIGV4dGVuZGVyIGdseXBoIGlu
dG8gdGhlCiAgICAgLy8gcmVnaW9ucyBvZiB0aGUgYm90dG9tIGdseXBoIHdpdGhvdXQgd29ycnlp
bmcgYWJvdXQgb3ZlcmRyYXcgKGhhaXJ5IHBpeGVscykgYW5kIHNpbXBsaWZpZXMgbGF0ZXIgY2xp
cHBpbmcuCiAgICAgTGF5b3V0UmVjdCBjbGlwQm91bmRzID0gaW5mby5yZWN0OwogICAgIGNsaXBC
b3VuZHMuc2hpZnRYRWRnZVRvKGZyb20ueCgpKTsKICAgICBjbGlwQm91bmRzLnNoaWZ0TWF4WEVk
Z2VUbyh0by54KCkpOwotICAgIGluZm8uY29udGV4dC0+Y2xpcChjbGlwQm91bmRzKTsKKyAgICBp
bmZvLmNvbnRleHQoKS5jbGlwKGNsaXBCb3VuZHMpOwogCiAgICAgLy8gVHJpbW1pbmcgbWF5IHJl
bW92ZSB1cCB0byB0d28gcGl4ZWxzIGZyb20gdGhlIGxlZnQgb2YgdGhlIGV4dGVuZGVyIGdseXBo
LCBzbyB3ZSBtb3ZlIGl0IGxlZnQgYnkgdHdvIHBpeGVscy4KICAgICBmbG9hdCBvZmZzZXRUb0ds
eXBoTGVmdCA9IC0yOwpAQCAtMTg4NSwxMSArMTg4NSwxMSBAQCB2b2lkIFJlbmRlck1hdGhNTE9w
ZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldAogewogICAgIFJlbmRlck1hdGhNTFRva2VuOjpwYWludChpbmZvLCBwYWludE9mZnNldCk7
CiAKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFz
ZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFIHx8IG1fc3RyZXRjaHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQorICAgIGlmIChpbmZv
LmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwgaW5mby5waGFzZSAhPSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IG1fc3RyZXRj
aHlEYXRhLm1vZGUoKSA9PSBEcmF3Tm9ybWFsKQogICAgICAgICByZXR1cm47CiAKLSAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7Ci0gICAgaW5m
by5jb250ZXh0LT5zZXRGaWxsQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIHN0eWxlKCkuY29sb3JTcGFjZSgpKTsKKyAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOworICAgIGluZm8uY29udGV4
dCgpLnNldEZpbGxDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSwgc3R5bGUoKS5jb2xvclNwYWNlKCkpOwogCiAgICAgaWYgKG1fc3RyZXRjaHlEYXRh
Lm1vZGUoKSA9PSBEcmF3U2l6ZVZhcmlhbnQpIHsKICAgICAgICAgQVNTRVJUKG1fc3RyZXRjaHlE
YXRhLnZhcmlhbnQoKS5nbHlwaCk7CkBAIC0xODk4LDcgKzE4OTgsNyBAQCB2b2lkIFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldAogICAgICAgICBMYXlvdXRQb2ludCBvcGVyYXRvclRvcExlZnQgPSBjZWlsZWRJ
bnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkpOwogICAgICAgICBGbG9hdFJlY3QgZ2x5
cGhCb3VuZHMgPSBib3VuZHNGb3JHbHlwaChtX3N0cmV0Y2h5RGF0YS52YXJpYW50KCkpOwogICAg
ICAgICBMYXlvdXRQb2ludCBvcGVyYXRvck9yaWdpbihvcGVyYXRvclRvcExlZnQueCgpLCBvcGVy
YXRvclRvcExlZnQueSgpIC0gZ2x5cGhCb3VuZHMueSgpKTsKLSAgICAgICAgaW5mby5jb250ZXh0
LT5kcmF3R2x5cGhzKHN0eWxlKCkuZm9udENhc2NhZGUoKSwgKm1fc3RyZXRjaHlEYXRhLnZhcmlh
bnQoKS5mb250LCBidWZmZXIsIDAsIDEsIG9wZXJhdG9yT3JpZ2luKTsKKyAgICAgICAgaW5mby5j
b250ZXh0KCkuZHJhd0dseXBocyhzdHlsZSgpLmZvbnRDYXNjYWRlKCksICptX3N0cmV0Y2h5RGF0
YS52YXJpYW50KCkuZm9udCwgYnVmZmVyLCAwLCAxLCBvcGVyYXRvck9yaWdpbik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcAppbmRleCBkZjE0
YTg5OGQ2NWNjODlkY2NjMmQ2MWZhNWEwYmQ5MDdmZWQyMTJhLi5iNjkyZjc0NjllZjY2MzkzOWFh
MzYyODk0Yzg2NTYzZWEwMGI0OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IuY3BwCkBA
IC0xMDgsNyArMTA4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwKIAogdm9pZCBSZW5kZXJN
YXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0
UG9pbnQmIHBhaW50T2Zmc2V0KQogewotICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCku
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCisgICAgaWYgKGluZm8uY29udGV4dCgpLnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChz
dHlsZSgpLmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5tYXRoRGF0YSgpKSB7CkBAIC0xMjks
MTMgKzEyOSwxMyBAQCB2b2lkIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6cGFpbnQoUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbgogICAgIEZsb2F0UG9pbnQgZGlw
TGVmdFBvaW50KHN0YXJ0WCAtIGdSYWRpY2FsRGlwTGVmdFBvaW50WEZyb250ICogZnJvbnRXaWR0
aCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyByYWRpY2FsRGlwTGVmdFBvaW50WVBvcyk7CiAg
ICAgRmxvYXRQb2ludCBsZWZ0RW5kKHN0YXJ0WCAtIGZyb250V2lkdGgsIGRpcExlZnRQb2ludC55
KCkgKyBnUmFkaWNhbExlZnRFbmRZU2hpZnRFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwogCi0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRleHQpOwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7
CiAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhnUmFkaWNhbExpbmVUaGlj
a25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ry
b2tlU3R5bGUoU29saWRTdHJva2UpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Io
c3R5bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwotICAgIGluZm8uY29udGV4dC0+c2V0TGluZUpvaW4oTWl0ZXJKb2luKTsK
LSAgICBpbmZvLmNvbnRleHQtPnNldE1pdGVyTGltaXQoc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAg
ICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNz
RW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VT
dHlsZShTb2xpZFN0cm9rZSk7CisgICAgaW5mby5jb250ZXh0KCkuc2V0U3Ryb2tlQ29sb3Ioc3R5
bGUoKS52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOworICAgIGluZm8uY29udGV4dCgpLnNldExpbmVKb2luKE1pdGVySm9pbik7Cisg
ICAgaW5mby5jb250ZXh0KCkuc2V0TWl0ZXJMaW1pdChzdHlsZSgpLmZvbnRTaXplKCkpOwogCiAg
ICAgUGF0aCByb290OwogCkBAIC0xNDcsOSArMTQ3LDkgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3I6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW4KICAgICAvLyBkcmF3IHRvIGVuZAogICAgIHJvb3QuYWRkTGluZVRvKGxlZnRFbmQpOwogCi0g
ICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRoKHJvb3QpOworICAgIGluZm8uY29udGV4dCgpLnN0
cm9rZVBhdGgocm9vdCk7CiAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIG1hc2tTdGF0
ZVNhdmVyKCppbmZvLmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgbWFz
a1N0YXRlU2F2ZXIoaW5mby5jb250ZXh0KCkpOwogCiAgICAgLy8gQnVpbGQgYSBtYXNrIHRvIGRy
YXcgdGhlIHRoaWNrIHBhcnQgb2YgdGhlIHJvb3QuCiAgICAgUGF0aCBtYXNrOwpAQCAtMTU5LDE3
ICsxNTksMTcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW4KICAgICBtYXNrLmFkZExpbmVUbyhk
aXBMZWZ0UG9pbnQpOwogICAgIG1hc2suYWRkTGluZVRvKEZsb2F0UG9pbnQoMiAqIGRpcExlZnRQ
b2ludC54KCkgLSBsZWZ0RW5kLngoKSwgMiAqIGRpcExlZnRQb2ludC55KCkgLSBsZWZ0RW5kLnko
KSkpOwogCi0gICAgaW5mby5jb250ZXh0LT5jbGlwKG1hc2spOworICAgIGluZm8uY29udGV4dCgp
LmNsaXAobWFzayk7CiAKICAgICAvLyBEcmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSByb290Lgot
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tMaW5lVGhp
Y2tuZXNzRW1zICogc3R5bGUoKS5mb250U2l6ZSgpKTsKLSAgICBpbmZvLmNvbnRleHQtPnNldExp
bmVDYXAoU3F1YXJlQ2FwKTsKKyAgICBpbmZvLmNvbnRleHQoKS5zZXRTdHJva2VUaGlja25lc3Mo
Z1JhZGljYWxUaGlja0xpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgpLmZvbnRTaXplKCkpOworICAg
IGluZm8uY29udGV4dCgpLnNldExpbmVDYXAoU3F1YXJlQ2FwKTsKIAogICAgIFBhdGggbGluZTsK
ICAgICBsaW5lLm1vdmVUbyhib3R0b21Qb2ludCk7CiAgICAgbGluZS5hZGRMaW5lVG8oZGlwTGVm
dFBvaW50KTsKIAotICAgIGluZm8uY29udGV4dC0+c3Ryb2tlUGF0aChsaW5lKTsKKyAgICBpbmZv
LmNvbnRleHQoKS5zdHJva2VQYXRoKGxpbmUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAppbmRleCBlYmUyZDM3
MzU3Y2QxZTg2OWIxYzllYzNiZWMxMDFkYzExYjliMmFlLi5hYzRhMTVkZDg0YTQ5MzQ0MmYzNDU5
YzVhNDUwMjEzMTRhMDE3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFJl
bmRlck1hdGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0KQogewogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWlu
dE9mZnNldCk7CiAgICAgCi0gICAgaWYgKGlzRW1wdHkoKSB8fCBpbmZvLmNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQorICAgIGlm
IChpc0VtcHR5KCkgfHwgaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8g
YmFzZSA9IGJhc2VXcmFwcGVyKCk7CkBAIC0zMjgsMTYgKzMyOCwxNiBAQCB2b2lkIFJlbmRlck1h
dGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50
T2Zmc2V0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBkcmF3IHRoZSByYWRpY2FsIGxp
bmUuCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCppbmZvLmNvbnRl
eHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRl
eHQoKSk7CiAKLSAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlj
a25lc3MpOwotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwot
ICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlQ29sb3Ioc3R5bGUoKS52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGluZm8u
Y29udGV4dCgpLnNldFN0cm9rZVRoaWNrbmVzcyhtX3J1bGVUaGlja25lc3MpOworICAgIGluZm8u
Y29udGV4dCgpLnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKKyAgICBpbmZvLmNvbnRleHQo
KS5zZXRTdHJva2VDb2xvcihzdHlsZSgpLnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAvLyBUaGUgcHJlZmVycmVkIHdp
ZHRoIG9mIHRoZSByYWRpY2FsIGlzIHNvbWV0aW1lcyBpbmNvcnJlY3QsIHNvIHdlIGRyYXcgYSBz
bGlnaHRseSBsb25nZXIgbGluZSB0byBlbnN1cmUgaXQgdG91Y2hlcyB0aGUgcmFkaWNhbCBzeW1i
b2wgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAzMjYpLgogICAg
IExheW91dFVuaXQgc2l6ZUVycm9yID0gcmFkaWNhbC0+dHJhaWxpbmdTcGFjZUVycm9yKCk7CiAg
ICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9m
ZnNldCArIGxvY2F0aW9uKCkgKyBiYXNlLT5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoLXNpemVF
cnJvciwgLShtX3ZlcnRpY2FsR2FwICsgbV9ydWxlVGhpY2tuZXNzIC8gMikpKTsKLSAgICBpbmZv
LmNvbnRleHQtPmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChM
YXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkg
KyBzaXplRXJyb3IsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOworICAgIGluZm8uY29udGV4
dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQsIHJvdW5kZWRJbnRQb2ludChMYXlvdXRQ
b2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGJhc2UtPm9mZnNldFdpZHRoKCkgKyBzaXpl
RXJyb3IsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVy
TWF0aE1MUm9vdFdyYXBwZXI+IFJlbmRlck1hdGhNTFJvb3RXcmFwcGVyOjpjcmVhdGVBbm9ueW1v
dXNXcmFwcGVyKFJlbmRlck1hdGhNTFJvb3QqIHJlbmRlck9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggNThlYjllMjQwNjc2YTExNGRjMWI5NzY4
Nzc1NjM0MmIzOTJmYjk2OS4uNjkyMjI4MTkxOGM0ODMxZTcyOTk1M2I2MjAyOTEyODgyOGQ1MThm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTE4Miw4
ICsxODIsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0ZXJTaGFw
ZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5z
aXplKCkpOwogCiAgICAgaWYgKGltYWdlQnVmZmVyKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFJl
Y3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCiAgICAgICAgIFJlZlB0cjxVaW50
OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJ
bWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAg
IHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5sZW5ndGgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCmluZGV4
IGExZjEwMzAwNGFiNzhiYzMyNzE1NzdjMGYxMGVkNDYzYjg4NTNkYTUuLmIxMzc0ZTA4YjEwODQz
NGRhZGU1MzJkNGRmMTIwZGY3NzM0MWQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIFZlY3Rv
cjxGbG9hdFNpemU+IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlTm9uSW50cmluc2ljVGlsZVNjYWxl
cygpCiAgICAgcmV0dXJuIFZlY3RvcjxGbG9hdFNpemU+KE1heFBpZWNlLCBGbG9hdFNpemUoMSwg
MSkpOwogfQogCi12b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IExheW91dFNpemUm
IHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvciwg
Q29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0Cit2b2lkIE5pbmVQaWVjZUltYWdlOjpwYWludChH
cmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgIGJvb2wgaW50cmluc2ljU291cmNlLCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApIGNvbnN0CiB7CiAgICAgU3R5
bGVJbWFnZSogc3R5bGVJbWFnZSA9IGltYWdlKCk7CiAgICAgQVNTRVJUKHN0eWxlSW1hZ2UgJiYg
c3R5bGVJbWFnZS0+aXNMb2FkZWQoKSk7CkBAIC0yMzgsMTMgKzIzOCwxMyBAQCB2b2lkIE5pbmVQ
aWVjZUltYWdlOjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgUmVuZGVy
RWxlbWVudCogcmVuZAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKGlzQ29y
bmVyUGllY2UocGllY2UpKSB7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJj
ZVJlY3RzW3BpZWNlXSwgb3ApOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFn
ZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwgZGVzdGluYXRpb25SZWN0c1twaWVjZV0sIHNvdXJj
ZVJlY3RzW3BpZWNlXSwgb3ApOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAog
ICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBpc0hvcml6b250YWxQaWVjZShwaWVjZSkg
PyBzdGF0aWNfY2FzdDxJbWFnZTo6VGlsZVJ1bGU+KGhvcml6b250YWxSdWxlKCkpIDogSW1hZ2U6
OlN0cmV0Y2hUaWxlOwogICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBpc1ZlcnRpY2Fs
UGllY2UocGllY2UpID8gc3RhdGljX2Nhc3Q8SW1hZ2U6OlRpbGVSdWxlPih2ZXJ0aWNhbFJ1bGUo
KSkgOiBJbWFnZTo6U3RyZXRjaFRpbGU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9yU3BhY2UsIGRlc3RpbmF0aW9uUmVjdHNbcGllY2Vd
LCBzb3VyY2VSZWN0c1twaWVjZV0sIHRpbGVTY2FsZXNbcGllY2VdLCBoUnVsZSwgdlJ1bGUsIG9w
KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBkZXN0aW5hdGlvblJlY3RzW3BpZWNlXSwgc291cmNlUmVjdHNbcGllY2VdLCB0
aWxlU2NhbGVzW3BpZWNlXSwgaFJ1bGUsIHZSdWxlLCBvcCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IDRiZWYx
YWY4N2NlNGQ1MzMyOTNkMDBlMzE4NTQ1MzQ5ZGFkMWQwN2YuLjljMzJlNWNhYTQyMWVjN2ZiMmE0
OTljMzZhNzk4NTI0NmRjZWI1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC0yMDYsNyArMjA2LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBWZWN0b3I8RmxvYXRTaXplPiBjb21wdXRlSW50cmluc2ljVGlsZVNjYWxlcyhjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYgZGVzdGluYXRpb25SZWN0cywgY29uc3QgVmVjdG9yPEZsb2F0UmVj
dD4mIHNvdXJjZVJlY3RzLCBFTmluZVBpZWNlSW1hZ2VSdWxlIGhSdWxlLCBFTmluZVBpZWNlSW1h
Z2VSdWxlIHZSdWxlKTsKICAgICBzdGF0aWMgVmVjdG9yPEZsb2F0U2l6ZT4gY29tcHV0ZU5vbklu
dHJpbnNpY1RpbGVTY2FsZXMoKTsKIAotICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0Kiwg
UmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgTGF5b3V0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IExheW91dFNpemUmIHNvdXJjZSwgYm9vbCBpbnRyaW5zaWNTb3VyY2Us
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBDb21wb3NpdGVPcGVyYXRvcikgY29uc3Q7CisgICAg
dm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBMYXlvdXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYg
c291cmNlLCBib29sIGludHJpbnNpY1NvdXJjZSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIENv
bXBvc2l0ZU9wZXJhdG9yKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBEYXRhUmVmPE5pbmVQaWVj
ZUltYWdlRGF0YT4gbV9kYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IDgyMDdkZjQxOWJmMmFjMWIxODBmZDk4ZmNi
MWI4MGM1MmU5Zjc1MTQuLjM4ZWZiMmM5OTRjNmNlMzlkMmJiMGUyOTkwODY2N2Q1NGY5ZTBjOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6c2Vs
ZldpbGxQYWludCgpCiAKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3BlYzogZ3JvdXBz
IHcvbyBjaGlsZHJlbiBzdGlsbCBtYXkgcmVuZGVyIGZpbHRlciBjb250ZW50LgpAQCAtMTIxLDcg
KzEyMSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZv
KHBhaW50SW5mbyk7CiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY2hpbGRQYWludEluZm8uY29udGV4dCgpKTsKIAogICAg
ICAgICAvLyBMZXQgdGhlIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyIHN1YmNsYXNzIGNsaXAg
aWYgbmVjZXNzYXJ5CiAgICAgICAgIGFwcGx5Vmlld3BvcnRDbGlwKGNoaWxkUGFpbnRJbmZvKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3Bw
CmluZGV4IGNiNmQ5YzM3Yzg2M2I3M2VkZjNmOTUwZmUwOGJlYjgxM2MwNjFjMzUuLmZhZTM3MWFl
Y2ZkZTgxZWFiNzdiZTQ5NGYxMzk5ODY1NGViYTcwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcApAQCAtOTMsMTYgKzkzLDE2IEBA
IHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKQogICAgICAg
ICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgpLCBM
ZW5ndGhNb2RlSGVpZ2h0KSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6ZmlsbFNoYXBl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAobV91
c2VQYXRoRmFsbGJhY2spIHsKICAgICAgICAgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb250
ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5maWxsRWxsaXBzZSht
X2ZpbGxCb3VuZGluZ0JveCk7CisgICAgY29udGV4dC5maWxsRWxsaXBzZShtX2ZpbGxCb3VuZGlu
Z0JveCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFw
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFzdHlsZSgpLnN2
Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpzdHJva2VTaGFwZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShj
b250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb250ZXh0LT5zdHJva2VFbGxp
cHNlKG1fZmlsbEJvdW5kaW5nQm94KTsKKyAgICBjb250ZXh0LnN0cm9rZUVsbGlwc2UobV9maWxs
Qm91bmRpbmdCb3gpOwogfQogCiBib29sIFJlbmRlclNWR0VsbGlwc2U6OnNoYXBlRGVwZW5kZW50
U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5oCmluZGV4IGI1ODdkMWFiMzMxNDcw
MzIzMmY1ZDBlMDljMTc4Y2I1NWE5Y2I1MjYuLjlhNmZjMTJjZGVkYWJhMTU1MjVjNDRkYmE4OTNl
OGNmNTllNmI0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHRWxsaXBzZS5oCkBAIC00Miw4ICs0Miw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNF
bXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZhbGxiYWNrID8gUmVuZGVy
U1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94LmlzRW1wdHkoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tl
Q29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBz
aGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2luZFJ1
bGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgY2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuY3BwCmluZGV4IDQ2OTg5MDdkZjk4ZTY5MjMxNTY0MjZkMTYyNTI0ZDAwYTdiNDBm
ZjUuLmI4NzkxYWU0MDIzNDA0ZTJjYmMxMzJmNWRkYTE0MjY5ZTBkMmE3OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcApAQCAtNTMsMTggKzUzLDE4IEBAIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50JiBSZW5kZXJT
VkdGb3JlaWduT2JqZWN0Ojpmb3JlaWduT2JqZWN0RWxlbWVudCgpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVyU1ZHRm9yZWlnbk9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZv
cmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwot
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8u
Y29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxk
UGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0o
bG9jYWxUcmFuc2Zvcm0oKSk7CiAKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxv
d0hpZGRlbigqdGhpcykpCi0gICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92
aWV3cG9ydCk7CisgICAgICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5jbGlwKG1fdmlld3Bv
cnQpOwogCiAgICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwogICAgIGlm
IChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggNTAyMTY3OTgx
MTMzZGNmY2E2ZTFlNmUyNTQ4N2EzOTVlM2FhZDVjZi4uYjhhMTk2ZTk1MTM3MDFkNTZhYmVhNmI5
MmNmYWQ0ZWQzMDNhYzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdl
OjpsYXlvdXQoKQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogewotICAgIGlmIChwYWludEluZm8uY29udGV4dC0+
cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdy
b3VuZAorICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQoKSB8fCBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQKICAgICAgICAgfHwgc3R5bGUo
KS52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8ICFpbWFnZVJlc291cmNlKCkuaGFzSW1hZ2UoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDAsMTQgKzE0MCwxNCBAQCB2b2lkIFJlbmRlclNWR0lt
YWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAg
ICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gY2hpbGRQYWludEluZm8ocGFpbnRJbmZvKTsK
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNoaWxkUGFpbnRJbmZv
LmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjaGls
ZFBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGNoaWxkUGFpbnRJbmZvLmFwcGx5VHJhbnNmb3Jt
KG1fbG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIFNWR1JlbmRlcmluZ0NvbnRleHQgcmVuZGVy
aW5nQ29udGV4dCgqdGhpcywgY2hpbGRQYWludEluZm8pOwogCiAgICAgICAgIGlmIChyZW5kZXJp
bmdDb250ZXh0LmlzUmVuZGVyaW5nUHJlcGFyZWQoKSkgewotICAgICAgICAgICAgaWYgKHN0eWxl
KCkuc3ZnU3R5bGUoKS5idWZmZXJlZFJlbmRlcmluZygpID09IEJSX1NUQVRJQyAgJiYgcmVuZGVy
aW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3JlZ3JvdW5kKSkKKyAgICAg
ICAgICAgIGlmIChzdHlsZSgpLnN2Z1N0eWxlKCkuYnVmZmVyZWRSZW5kZXJpbmcoKSA9PSBCUl9T
VEFUSUMgJiYgcmVuZGVyaW5nQ29udGV4dC5idWZmZXJGb3JlZ3JvdW5kKG1fYnVmZmVyZWRGb3Jl
Z3JvdW5kKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIHBhaW50Rm9y
ZWdyb3VuZChjaGlsZFBhaW50SW5mbyk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBSZW5kZXJT
VkdJbWFnZTo6cGFpbnRGb3JlZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogCiAgICAgaW1h
Z2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLnRyYW5zZm9ybVJlY3QoZGVzdFJlY3Qs
IHNyY1JlY3QpOwogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQo
KSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOworICAgIHBhaW50SW5m
by5jb250ZXh0KCkuZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBk
ZXN0UmVjdCwgc3JjUmVjdCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmludmFsaWRhdGVC
dWZmZXJlZEZvcmVncm91bmQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUGF0aC5jcHAKaW5kZXggOGU0MGQ4YmU5NTI3OGYyOWU2NmU3NmI2MTY3ZTY0YzBkYzQ5
MjVkNi4uMWQwMTNhZDdjMWUwZThjNDAxNDAwODY4YTI3MjU5M2FiYWNhMmQwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwCkBAIC02NCwxNyAr
NjQsMTcgQEAgRmxvYXRSZWN0IFJlbmRlclNWR1BhdGg6OmNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VC
b3VuZGluZ0JveCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0cm9rZUJvdW5kaW5nQm94OwogfQogCi1z
dGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQp
CitzdGF0aWMgdm9pZCB1c2VTdHJva2VTdHlsZVRvRmlsbChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgaWYgKEdyYWRpZW50KiBncmFkaWVudCA9IGNvbnRleHQtPnN0cm9rZUdyYWRp
ZW50KCkpCi0gICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOwotICAg
IGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRlcm4gPSBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0g
ICAgICAgIGNvbnRleHQtPnNldEZpbGxQYXR0ZXJuKCpwYXR0ZXJuKTsKKyAgICBpZiAoR3JhZGll
bnQqIGdyYWRpZW50ID0gY29udGV4dC5zdHJva2VHcmFkaWVudCgpKQorICAgICAgICBjb250ZXh0
LnNldEZpbGxHcmFkaWVudCgqZ3JhZGllbnQpOworICAgIGVsc2UgaWYgKFBhdHRlcm4qIHBhdHRl
cm4gPSBjb250ZXh0LnN0cm9rZVBhdHRlcm4oKSkKKyAgICAgICAgY29udGV4dC5zZXRGaWxsUGF0
dGVybigqcGF0dGVybik7CiAgICAgZWxzZQotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Io
Y29udGV4dC0+c3Ryb2tlQ29sb3IoKSwgY29udGV4dC0+c3Ryb2tlQ29sb3JTcGFjZSgpKTsKKyAg
ICAgICAgY29udGV4dC5zZXRGaWxsQ29sb3IoY29udGV4dC5zdHJva2VDb2xvcigpLCBjb250ZXh0
LnN0cm9rZUNvbG9yU3BhY2UoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUGF0aDo6c3Ryb2tlU2hh
cGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdQYXRoOjpz
dHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgaWYgKCFz
dHlsZSgpLnN2Z1N0eWxlKCkuaGFzVmlzaWJsZVN0cm9rZSgpKQogICAgICAgICByZXR1cm47CkBA
IC05MCwxMyArOTAsMTMgQEAgdm9pZCBSZW5kZXJTVkdQYXRoOjpzdHJva2VTaGFwZShHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkK
ICAgICAgICAgbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VUcmFuc2Zvcm0o
KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCwg
dHJ1ZSk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQs
IHRydWUpOwogICAgIHVzZVN0cm9rZVN0eWxlVG9GaWxsKGNvbnRleHQpOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV96ZXJvTGVuZ3RoTGluZWNhcExvY2F0aW9ucy5zaXplKCk7ICsraSkg
ewogICAgICAgICB1c2VQYXRoID0gemVyb0xlbmd0aExpbmVjYXBQYXRoKG1femVyb0xlbmd0aExp
bmVjYXBMb2NhdGlvbnNbaV0pOwogICAgICAgICBpZiAoaGFzTm9uU2NhbGluZ1N0cm9rZSgpKQog
ICAgICAgICAgICAgdXNlUGF0aCA9IG5vblNjYWxpbmdTdHJva2VQYXRoKHVzZVBhdGgsIG5vblNj
YWxpbmdUcmFuc2Zvcm0pOwotICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqdXNlUGF0aCk7Cisg
ICAgICAgIGNvbnRleHQuZmlsbFBhdGgoKnVzZVBhdGgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaAppbmRleCAwOGQ4OTExOWViYmFj
MTliMTVlMDZhZmVjYzdjNWVlMzQyYzA0OTI5Li5iYmQyMmRjNWIwY2I5Yjg1YzEyZTgxMGJlYjA0
NDQxYzI5ZDg3NjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1BhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguaApAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVw
ZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHN0cm9r
ZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcApp
bmRleCAwM2ZiYmI5ZDUwODkzYzI1Njc4NTVjYmUxYTIzYjI2YTYyMWEyODg3Li5jYmM4OGY3ZjY2
OTBhOTVjZWU5YjM2MzE3MWQyOTU2ZTc4ZjA2NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkKICNlbmRpZgogfQogCi12b2lkIFJl
bmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0Cit2
b2lkIFJlbmRlclNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNv
bnN0CiB7CiAgICAgaWYgKG1fdXNlUGF0aEZhbGxiYWNrKSB7CiAgICAgICAgIFJlbmRlclNWR1No
YXBlOjpmaWxsU2hhcGUoY29udGV4dCk7CkBAIC0xMDksMTggKzEwOSwxOCBAQCB2b2lkIFJlbmRl
clNWR1JlY3Q6OmZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAg
Ly8gc2hhZG93IGRyYXdpbmcgbWV0aG9kLCB3aGljaCBkcmF3cyBhbiBleHRyYSBzaGFkb3cuCiAg
ICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHN3aXRjaGluZyBvZmYgdGhlIGV4dHJhIHNo
YWRvdy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4
OTkKLSAgICBpZiAoY29udGV4dC0+aGFzU2hhZG93KCkpIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC0+Y2xl
YXJTaGFkb3coKTsKLSAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gp
OworICAgIGlmIChjb250ZXh0Lmhhc1NoYWRvdygpKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKKyAgICAgICAgY29udGV4dC5jbGVhclNo
YWRvdygpOworICAgICAgICBjb250ZXh0LmZpbGxSZWN0KG1fZmlsbEJvdW5kaW5nQm94KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgY29udGV4dC0+ZmlsbFJlY3QobV9m
aWxsQm91bmRpbmdCb3gpOworICAgIGNvbnRleHQuZmlsbFJlY3QobV9maWxsQm91bmRpbmdCb3gp
OwogfQogCi12b2lkIFJlbmRlclNWR1JlY3Q6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSBjb25zdAogewogICAgIGlmICghc3R5bGUoKS5zdmdTdHlsZSgpLmhh
c1Zpc2libGVTdHJva2UoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgUmVuZGVyU1ZHUmVjdDo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC0+c3Ryb2tlUmVjdCht
X2ZpbGxCb3VuZGluZ0JveCwgc3Ryb2tlV2lkdGgoKSk7CisgICAgY29udGV4dC5zdHJva2VSZWN0
KG1fZmlsbEJvdW5kaW5nQm94LCBzdHJva2VXaWR0aCgpKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdS
ZWN0OjpzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAppbmRleCA5
NzAzMDFhYTc5ZjVjM2RlMmViMzI4NmQzMGQxM2Y1ZGViNDE0ODlmLi4wMjZlZTYzMDliNTkxZWMx
ZjBjMzVjZDYzMjE1Nzk1Mjc5MmU0ZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1JlY3QuaApAQCAtNDgsOCArNDgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZVBhdGhGYWxsYmFjayA/
IFJlbmRlclNWR1NoYXBlOjppc0VtcHR5KCkgOiBtX2ZpbGxCb3VuZGluZ0JveC5pc0VtcHR5KCk7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVu
dFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IFdpbmRSdWxlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDhiOWE2
Mjg5ZTI4MjA1YzkwYjFlMDRlM2M3ZDQ4YmQ1YTE4NWZhNTguLjVlNDc3NWJlMGI2YTAwNGM2ZjVj
NjI2YWMzNDFhMzJiOTFlNTdlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTY5LDEwICs2OSwx
MCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZAogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlTW9kZSwgcmVzb3VyY2VNb2RlID09IEFwcGx5VG9EZWZhdWx0
TW9kZSk7CiAKLSAgICByZXR1cm4gYXBwbHlDbGlwcGluZ1RvQ29udGV4dChyZW5kZXJlciwgcmVu
ZGVyZXIub2JqZWN0Qm91bmRpbmdCb3goKSwgcmVuZGVyZXIucmVwYWludFJlY3RJbkxvY2FsQ29v
cmRpbmF0ZXMoKSwgY29udGV4dCk7CisgICAgcmV0dXJuIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQo
cmVuZGVyZXIsIHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCksIHJlbmRlcmVyLnJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCksICpjb250ZXh0KTsKIH0KIAotYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXI6OnBhdGhPbmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gpCitib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
cjo6cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBvYmpl
Y3RCb3VuZGluZ0JveCkKIHsKICAgICAvLyBJZiB0aGUgY3VycmVudCBjbGlwLXBhdGggZ2V0cyBj
bGlwcGVkIGl0c2VsZiwgd2UgaGF2ZSB0byBmYWxsYmFjayB0byBtYXNraW5nLgogICAgIGlmICgh
c3R5bGUoKS5zdmdTdHlsZSgpLmNsaXBwZXJSZXNvdXJjZSgpLmlzRW1wdHkoKSkKQEAgLTEyMywx
MiArMTIzLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpwYXRoT25seUNsaXBw
aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QKICAgICAvLyBUaGUgU1ZHIHNwZWNp
ZmljYXRpb24gd2FudHMgdXMgdG8gY2xpcCBldmVyeXRoaW5nLCBpZiBjbGlwLXBhdGggZG9lc24n
dCBoYXZlIGEgY2hpbGQuCiAgICAgaWYgKGNsaXBQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgY2xp
cFBhdGguYWRkUmVjdChGbG9hdFJlY3QoKSk7Ci0gICAgY29udGV4dC0+Y2xpcFBhdGgoY2xpcFBh
dGgsIGNsaXBSdWxlKTsKKyAgICBjb250ZXh0LmNsaXBQYXRoKGNsaXBQYXRoLCBjbGlwUnVsZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjph
cHBseUNsaXBwaW5nVG9Db250ZXh0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9h
dFJlY3QmIG9iamVjdEJvdW5kaW5nQm94LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRSZWN0JiByZXBhaW50UmVjdCwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0
UmVjdCYgb2JqZWN0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVwYWludFJlY3QsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBjbGlwcGVy
TWFza0ltYWdlID0gYWRkUmVuZGVyZXJUb0NsaXBwZXIocmVuZGVyZXIpOwogICAgIGJvb2wgc2hv
dWxkQ3JlYXRlQ2xpcHBlck1hc2tJbWFnZSA9ICFjbGlwcGVyTWFza0ltYWdlOwpAQCAtMTQ1LDE3
ICsxNDQsMTUgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdU
b0NvbnRleHQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGMKICAgICAgICAgaWYgKCFjbGlwcGVy
TWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIEdyYXBoaWNz
Q29udGV4dCogbWFza0NvbnRleHQgPSBjbGlwcGVyTWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAg
ICAgIEFTU0VSVChtYXNrQ29udGV4dCk7Ci0KLSAgICAgICAgbWFza0NvbnRleHQtPmNvbmNhdENU
TShhbmltYXRlZExvY2FsVHJhbnNmb3JtKTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNr
Q29udGV4dCA9IGNsaXBwZXJNYXNrSW1hZ2UtPmNvbnRleHQoKTsKKyAgICAgICAgbWFza0NvbnRl
eHQuY29uY2F0Q1RNKGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIGNsaXBQ
YXRoIGNhbiBhbHNvIGJlIGNsaXBwZWQgYnkgYW5vdGhlciBjbGlwUGF0aC4KICAgICAgICAgYXV0
byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRl
cmVyKCp0aGlzKTsKICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyOwog
ICAgICAgICBib29sIHN1Y2NlZWRlZDsKICAgICAgICAgaWYgKHJlc291cmNlcyAmJiAoY2xpcHBl
ciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKSkgewotICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCptYXNrQ29udGV4dCk7CisgICAgICAgICAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIobWFza0NvbnRleHQpOwogCiAgICAgICAgICAg
ICBpZiAoIWNsaXBwZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoKnRoaXMsIG9iamVjdEJvdW5k
aW5nQm94LCByZXBhaW50UmVjdCwgbWFza0NvbnRleHQpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE4MCwxNCArMTc3LDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoY29uc3QgQ2xpcHBlck1hc2tJbWFnZSYKIHsK
ICAgICBBU1NFUlQoY2xpcHBlck1hc2tJbWFnZSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIG1h
c2tDb250ZXh0ID0gY2xpcHBlck1hc2tJbWFnZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNr
Q29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrQ29udGV4dCA9IGNsaXBwZXJNYXNr
SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtYXNrQ29udGVudFRyYW5z
Zm9ybWF0aW9uOwogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0g
U1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAg
IG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb24udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94Lngo
KSwgb2JqZWN0Qm91bmRpbmdCb3gueSgpKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zvcm1h
dGlvbi5zY2FsZU5vblVuaWZvcm0ob2JqZWN0Qm91bmRpbmdCb3gud2lkdGgoKSwgb2JqZWN0Qm91
bmRpbmdCb3guaGVpZ2h0KCkpOwotICAgICAgICBtYXNrQ29udGV4dC0+Y29uY2F0Q1RNKG1hc2tD
b250ZW50VHJhbnNmb3JtYXRpb24pOworICAgICAgICBtYXNrQ29udGV4dC5jb25jYXRDVE0obWFz
a0NvbnRlbnRUcmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gU3dpdGNoIHRvIGEgcGFp
bnQgYmVoYXZpb3Igd2hlcmUgYWxsIGNoaWxkcmVuIG9mIHRoaXMgPGNsaXBQYXRoPiB3aWxsIGJl
IHJlbmRlcmVkIHVzaW5nIHNwZWNpYWwgY29uc3RyYWludHM6CkBAIC0yMjYsNyArMjIyLDcgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShj
b25zdCBDbGlwcGVyTWFza0ltYWdlJgogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1NoYXBl
KCkgJiYgIXJlbmRlcmVyLT5pc1NWR1RleHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIG1hc2tDb250ZXh0LT5zZXRGaWxsUnVsZShuZXdDbGlwUnVsZSk7CisgICAgICAgIG1h
c2tDb250ZXh0LnNldEZpbGxSdWxlKG5ld0NsaXBSdWxlKTsKIAogICAgICAgICAvLyBJbiB0aGUg
Y2FzZSBvZiBhIDx1c2U+IGVsZW1lbnQsIHdlIG9idGFpbmVkIGl0cyByZW5kZXJlcmUgYWJvdmUs
IHRvIHJldHJpZXZlIGl0cyBjbGlwUnVsZS4KICAgICAgICAgLy8gV2UgaGF2ZSB0byBwYXNzIHRo
ZSA8dXNlPiByZW5kZXJlciBpdHNlbGYgdG8gcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoKSB0
byBhcHBseSBpdCdzIHgveS90cmFuc2Zvcm0vZXRjLiB2YWx1ZXMgd2hlbiByZW5kZXJpbmcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuaAppbmRleCA0NDE1Yjk0YjEzYTYyZGI2ZmJhNjNjZDA2MmZkZDRjODY2OTZiNDVj
Li5iNzcwNDk2NTNkYWNmNDVmYzAxZTUzNmQ5NjBkNTRhMTk2ZjRlZjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIC8vIGNsaXBQYXRoIGNhbiBiZSBjbGlw
cGVkIHRvbywgYnV0IGRvbid0IGhhdmUgYSBib3VuZGluZ0JveCBvciByZXBhaW50UmVjdC4gU28g
d2UgY2FuJ3QgY2FsbAogICAgIC8vIGFwcGx5UmVzb3VyY2UgZGlyZWN0bHkgYW5kIHVzZSB0aGUg
cmVjdHMgZnJvbSB0aGUgb2JqZWN0LCBzaW5jZSB0aGV5IGFyZSBlbXB0eSBmb3IgUmVuZGVyU1ZH
UmVzb3VyY2VzCiAgICAgLy8gRklYTUU6IFdlIG1hZGUgYXBwbHlDbGlwcGluZ1RvQ29udGV4dCBw
dWJsaWMgYmVjYXVzZSB3ZSBjYW5ub3QgY2FsbCBhcHBseVJlc291cmNlIG9uIEhUTUwgZWxlbWVu
dHMgKGl0IGFzc2VydHMgb24gUmVuZGVyT2JqZWN0OjpvYmplY3RCb3VuZGluZ0JveCkKLSAgICBi
b29sIGFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoUmVuZGVyRWxlbWVudCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIEdyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgYXBwbHlD
bGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVtZW50JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVz
b3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIENsaXBwZXJSZXNvdXJjZVR5cGU7IH0KQEAgLTY0LDcgKzY0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIiOyB9CiAKLSAgICBib29sIHBhdGhP
bmx5Q2xpcHBpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRSZWN0Jik7CisgICAgYm9vbCBwYXRoT25seUNsaXBwaW5nKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGJvb2wg
ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKGNvbnN0IENsaXBwZXJNYXNrSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIG9iamVjdEJvdW5kaW5nQm94KTsKICAgICB2b2lkIGNhbGN1bGF0ZUNsaXBDb250
ZW50UmVwYWludFJlY3QoKTsKICAgICBDbGlwcGVyTWFza0ltYWdlJiBhZGRSZW5kZXJlclRvQ2xp
cHBlcihjb25zdCBSZW5kZXJPYmplY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggZTMxODY1ZDgw
M2MxM2QxNTBiNTcxYjYxZGUwNzg2MWIwMjE3MTFmYy4uMDRlYWQxYThiZWE2NGE0YWYzNjMwNmFm
ZTc1OTE2YjlkMDdjODhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTE5OCwxMyArMTk4LDEyIEBA
IGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgLy8gU2V0IHRoZSByZW5kZXJpbmcgbW9kZSBm
cm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCiAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRSZW5k
ZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VH
cmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQoc291
cmNlR3JhcGhpY0NvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgc291cmNlR3JhcGhpY0Nv
bnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7CiAgIAogICAgIGZpbHRlckRhdGEtPnNv
dXJjZUdyYXBoaWNCdWZmZXIgPSBXVEY6Om1vdmUoc291cmNlR3JhcGhpYyk7CiAgICAgZmlsdGVy
RGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAotICAgIGNvbnRleHQgPSBzb3VyY2VHcmFw
aGljQ29udGV4dDsKKyAgICBjb250ZXh0ID0gJnNvdXJjZUdyYXBoaWNDb250ZXh0OwogCiAgICAg
QVNTRVJUKCFtX2ZpbHRlci5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICBtX2ZpbHRlci5zZXQo
JnJlbmRlcmVyLCBXVEY6Om1vdmUoZmlsdGVyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKaW5k
ZXggY2JjYTEwM2VmMzA1Njk3OWVmNDY1YzJiNTdiNTMzN2E5OGI1ZDc0ZS4uYWNlYTIzMGM5ZDky
NWMzNDZlODBkNDI4ZDk5ODJjNTg3OTVjZDhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCkBAIC02
NSwxNiArNjUsMTUgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4
dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAgICBpZiAoIW1hc2tJbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1h
Z2VDb250ZXh0ID0gbWFza0ltYWdlLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJUKG1hc2tJbWFnZUNv
bnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tJbWFn
ZS0+Y29udGV4dCgpOwogICAgIEFTU0VSVChtYXNrSW1hZ2UpOwogICAgIHNhdmVkQ29udGV4dCA9
IGNvbnRleHQ7Ci0gICAgY29udGV4dCA9IG1hc2tJbWFnZUNvbnRleHQ7CisgICAgY29udGV4dCA9
ICZtYXNrSW1hZ2VDb250ZXh0OwogICAgIGltYWdlQnVmZmVyID0gV1RGOjptb3ZlKG1hc2tJbWFn
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3Jt
IGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGJvb2wgYm91bmRpbmdCb3hNb2RlLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGdyYWRpZW50VHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xp
cFRvVGV4dE1hc2soR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgYm9vbCBib3VuZGluZ0JveE1vZGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
Z3JhZGllbnRUcmFuc2Zvcm0pCiB7CiAgICAgYXV0byogdGV4dFJvb3RCbG9jayA9IFJlbmRlclNW
R1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigqb2JqZWN0KTsKICAgICBBU1NFUlQo
dGV4dFJvb3RCbG9jayk7CkBAIC0yMDcsNyArMjA2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3Jh
cGgKICAgICAgICAgICAgIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKGdyYWRpZW50VHJhbnNm
b3JtKTsKIAogICAgICAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3Q7Ci0gICAgICAgICAgICBn
cmFkaWVudERhdGEtPmdyYWRpZW50LT5zZXRHcmFkaWVudFNwYWNlVHJhbnNmb3JtKGNsaXBUb1Rl
eHRNYXNrKGNvbnRleHQsIG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3Jh
ZGllbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCwgZ3JhZGllbnRUcmFuc2Zvcm0pKTsKKyAgICAgICAgICAgIGdyYWRpZW50RGF0YS0+Z3Jh
ZGllbnQtPnNldEdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oY2xpcFRvVGV4dE1hc2soKmNvbnRleHQs
IG1faW1hZ2VCdWZmZXIsIHRhcmdldFJlY3QsICZyZW5kZXJlciwgZ3JhZGllbnRVbml0cygpID09
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCwgZ3JhZGllbnRU
cmFuc2Zvcm0pKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqZ3JhZGll
bnREYXRhLT5ncmFkaWVudCk7CiAKICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHRhcmdl
dFJlY3QpOwpAQCAtMjIxLDEzICsyMjAsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50Ojpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGgKICAg
ICAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxQYXRoKCpw
YXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgICAgIHNoYXBl
LT5maWxsU2hhcGUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgq
Y29udGV4dCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTW9kZSAmIEFwcGx5VG9T
dHJva2VNb2RlKSB7CiAgICAgICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgICAgICBjb250
ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNoYXBlKQotICAg
ICAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgICAg
ICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXJrZXIuY3BwCmluZGV4IDhjM2JkYjM0NzUxMDQwNjk2N2JlNjgzNTYxNzMwYzAyZjllMGZhYTYu
LjY5ZTVkYjE2ZmYxMWQ2MWMwMDRjNWNiNWIwMTBlNTAyOTE2YjYwMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92
ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiBjbGllbnQsIGJvb2wKIHZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VNYXJrZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJbmZv
KQogewogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlzKSkK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogRmxvYXRSZWN0IFJlbmRl
clNWR1Jlc291cmNlTWFya2VyOjptYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbWFya2VyVHJhbnNmb3JtYXRpb24pIGNvbnN0CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6ZHJhdyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJgogICAgICAgICByZXR1cm47CiAKICAgICBQYWludEluZm8gaW5mbyhw
YWludEluZm8pOwotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqaW5m
by5jb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoaW5m
by5jb250ZXh0KCkpOwogICAgIGluZm8uYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBS
ZW5kZXJTVkdDb250YWluZXI6OnBhaW50KGluZm8sIEludFBvaW50KCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcAppbmRleCA1MzBkYTNkNmZhZWQ0Yzc1YzdhZWZhYWZiMGM0MGVkMTU4N2M4YzU1Li5hZDM3
ZDQ3Yzk4NDZhYzAwNTNkYTUyYzU0ZGQ5YWY0YzMxZDVjZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApA
QCAtODAsMTQgKzgwLDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVz
b3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgaWYgKCFtYXNr
ZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3Jt
LCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNzaW5nTWFza2VyRGF0YSk7
CisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmNvbnRleHQsIGFi
c29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBtaXNz
aW5nTWFza2VyRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewotICAg
IEdyYXBoaWNzQ29udGV4dCogbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFn
ZS0+Y29udGV4dCgpOwotICAgIEFTU0VSVChtYXNrSW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGlj
c0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRl
eHQoKTsKIAogICAgIC8vIEV2ZW50dWFsbHkgYWRqdXN0IHRoZSBtYXNrIGltYWdlIGNvbnRleHQg
YWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgb2JqZWN0Qm91bmRpbmdCb3guCiAgICAgQWZmaW5lVHJh
bnNmb3JtIG1hc2tDb250ZW50VHJhbnNmb3JtYXRpb247CkBAIC05NSw3ICs5NCw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJE
YXRhKiBtYXNrZXJEYXRhLCBDCiAgICAgICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCA9
IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKICAgICAgICAgbWFza0NvbnRlbnRUcmFuc2Zv
cm1hdGlvbi50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gueCgpLCBvYmplY3RCb3VuZGluZ0Jv
eC55KCkpOwogICAgICAgICBtYXNrQ29udGVudFRyYW5zZm9ybWF0aW9uLnNjYWxlTm9uVW5pZm9y
bShvYmplY3RCb3VuZGluZ0JveC53aWR0aCgpLCBvYmplY3RCb3VuZGluZ0JveC5oZWlnaHQoKSk7
Ci0gICAgICAgIG1hc2tJbWFnZUNvbnRleHQtPmNvbmNhdENUTShtYXNrQ29udGVudFRyYW5zZm9y
bWF0aW9uKTsKKyAgICAgICAgbWFza0ltYWdlQ29udGV4dC5jb25jYXRDVE0obWFza0NvbnRlbnRU
cmFuc2Zvcm1hdGlvbik7CiAgICAgfQogCiAgICAgLy8gRHJhdyB0aGUgY29udGVudCBpbnRvIHRo
ZSBJbWFnZUJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCA0YmMwZDk1MTJiMjkwYzcyN2Q3
YTc3YzhiMjQ1ODQ5OTljMWY2OWJlLi45Zjk1ZGQyNmIzMWIwZGU5NDg4NWUzOTU0MzY3YWJmYTQy
NGQ4MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xODksMTMgKzE4OSwxMyBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYs
IEdyYXBoaWNzQ29udGV4dAogICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQt
PmZpbGxQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hhcGUpCi0gICAgICAgICAgICBz
aGFwZS0+ZmlsbFNoYXBlKGNvbnRleHQpOworICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZSgq
Y29udGV4dCk7CiAgICAgfQogICAgIGlmIChyZXNvdXJjZU1vZGUgJiBBcHBseVRvU3Ryb2tlTW9k
ZSkgewogICAgICAgICBpZiAocGF0aCkKICAgICAgICAgICAgIGNvbnRleHQtPnN0cm9rZVBhdGgo
KnBhdGgpOwogICAgICAgICBlbHNlIGlmIChzaGFwZSkKLSAgICAgICAgICAgIHNoYXBlLT5zdHJv
a2VTaGFwZShjb250ZXh0KTsKKyAgICAgICAgICAgIHNoYXBlLT5zdHJva2VTaGFwZSgqY29udGV4
dCk7CiAgICAgfQogCiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtMjM3LDE2ICsyMzcsMTUg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46
OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXQKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQg
PSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKLSAgICBBU1NFUlQodGlsZUltYWdlQ29udGV4dCk7Cisg
ICAgR3JhcGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0
KCk7CiAKICAgICAvLyBUaGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRl
cmVkIHNpemUsIHNvIHRoZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVs
YXRpb24pLgotICAgIHRpbGVJbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKKyAg
ICB0aWxlSW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcy53aWR0aCgpIC8gdGlsZUJvdW5kYXJpZXMud2lkdGgoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMuaGVp
Z2h0KCkgLyB0aWxlQm91bmRhcmllcy5oZWlnaHQoKSkpOwogCiAgICAgLy8gQXBwbHkgdGlsZSBp
bWFnZSB0cmFuc2Zvcm1hdGlvbnMuCiAgICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVu
dGl0eSgpKQotICAgICAgICB0aWxlSW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odGlsZUltYWdlVHJh
bnNmb3JtKTsKKyAgICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJh
bnNmb3JtKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAg
ICAgaWYgKGF0dHJpYnV0ZXMucGF0dGVybkNvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmNwcApp
bmRleCBmNTAxYWJmNDRiMjE0MTY3OWE2YjdhNjk4ZWZiMTcxODViZTU3MDI5Li5mYjg4ZmM4YjRi
MjhiNzg1OWRkOGYyMTViOTAyNTFkN2UwZDI4M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuY3Bw
CkBAIC04MSwxMyArODEsMTMgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3I6OnBv
c3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnQKICAgICAgICAgaWYg
KHBhdGgpCiAgICAgICAgICAgICBjb250ZXh0LT5maWxsUGF0aCgqcGF0aCk7CiAgICAgICAgIGVs
c2UgaWYgKHNoYXBlKQotICAgICAgICAgICAgc2hhcGUtPmZpbGxTaGFwZShjb250ZXh0KTsKKyAg
ICAgICAgICAgIHNoYXBlLT5maWxsU2hhcGUoKmNvbnRleHQpOwogICAgIH0KICAgICBpZiAocmVz
b3VyY2VNb2RlICYgQXBwbHlUb1N0cm9rZU1vZGUpIHsKICAgICAgICAgaWYgKHBhdGgpCiAgICAg
ICAgICAgICBjb250ZXh0LT5zdHJva2VQYXRoKCpwYXRoKTsKICAgICAgICAgZWxzZSBpZiAoc2hh
cGUpCi0gICAgICAgICAgICBzaGFwZS0+c3Ryb2tlU2hhcGUoY29udGV4dCk7CisgICAgICAgICAg
ICBzaGFwZS0+c3Ryb2tlU2hhcGUoKmNvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggMzRjN2Y2ODg2ZjUx
YjIxMzI1OWU4ZGRjY2JmZWJkMGFkMjBkM2RlMC4uYzJmYWFhMjVlMTQzMmY2MGY3ODkxOGIwZjg1
NzVlNDUyN2E4YTQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgcGFpbnQsIGlmIHRoZSBjb250ZXh0IGV4
cGxpY2l0bHkgZGlzYWJsZWQgaXQuCi0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTVkcgb3V0bGluZXMgYXJlIHBhaW50ZWQg
ZHVyaW5nIFBhaW50UGhhc2VGb3JlZ3JvdW5kLgpAQCAtMjU3LDE4ICsyNTcsMTggQEAgdm9pZCBS
ZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnQKIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8g
YmVjYXVzZSBhcHBseVRyYW5zZm9ybSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdlIHJlY3QuCiAgICAg
UGFpbnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7Ci0gICAgY2hpbGRQYWludEluZm8u
Y29udGV4dC0+c2F2ZSgpOworICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKS5zYXZlKCk7CiAK
ICAgICAvLyBBcHBseSBpbml0aWFsIHZpZXdwb3J0IGNsaXAKICAgICBpZiAoc2hvdWxkQXBwbHlW
aWV3cG9ydENsaXAoKSkKLSAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y2xpcChzbmFw
cGVkSW50UmVjdChvdmVyZmxvd0NsaXBSZWN0KHBhaW50T2Zmc2V0LCBjdXJyZW50UmVuZGVyTmFt
ZWRGbG93RnJhZ21lbnQoKSkpKTsKKyAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dCgpLmNs
aXAoc25hcHBlZEludFJlY3Qob3ZlcmZsb3dDbGlwUmVjdChwYWludE9mZnNldCwgY3VycmVudFJl
bmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpKSk7CiAKICAgICAvLyBDb252ZXJ0IGZyb20gY29udGFp
bmVyIG9mZnNldHMgKGh0bWwgcmVuZGVyZXJzKSB0byBhIHJlbGF0aXZlIHRyYW5zZm9ybSAoc3Zn
IHJlbmRlcmVycykuCiAgICAgLy8gVHJhbnNmb3JtIGZyb20gb3VyIHBhaW50IGNvbnRhaW5lcidz
IGNvb3JkaW5hdGUgc3lzdGVtIHRvIG91ciBsb2NhbCBjb29yZHMuCiAgICAgSW50UG9pbnQgYWRq
dXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCk7CiAgICAgY2hp
bGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlvbihh
ZGp1c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpICogbG9jYWxU
b0JvcmRlckJveFRyYW5zZm9ybSgpKTsKIAotICAgIC8vIFNWR1JlbmRlcmluZ0NvbnRleHQgbXVz
dCBiZSBkZXN0cm95ZWQgYmVmb3JlIHdlIHJlc3RvcmUgdGhlIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQsIGJlY2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKKyAgICAvLyBTVkdSZW5kZXJpbmdDb250ZXh0
IG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB3ZSByZXN0b3JlIHRoZSBjaGlsZFBhaW50SW5mby5j
b250ZXh0KCksIGJlY2F1c2UgYSBmaWx0ZXIgbWF5IGhhdmUKICAgICAvLyBjaGFuZ2VkIHRoZSBj
b250ZXh0IGFuZCBpdCBpcyBvbmx5IHJldmVydGVkIHdoZW4gdGhlIFNWR1JlbmRlcmluZ0NvbnRl
eHQgZGVzdHJ1Y3RvciBmaW5pc2hlcyBhcHBseWluZyB0aGUgZmlsdGVyLgogICAgIHsKICAgICAg
ICAgU1ZHUmVuZGVyaW5nQ29udGV4dCByZW5kZXJpbmdDb250ZXh0OwpAQCAtMjg1LDcgKzI4NSw3
IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjaGls
ZFBhaW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CisgICAgY2hpbGRQYWludEluZm8uY29udGV4
dCgpLnJlc3RvcmUoKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdSb290Ojp3aWxsQmVEZXN0cm95ZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApp
bmRleCBhMTljZGJiNmM1YjE3YzNiN2VlYzg2NmNkNDU1NWFmNjY2NTYwZWIwLi45Nzc1OThlOGM2
ZTY5ZWMzY2MzMWM0NDNiZTg2YzczMjM0MTgyZDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtOTIsMTIgKzkyLDEyIEBAIGJvb2wg
UmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiBwYXRoKCkuaXNFbXB0
eSgpOwogfQogCi12b2lkIFJlbmRlclNWR1NoYXBlOjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFNoYXBlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LT5maWxsUGF0aChwYXRoKCkp
OworICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFw
ZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAordm9pZCBSZW5k
ZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAog
ewogICAgIEFTU0VSVChtX3BhdGgpOwogICAgIFBhdGgqIHVzZVBhdGggPSBtX3BhdGguZ2V0KCk7
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgIGlmIChoYXNOb25TY2FsaW5nU3Ryb2tl
KCkpCiAgICAgICAgIHVzZVBhdGggPSBub25TY2FsaW5nU3Ryb2tlUGF0aCh1c2VQYXRoLCBub25T
Y2FsaW5nU3Ryb2tlVHJhbnNmb3JtKCkpOwogCi0gICAgY29udGV4dC0+c3Ryb2tlUGF0aCgqdXNl
UGF0aCk7CisgICAgY29udGV4dC5zdHJva2VQYXRoKCp1c2VQYXRoKTsKIH0KIAogYm9vbCBSZW5k
ZXJTVkdTaGFwZTo6c2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkKQEAgLTIyNSw4ICsyMjUsOSBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpzaG91bGRH
ZW5lcmF0ZU1hcmtlclBvc2l0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIHJlc291cmNlcy0+bWFy
a2VyU3RhcnQoKSB8fCByZXNvdXJjZXMtPm1hcmtlck1pZCgpIHx8IHJlc291cmNlcy0+bWFya2Vy
RW5kKCk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHU2hhcGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQgUmVuZGVyU1ZHU2hh
cGU6OmZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdyYXBoaWNzQ29udGV4dCYg
b3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9ICZvcmln
aW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAgICBpZiAoUmVuZGVyU1ZH
UmVzb3VyY2UqIGZpbGxQYWludGluZ1Jlc291cmNlID0gUmVuZGVyU1ZHUmVzb3VyY2U6OmZpbGxQ
YWludGluZ1Jlc291cmNlKCp0aGlzLCBzdHlsZSwgZmFsbGJhY2tDb2xvcikpIHsKICAgICAgICAg
aWYgKGZpbGxQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291cmNlKCp0aGlzLCBzdHlsZSwgY29u
dGV4dCwgQXBwbHlUb0ZpbGxNb2RlKSkKQEAgLTI0MCw4ICsyNDEsOSBAQCB2b2lkIFJlbmRlclNW
R1NoYXBlOjpmaWxsU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit2b2lk
IFJlbmRlclNWR1NoYXBlOjpzdHJva2VTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEdy
YXBoaWNzQ29udGV4dCYgb3JpZ2luYWxDb250ZXh0KQogeworICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCA9ICZvcmlnaW5hbENvbnRleHQ7CiAgICAgQ29sb3IgZmFsbGJhY2tDb2xvcjsKICAg
ICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJT
VkdSZXNvdXJjZTo6c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZSgqdGhpcywgc3R5bGUsIGZhbGxiYWNr
Q29sb3IpKSB7CiAgICAgICAgIGlmIChzdHJva2VQYWludGluZ1Jlc291cmNlLT5hcHBseVJlc291
cmNlKCp0aGlzLCBzdHlsZSwgY29udGV4dCwgQXBwbHlUb1N0cm9rZU1vZGUpKQpAQCAtMjU1LDEy
ICsyNTcsMTIgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICB9CiB9CiAKLXZvaWQgUmVu
ZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3ZvaWQg
UmVuZGVyU1ZHU2hhcGU6OnN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
ICAgICBpZiAoIXN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNWaXNpYmxlU3Ryb2tlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29u
dGV4dCwgZmFsc2UpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0LCBmYWxzZSk7CiAgICAgaWYgKGhhc05vblNjYWxpbmdTdHJva2UoKSkgewogICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbm9uU2NhbGluZ1RyYW5zZm9ybSA9IG5vblNjYWxpbmdTdHJva2VU
cmFuc2Zvcm0oKTsKICAgICAgICAgaWYgKCFzZXR1cE5vblNjYWxpbmdTdHJva2VDb250ZXh0KG5v
blNjYWxpbmdUcmFuc2Zvcm0sIHN0YXRlU2F2ZXIpKQpAQCAtMjc1LDEwICsyNzcsMTAgQEAgdm9p
ZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGlsZFBhaW50
SW5mbykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsr
aSkgewogICAgICAgICBzd2l0Y2ggKHBhaW50T3JkZXIuYXQoaSkpIHsKICAgICAgICAgY2FzZSBQ
YWludFR5cGVGaWxsOgotICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQpOworICAgICAgICAgICAgZmlsbFNoYXBlKHN0eWxlKCksIGNoaWxkUGFpbnRJ
bmZvLmNvbnRleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5
cGVTdHJva2U6Ci0gICAgICAgICAgICBzdHJva2VTaGFwZShjaGlsZFBhaW50SW5mby5jb250ZXh0
KTsKKyAgICAgICAgICAgIHN0cm9rZVNoYXBlKGNoaWxkUGFpbnRJbmZvLmNvbnRleHQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQYWludFR5cGVNYXJrZXJzOgogICAgICAg
ICAgICAgaWYgKCFtX21hcmtlclBvc2l0aW9ucy5pc0VtcHR5KCkpCkBAIC0yOTAsNyArMjkyLDcg
QEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6ZmlsbFN0cm9rZU1hcmtlcnMoUGFpbnRJbmZvJiBjaGls
ZFBhaW50SW5mbykKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JikKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVn
cm91bmQKKyAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkgfHwg
cGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kCiAgICAgICAgIHx8IHN0eWxl
KCkudmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCBpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpOwpAQCAtMjk4LDcgKzMwMCw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFBhaW50SW5mbyBjaGlsZFBhaW50SW5mbyhwYWludEluZm8pOwotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY2hpbGRQYWludEluZm8uY29udGV4dCk7CisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQoKSk7CiAgICAgY2hpbGRQYWludEluZm8uYXBwbHlUcmFuc2Zvcm0obV9sb2NhbFRyYW5zZm9y
bSk7CiAKICAgICBpZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91
bmQpIHsKQEAgLTMwNyw3ICszMDksNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpwYWludChQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICBpZiAocmVuZGVy
aW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNW
R1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKICAgICAgICAgICAg
IGlmIChzdmdTdHlsZS5zaGFwZVJlbmRlcmluZygpID09IFNSX0NSSVNQRURHRVMpCi0gICAgICAg
ICAgICAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGZhbHNl
KTsKKyAgICAgICAgICAgICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0KCkuc2V0U2hvdWxkQW50
aWFsaWFzKGZhbHNlKTsKIAogICAgICAgICAgICAgZmlsbFN0cm9rZU1hcmtlcnMoY2hpbGRQYWlu
dEluZm8pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmgKaW5kZXggNjExYmZkMTRiOWRkNjQ4YzJmMWQ3MzQyYjhhYmYyOWEyYmVhZWVh
Mi4uMTRjMzFjY2ZjNjA0MzY5ZTg2MGVkYTE3ZjE1NjQ5Yjg3YjZlNmZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtNTQsOCArNTQsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92
ZXJyaWRlIGZpbmFsIHsgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVlOyB9CiAgICAgdmly
dHVhbCBib29sIG5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJh
bnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0KikgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3QgPSAwOwogCiAgICAgYm9v
bCBoYXNQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoLmdldCgpOyB9CkBAIC0xMTQsOSArMTE0
LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbWFya2VyUmVjdChmbG9hdCBzdHJva2VXaWR0
aCkgY29uc3Q7CiAgICAgdm9pZCBwcm9jZXNzTWFya2VyUG9zaXRpb25zKCk7CiAKLSAgICB2b2lk
IGZpbGxTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCopOwotICAgIHZv
aWQgc3Ryb2tlU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqKTsKLSAg
ICB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCopOworICAgIHZvaWQgZmlsbFNoYXBl
KGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBzdHJva2VT
aGFwZShjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgc3Ry
b2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdm9pZCBmaWxsU3Ryb2tlTWFya2VycyhQ
YWludEluZm8mKTsKICAgICB2b2lkIGRyYXdNYXJrZXJzKFBhaW50SW5mbyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA0ZTA4ZjNm
OWFhMjRmZDE4YmQyMmM4YzU5OGJiOWFkOWVlZmQ0OTY5Li45MmI3MWU5YzY0ODUxMDhjZTJjN2Jm
MzQ3NTQwYzg3YTYyZDY1ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6
OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkg
Y29ucwogCiB2b2lkIFJlbmRlclNWR1RleHQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYpCiB7Ci0gICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGlu
Z0Rpc2FibGVkKCkpCisgICAgaWYgKHBhaW50SW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VGb3JlZ3JvdW5kCkBAIC00ODgsNyArNDg4LDcgQEAgdm9pZCBSZW5kZXJTVkdUZXh0Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmKQogICAgICAgICAg
cmV0dXJuOwogCiAgICAgUGFpbnRJbmZvIGJsb2NrSW5mbyhwYWludEluZm8pOwotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqYmxvY2tJbmZvLmNvbnRleHQpOworICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihibG9ja0luZm8uY29udGV4dCgp
KTsKICAgICBibG9ja0luZm8uYXBwbHlUcmFuc2Zvcm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
KTsKICAgICBSZW5kZXJCbG9jazo6cGFpbnQoYmxvY2tJbmZvLCBMYXlvdXRQb2ludCgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcAppbmRleCAwMjcwM2QzZGY5NjA2YzhjYmJhZmI5YTVlZDUwMDU4
NmMyMmZkOGQ1Li43ODM3ZWI1MjRlZTI1YzI0YmE4ZmFmMDNkYjBkZjdlY2NmYWI1YTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Zp
ZXdwb3J0Q29udGFpbmVyLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFJlbmRlclNWR1ZpZXdw
b3J0Q29udGFpbmVyOjpkZXRlcm1pbmVJZkxheW91dFNpemVDaGFuZ2VkKCkKIHZvaWQgUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXI6OmFwcGx5Vmlld3BvcnRDbGlwKFBhaW50SW5mbyYgcGFpbnRJ
bmZvKQogewogICAgIGlmIChTVkdSZW5kZXJTdXBwb3J0Ojppc092ZXJmbG93SGlkZGVuKCp0aGlz
KSkKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAobV92aWV3cG9ydCk7CisgICAgICAg
IHBhaW50SW5mby5jb250ZXh0KCkuY2xpcChtX3ZpZXdwb3J0KTsKIH0KIAogdm9pZCBSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guY3BwCmluZGV4IGQxZjRjNWMzZWFmOWYz
YjkxMjhmM2MzYjk5NzMyMzcyMGYzZTZmYjMuLmQ4OWJjZmU2ZTNmNmMwNWQzYjBkYzlmNGZkYjQ3
MmZiOGU0MTUyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
SW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bmxpbmVGbG93Qm94LmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2
b2lkIFNWR0lubGluZUZsb3dCb3g6OnBhaW50U2VsZWN0aW9uQmFja2dyb3VuZChQYWludEluZm8m
IHBhaW50SW5mbykKIHsKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VG
b3JlZ3JvdW5kIHx8IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAg
ICBBU1NFUlQoIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFT
U0VSVCghcGFpbnRJbmZvLmNvbnRleHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgUGFp
bnRJbmZvIGNoaWxkUGFpbnRJbmZvKHBhaW50SW5mbyk7CiAgICAgZm9yIChJbmxpbmVCb3gqIGNo
aWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7
CkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgU1ZHSW5saW5lRmxvd0JveDo6cGFpbnRTZWxlY3Rpb25C
YWNrZ3JvdW5kKFBhaW50SW5mbyYgcGFpbnRJbmZvKQogdm9pZCBTVkdJbmxpbmVGbG93Qm94Ojpw
YWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
LCBMYXlvdXRVbml0LCBMYXlvdXRVbml0KQogewogICAgIEFTU0VSVChwYWludEluZm8ucGhhc2Ug
PT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VT
ZWxlY3Rpb24pOwotICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSk7CisgICAgQVNTRVJUKCFwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSk7CiAKICAgICBTVkdSZW5kZXJpbmdDb250ZXh0IHJlbmRlcmluZ0NvbnRleHQocmVuZGVyZXIo
KSwgcGFpbnRJbmZvLCBTVkdSZW5kZXJpbmdDb250ZXh0OjpTYXZlR3JhcGhpY3NDb250ZXh0KTsK
ICAgICBpZiAocmVuZGVyaW5nQ29udGV4dC5pc1JlbmRlcmluZ1ByZXBhcmVkKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmluZGV4
IDgzYjE3NWRmYzU0ODRlYTVlYjE1ZGMyOTYxYjgyYzA2Y2FjYzRlYzguLmVmOGYxOGVlY2VjYWJh
OTE2MjU0YmI3M2YyMTY0MDM3MzJmYTVkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMjIwLDEzICsyMjAsMTMgQEAgdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJiBw
YWludEluZm8pCiAgICAgICAgIGlmICghbWFwU3RhcnRFbmRQb3NpdGlvbnNJbnRvRnJhZ21lbnRD
b29yZGluYXRlcyhmcmFnbWVudCwgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBmcmFnbWVudEVuZFBv
c2l0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqcGFpbnRJbmZvLmNvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAg
ICAgICAgIGZyYWdtZW50LmJ1aWxkRnJhZ21lbnRUcmFuc2Zvcm0oZnJhZ21lbnRUcmFuc2Zvcm0p
OwogICAgICAgICBpZiAoIWZyYWdtZW50VHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0pOworICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5jb25jYXRDVE0oZnJhZ21lbnRUcmFuc2Zvcm0p
OwogCi0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENv
bG9yLCBzdHlsZS5jb2xvclNwYWNlKCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+Zmls
bFJlY3Qoc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChmcmFnbWVudCwgZnJhZ21lbnRTdGFy
dFBvc2l0aW9uLCBmcmFnbWVudEVuZFBvc2l0aW9uLCAmc3R5bGUpLCBiYWNrZ3JvdW5kQ29sb3Is
IHN0eWxlLmNvbG9yU3BhY2UoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2V0Rmls
bENvbG9yKGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKKyAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5maWxsUmVjdChzZWxlY3Rpb25SZWN0Rm9yVGV4dEZyYWdtZW50KGZy
YWdtZW50LCBmcmFnbWVudFN0YXJ0UG9zaXRpb24sIGZyYWdtZW50RW5kUG9zaXRpb24sICZzdHls
ZSksIGJhY2tncm91bmRDb2xvciwgc3R5bGUuY29sb3JTcGFjZSgpKTsKIAogICAgICAgICBtX3Bh
aW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb0RlZmF1bHRNb2RlOwogICAgIH0KQEAgLTI4OCwx
NyArMjg4LDE3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgIFNWR1RleHRGcmFn
bWVudCYgZnJhZ21lbnQgPSBtX3RleHRGcmFnbWVudHMuYXQoaSk7CiAgICAgICAgIEFTU0VSVCgh
bV9wYWludGluZ1Jlc291cmNlKTsKIAotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICBmcmFn
bWVudC5idWlsZEZyYWdtZW50VHJhbnNmb3JtKGZyYWdtZW50VHJhbnNmb3JtKTsKICAgICAgICAg
aWYgKCFmcmFnbWVudFRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+Y29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0KCkuY29uY2F0Q1RNKGZyYWdtZW50VHJhbnNmb3JtKTsKIAogICAgICAg
ICAvLyBTcGVjOiBBbGwgdGV4dCBkZWNvcmF0aW9ucyBleGNlcHQgbGluZS10aHJvdWdoIHNob3Vs
ZCBiZSBkcmF3biBiZWZvcmUgdGhlIHRleHQgaXMgZmlsbGVkIGFuZCBzdHJva2VkOyB0aHVzLCB0
aGUgdGV4dCBpcyByZW5kZXJlZCBvbiB0b3Agb2YgdGhlc2UgZGVjb3JhdGlvbnMuCiAgICAgICAg
IGludCBkZWNvcmF0aW9ucyA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAgICAg
ICAgIGlmIChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lKQotICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3JhdGlvblVuZGVy
bGluZSwgZnJhZ21lbnQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5j
b250ZXh0KCksIFRleHREZWNvcmF0aW9uVW5kZXJsaW5lLCBmcmFnbWVudCk7CiAgICAgICAgIGlm
IChkZWNvcmF0aW9ucyAmIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUpCi0gICAgICAgICAgICBwYWlu
dERlY29yYXRpb24ocGFpbnRJbmZvLmNvbnRleHQsIFRleHREZWNvcmF0aW9uT3ZlcmxpbmUsIGZy
YWdtZW50KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihwYWludEluZm8uY29udGV4dCgp
LCBUZXh0RGVjb3JhdGlvbk92ZXJsaW5lLCBmcmFnbWVudCk7CiAKICAgICAgICAgYXV0byBwYWlu
dE9yZGVyID0gc3R5bGUuc3ZnU3R5bGUoKS5wYWludFR5cGVzRm9yUGFpbnRPcmRlcigpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpbnRPcmRlci5zaXplKCk7ICsraSkgewpA
QCAtMzA3LDEzICszMDcsMTMgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgICAg
ICAgICBpZiAoIWhhc0ZpbGwpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRmlsbE1vZGUgfCBBcHBs
eVRvVGV4dE1vZGU7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0
LCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNl
bGVjdGVkVGV4dE9ubHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29u
dGV4dCgpLCAmc3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBw
YWludFNlbGVjdGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBQYWludFR5cGVTdHJva2U6CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNWaXNpYmxl
U3Ryb2tlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBt
X3BhaW50aW5nUmVzb3VyY2VNb2RlID0gQXBwbHlUb1N0cm9rZU1vZGUgfCBBcHBseVRvVGV4dE1v
ZGU7Ci0gICAgICAgICAgICAgICAgcGFpbnRUZXh0KHBhaW50SW5mby5jb250ZXh0LCAmc3R5bGUs
IHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVjdGVkVGV4
dE9ubHkpOworICAgICAgICAgICAgICAgIHBhaW50VGV4dChwYWludEluZm8uY29udGV4dCgpLCAm
c3R5bGUsIHNlbGVjdGlvblN0eWxlLCBmcmFnbWVudCwgaGFzU2VsZWN0aW9uLCBwYWludFNlbGVj
dGVkVGV4dE9ubHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQ
YWludFR5cGVNYXJrZXJzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNlCiAKICAgICAgICAgLy8gU3BlYzogTGluZS10
aHJvdWdoIHNob3VsZCBiZSBkcmF3biBhZnRlciB0aGUgdGV4dCBpcyBmaWxsZWQgYW5kIHN0cm9r
ZWQ7IHRodXMsIHRoZSBsaW5lLXRocm91Z2ggaXMgcmVuZGVyZWQgb24gdG9wIG9mIHRoZSB0ZXh0
LgogICAgICAgICBpZiAoZGVjb3JhdGlvbnMgJiBUZXh0RGVjb3JhdGlvbkxpbmVUaHJvdWdoKQot
ICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKHBhaW50SW5mby5jb250ZXh0LCBUZXh0RGVjb3Jh
dGlvbkxpbmVUaHJvdWdoLCBmcmFnbWVudCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24o
cGFpbnRJbmZvLmNvbnRleHQoKSwgVGV4dERlY29yYXRpb25MaW5lVGhyb3VnaCwgZnJhZ21lbnQp
OwogCiAgICAgICAgIG1fcGFpbnRpbmdSZXNvdXJjZU1vZGUgPSBBcHBseVRvRGVmYXVsdE1vZGU7
CiAgICAgfQpAQCAtMzc5LDE0ICszNzksMTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpyZWxl
YXNlUGFpbnRpbmdSZXNvdXJjZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdAogCiBi
b29sIFNWR0lubGluZVRleHRCb3g6OnByZXBhcmVHcmFwaGljc0NvbnRleHRGb3JUZXh0UGFpbnRp
bmcoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgZmxvYXQgc2NhbGluZ0ZhY3RvciwgVGV4dFJ1
biYgdGV4dFJ1biwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAgIGJvb2wgYWNxdWlyZWRSZXNv
dXJjZSA9IGFjcXVpcmVQYWludGluZ1Jlc291cmNlKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHBh
cmVudCgpLT5yZW5kZXJlcigpLCBzdHlsZSk7Ci0gICAgaWYgKCFhY3F1aXJlZFJlc291cmNlKQor
ICAgIGlmICghYWNxdWlyZVBhaW50aW5nUmVzb3VyY2UoY29udGV4dCwgc2NhbGluZ0ZhY3Rvciwg
cGFyZW50KCktPnJlbmRlcmVyKCksIHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgRU5BQkxFKFNWR19GT05UUykKICAgICAvLyBTVkcgRm9udHMgbmVlZCBhY2Nlc3MgdG8gdGhl
IHBhaW50aW5nIHJlc291cmNlIHVzZWQgdG8gZHJhdyB0aGUgY3VycmVudCB0ZXh0IGNodW5rLgot
ICAgIFRleHRSdW46OlJlbmRlcmluZ0NvbnRleHQqIHJlbmRlcmluZ0NvbnRleHQgPSB0ZXh0UnVu
LnJlbmRlcmluZ0NvbnRleHQoKTsKLSAgICBpZiAocmVuZGVyaW5nQ29udGV4dCkKKyAgICBpZiAo
YXV0byogcmVuZGVyaW5nQ29udGV4dCA9IHRleHRSdW4ucmVuZGVyaW5nQ29udGV4dCgpKQogICAg
ICAgICBzdGF0aWNfY2FzdDxTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0Nv
bnRleHQpLT5zZXRBY3RpdmVQYWludGluZ1Jlc291cmNlKG1fcGFpbnRpbmdSZXNvdXJjZSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTSh0ZXh0UnVuKTsKQEAgLTQ5OSw3ICs0OTcsNyBAQCBzdGF0
aWMgaW5saW5lIFJlbmRlckJveE1vZGVsT2JqZWN0JiBmaW5kUmVuZGVyZXJEZWZpbmluaW5nVGV4
dERlY29yYXRpb24oSW5saW5lRgogICAgIHJldHVybiAqcmVuZGVyZXI7CiB9CiAKLXZvaWQgU1ZH
SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
VGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVu
dCkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgVGV4dERlY29yYXRpb24gZGVjb3JhdGlvbiwgY29uc3QgU1ZHVGV4dEZyYWdt
ZW50JiBmcmFnbWVudCkKIHsKICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCkgPT0gVGV4dERlY29yYXRpb25Ob25lKQogICAgICAgICByZXR1cm47CkBA
IC01MjcsNyArNTI1LDcgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbgogICAgIH0KIH0KIAotdm9p
ZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJh
Z21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVy
KQordm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBUZXh0RGVjb3JhdGlvbiBkZWNvcmF0aW9uLCBjb25zdCBTVkdU
ZXh0RnJhZ21lbnQmIGZyYWdtZW50LCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJl
bmRlcmVyKQogewogICAgIEFTU0VSVCghbV9wYWludGluZ1Jlc291cmNlKTsKICAgICBBU1NFUlQo
bV9wYWludGluZ1Jlc291cmNlTW9kZSAhPSBBcHBseVRvRGVmYXVsdE1vZGUpOwpAQCAtNTQ5LDEx
ICs1NDcsMTEgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5
bGUoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBmbG9hdCB3aWR0aCA9IGZy
YWdtZW50LndpZHRoOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBzY2FsZWRGb250TWV0cmljcyA9
IHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKTsKIAotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKICAgICAg
ICAgd2lkdGggKj0gc2NhbGluZ0ZhY3RvcjsKICAgICAgICAgZGVjb3JhdGlvbk9yaWdpbi5zY2Fs
ZShzY2FsaW5nRmFjdG9yLCBzY2FsaW5nRmFjdG9yKTsKLSAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEgLyBzY2FsaW5nRmFjdG9yLCAxIC8gc2NhbGluZ0ZhY3RvcikpOworICAgICAg
ICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxIC8gc2NhbGluZ0ZhY3RvciwgMSAvIHNjYWxpbmdG
YWN0b3IpKTsKICAgICB9CiAKICAgICBkZWNvcmF0aW9uT3JpZ2luLm1vdmUoMCwgLXNjYWxlZEZv
bnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKyBwb3NpdGlvbk9mZnNldEZvckRlY29yYXRpb24oZGVj
b3JhdGlvbiwgc2NhbGVkRm9udE1ldHJpY3MsIHRoaWNrbmVzcykpOwpAQCAtNTYxLDExICs1NTks
MTIgQEAgdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb25XaXRoU3R5bGUoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBUZXh0RGUKICAgICBQYXRoIHBhdGg7CiAgICAgcGF0aC5h
ZGRSZWN0KEZsb2F0UmVjdChkZWNvcmF0aW9uT3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHRoaWNr
bmVzcykpKTsKIAotICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBzY2Fs
aW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsICZkZWNvcmF0aW9uU3R5bGUpKQotICAgICAg
ICByZWxlYXNlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCAmcGF0aCk7CisgICAgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0UHRyID0gJmNvbnRleHQ7CisgICAgaWYgKGFjcXVpcmVQYWludGluZ1Jl
c291cmNlKGNvbnRleHRQdHIsIHNjYWxpbmdGYWN0b3IsIGRlY29yYXRpb25SZW5kZXJlciwgJmRl
Y29yYXRpb25TdHlsZSkpCisgICAgICAgIHJlbGVhc2VQYWludGluZ1Jlc291cmNlKGNvbnRleHRQ
dHIsICZwYXRoKTsKIH0KIAotdm9pZCBTVkdJbmxpbmVUZXh0Qm94OjpwYWludFRleHRXaXRoU2hh
ZG93cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRlclN0eWxlKiBzdHlsZSwgVGV4dFJ1
biYgdGV4dFJ1biwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiBmcmFnbWVudCwgaW50IHN0YXJ0UG9z
aXRpb24sIGludCBlbmRQb3NpdGlvbikKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJTdHlsZSogc3R5bGUs
IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGludCBz
dGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRpb24pCiB7CiAgICAgZmxvYXQgc2NhbGluZ0ZhY3Rv
ciA9IHJlbmRlcmVyKCkuc2NhbGluZ0ZhY3RvcigpOwogICAgIEFTU0VSVChzY2FsaW5nRmFjdG9y
KTsKQEAgLTU4MywyNCArNTgyLDI1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0
V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHlsCiAKICAgICBG
bG9hdFJlY3Qgc2hhZG93UmVjdChGbG9hdFBvaW50KHRleHRPcmlnaW4ueCgpLCB0ZXh0T3JpZ2lu
LnkoKSAtIHNjYWxlZEZvbnQuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2VudCgpKSwgdGV4dFNpemUp
OwogCisgICAgR3JhcGhpY3NDb250ZXh0KiB1c2VkQ29udGV4dCA9ICZjb250ZXh0OwogICAgIGRv
IHsKLSAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKGNv
bnRleHQsIHNjYWxpbmdGYWN0b3IsIHRleHRSdW4sIHN0eWxlKSkKKyAgICAgICAgaWYgKCFwcmVw
YXJlR3JhcGhpY3NDb250ZXh0Rm9yVGV4dFBhaW50aW5nKHVzZWRDb250ZXh0LCBzY2FsaW5nRmFj
dG9yLCB0ZXh0UnVuLCBzdHlsZSkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICB7Ci0g
ICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKmNvbnRleHQsIHNoYWRvdywg
c2hhZG93UmVjdCk7CisgICAgICAgICAgICBTaGFkb3dBcHBsaWVyIHNoYWRvd0FwcGxpZXIoKnVz
ZWRDb250ZXh0LCBzaGFkb3csIHNoYWRvd1JlY3QpOwogCiAgICAgICAgICAgICBpZiAoIXNoYWRv
d0FwcGxpZXIuZGlkU2F2ZUNvbnRleHQoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5zYXZl
KCk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0
b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CisgICAgICAgICAgICAgICAgdXNlZENvbnRleHQtPnNh
dmUoKTsKKyAgICAgICAgICAgIHVzZWRDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxp
bmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAKLSAgICAgICAgICAgIHNjYWxlZEZvbnQu
ZHJhd1RleHQoY29udGV4dCwgdGV4dFJ1biwgdGV4dE9yaWdpbiArIHNoYWRvd0FwcGxpZXIuZXh0
cmFPZmZzZXQoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOworICAgICAgICAgICAgc2Nh
bGVkRm9udC5kcmF3VGV4dCgqdXNlZENvbnRleHQsIHRleHRSdW4sIHRleHRPcmlnaW4gKyBzaGFk
b3dBcHBsaWVyLmV4dHJhT2Zmc2V0KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKIAog
ICAgICAgICAgICAgaWYgKCFzaGFkb3dBcHBsaWVyLmRpZFNhdmVDb250ZXh0KCkpCi0gICAgICAg
ICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOworICAgICAgICAgICAgICAgIHVzZWRDb250ZXh0
LT5yZXN0b3JlKCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN0b3JlR3JhcGhpY3NDb250ZXh0
QWZ0ZXJUZXh0UGFpbnRpbmcoY29udGV4dCwgdGV4dFJ1bik7CisgICAgICAgIHJlc3RvcmVHcmFw
aGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyh1c2VkQ29udGV4dCwgdGV4dFJ1bik7CiAKICAg
ICAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYwOSw3ICs2MDksNyBA
QCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgUmVuZGVyU3R5bAogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiB9CiAKLXZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNW
R1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2Vs
ZWN0ZWRUZXh0T25seSkKK3ZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogc2VsZWN0
aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYgZnJhZ21lbnQsIGJvb2wgaGFzU2VsZWN0
aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSkKIHsKICAgICBBU1NFUlQoc3R5bGUpOwog
ICAgIEFTU0VSVChzZWxlY3Rpb25TdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHSW5saW5lVGV4dEJveC5oCmluZGV4IDIzYzA3NjlmZTlmYTc3NjI4YmVkMDFlYTNj
YjBjNzllNWFhY2ZiNjguLjE3ZWNlZjNhY2E5NDVmNzFiMmU1ZmM4NDZhOTMxNWQyZmZjYTExM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5o
CkBAIC03NywxMCArNzcsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHByZXBhcmVHcmFwaGljc0Nv
bnRleHRGb3JUZXh0UGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0KiYsIGZsb2F0IHNjYWxpbmdGYWN0
b3IsIFRleHRSdW4mLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVzdG9yZUdyYXBoaWNzQ29u
dGV4dEFmdGVyVGV4dFBhaW50aW5nKEdyYXBoaWNzQ29udGV4dComLCBUZXh0UnVuJik7CiAKLSAg
ICB2b2lkIHBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqLCBUZXh0RGVjb3JhdGlvbiwg
Y29uc3QgU1ZHVGV4dEZyYWdtZW50Jik7Ci0gICAgdm9pZCBwYWludERlY29yYXRpb25XaXRoU3R5
bGUoR3JhcGhpY3NDb250ZXh0KiwgVGV4dERlY29yYXRpb24sIGNvbnN0IFNWR1RleHRGcmFnbWVu
dCYsIFJlbmRlckJveE1vZGVsT2JqZWN0JiBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgIHZvaWQg
cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5bGUqLCBUZXh0
UnVuJiwgY29uc3QgU1ZHVGV4dEZyYWdtZW50JiwgaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQ
b3NpdGlvbik7Ci0gICAgdm9pZCBwYWludFRleHQoR3JhcGhpY3NDb250ZXh0KiwgUmVuZGVyU3R5
bGUqLCBSZW5kZXJTdHlsZSogc2VsZWN0aW9uU3R5bGUsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYs
IGJvb2wgaGFzU2VsZWN0aW9uLCBib29sIHBhaW50U2VsZWN0ZWRUZXh0T25seSk7CisgICAgdm9p
ZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiwgVGV4dERlY29yYXRpb24sIGNvbnN0
IFNWR1RleHRGcmFnbWVudCYpOworICAgIHZvaWQgcGFpbnREZWNvcmF0aW9uV2l0aFN0eWxlKEdy
YXBoaWNzQ29udGV4dCYsIFRleHREZWNvcmF0aW9uLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBS
ZW5kZXJCb3hNb2RlbE9iamVjdCYgZGVjb3JhdGlvblJlbmRlcmVyKTsKKyAgICB2b2lkIHBhaW50
VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwgVGV4dFJ1biYs
IGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQgZW5kUG9zaXRp
b24pOworICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwg
UmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBib29s
IGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCiAgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDIxMmEx
NjZlYzBjZjIwNzZmYmM3M2IxMTM0YWU4YmJiZDY2MzczZjAuLmZiOWEwM2M1OTVlNjM2MDY5NmFl
MWIzZmQ1ZmIyMTRjZjM2NGYwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTYsMTkgKzU2LDIwIEBAIFNWR1Jl
bmRlcmluZ0NvbnRleHQ6On5TVkdSZW5kZXJpbmdDb250ZXh0KCkKIAogICAgIGlmIChtX3JlbmRl
cmluZ0ZsYWdzICYgRW5kRmlsdGVyTGF5ZXIpIHsKICAgICAgICAgQVNTRVJUKG1fZmlsdGVyKTsK
LSAgICAgICAgbV9maWx0ZXItPnBvc3RBcHBseVJlc291cmNlKCptX3JlbmRlcmVyLCBtX3BhaW50
SW5mby0+Y29udGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlLCAwLCAwKTsKLSAgICAgICAgbV9wYWlu
dEluZm8tPmNvbnRleHQgPSBtX3NhdmVkQ29udGV4dDsKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0UHRyID0gJm1fcGFpbnRJbmZvLT5jb250ZXh0KCk7CisgICAgICAgIG1fZmlsdGVy
LT5wb3N0QXBwbHlSZXNvdXJjZSgqbV9yZW5kZXJlciwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1
bHRNb2RlLCAwLCAwKTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKm1fc2F2ZWRD
b250ZXh0KTsKICAgICAgICAgbV9wYWludEluZm8tPnJlY3QgPSBtX3NhdmVkUGFpbnRSZWN0Owog
ICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmluZ0ZsYWdzICYgRW5kT3BhY2l0eUxheWVyKQotICAg
ICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICAg
ICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogCiAgICAg
aWYgKG1fcmVuZGVyaW5nRmxhZ3MgJiBFbmRTaGFkb3dMYXllcikKLSAgICAgICAgbV9wYWludElu
Zm8tPmNvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgICAgIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKIAogICAgIGlmIChtX3JlbmRlcmlu
Z0ZsYWdzICYgUmVzdG9yZUdyYXBoaWNzQ29udGV4dCkKLSAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5yZXN0b3Jl
KCk7CiB9CiAKIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29u
dGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpbnRJbmZvJiBwYWludEluZm8sIE5lZWRz
R3JhcGhpY3NDb250ZXh0U2F2ZSBuZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUpCkBAIC04NSw3ICs4
Niw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgUGFpCiAKICAgICAvLyBXZSBuZWVkIHRvIHNhdmUg
LyByZXN0b3JlIHRoZSBjb250ZXh0IGV2ZW4gaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4K
ICAgICBpZiAobmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID09IFNhdmVHcmFwaGljc0NvbnRleHQp
IHsKLSAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgbV9wYWlu
dEluZm8tPmNvbnRleHQoKS5zYXZlKCk7CiAgICAgICAgIG1fcmVuZGVyaW5nRmxhZ3MgfD0gUmVz
dG9yZUdyYXBoaWNzQ29udGV4dDsKICAgICB9CiAKQEAgLTExMSwyNCArMTEyLDI0IEBAIHZvaWQg
U1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgUGFpCiAKICAgICBpZiAob3BhY2l0eSA8IDEgfHwgc2hhZG93IHx8IGhh
c0JsZW5kTW9kZSB8fCBpc29sYXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewog
ICAgICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSBtX3JlbmRlcmVyLT5yZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpOwotICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+Y2xpcChy
ZXBhaW50UmVjdCk7CisgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY2xpcChyZXBhaW50
UmVjdCk7CiAKICAgICAgICAgaWYgKG9wYWNpdHkgPCAxIHx8IGhhc0JsZW5kTW9kZSB8fCBpc29s
YXRlTWFza0ZvckJsZW5kaW5nIHx8IGhhc0lzb2xhdGlvbikgewogCiAgICAgICAgICAgICBpZiAo
aGFzQmxlbmRNb2RlKQotICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0LT5zZXRD
b21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQtPmNvbXBvc2l0ZU9wZXJhdGlv
bigpLCBzdHlsZS5ibGVuZE1vZGUoKSk7CisgICAgICAgICAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQoKS5zZXRDb21wb3NpdGVPcGVyYXRpb24obV9wYWludEluZm8tPmNvbnRleHQoKS5jb21w
b3NpdGVPcGVyYXRpb24oKSwgc3R5bGUuYmxlbmRNb2RlKCkpOwogCi0gICAgICAgICAgICBtX3Bh
aW50SW5mby0+Y29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5KTsKKyAgICAg
ICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFj
aXR5KTsKIAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBt
X3BhaW50SW5mby0+Y29udGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5j
b250ZXh0LT5jb21wb3NpdGVPcGVyYXRpb24oKSwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAg
ICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3Bh
aW50SW5mby0+Y29udGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwp
OwogCiAgICAgICAgICAgICBtX3JlbmRlcmluZ0ZsYWdzIHw9IEVuZE9wYWNpdHlMYXllcjsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmIChzaGFkb3cpIHsKLSAgICAgICAgICAgIG1fcGFpbnRJbmZv
LT5jb250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShyb3VuZFRvSW50KHNoYWRvdy0+eCgpKSwgcm91
bmRUb0ludChzaGFkb3ctPnkoKSkpLCBzaGFkb3ctPnJhZGl1cygpLCBzaGFkb3ctPmNvbG9yKCks
IHN0eWxlLmNvbG9yU3BhY2UoKSk7Ci0gICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dC0+
YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250
ZXh0KCkuc2V0U2hhZG93KEludFNpemUocm91bmRUb0ludChzaGFkb3ctPngoKSksIHJvdW5kVG9J
bnQoc2hhZG93LT55KCkpKSwgc2hhZG93LT5yYWRpdXMoKSwgc2hhZG93LT5jb2xvcigpLCBzdHls
ZS5jb2xvclNwYWNlKCkpOworICAgICAgICAgICAgbV9wYWludEluZm8tPmNvbnRleHQoKS5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKDEpOwogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBF
bmRTaGFkb3dMYXllcjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0Nyw3ICsxNDgsNyBAQCB2b2lk
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIFBhaQogICAgICAgICAgICAgcmVmZXJlbmNlQm94LnNldEhlaWdodCh2
aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlZmVy
ZW5jZUJveCA9IHJlbmRlcmVyLm9iamVjdEJvdW5kaW5nQm94KCk7Ci0gICAgICAgIG1fcGFpbnRJ
bmZvLT5jb250ZXh0LT5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZl
cmVuY2VCb3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpKTsKKyAgICAgICAgbV9wYWludEluZm8tPmNv
bnRleHQoKS5jbGlwUGF0aChjbGlwUGF0aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VC
b3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpKTsKICAgICB9CiAKICAgICBhdXRvKiByZXNvdXJjZXMg
PSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIoKm1fcmVuZGVy
ZXIpOwpAQCAtMTYxLDI2ICsxNjIsMzUgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVw
YXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkKIAogICAg
IGlmICghaXNSZW5kZXJpbmdNYXNrKSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlciogbWFza2VyID0gcmVzb3VyY2VzLT5tYXNrZXIoKSkgewotICAgICAgICAgICAgaWYgKCFt
YXNrZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBtX3BhaW50SW5mby0+Y29u
dGV4dCwgQXBwbHlUb0RlZmF1bHRNb2RlKSkKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dFB0ciA9ICZtX3BhaW50SW5mby0+Y29udGV4dCgpOworICAgICAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtYXNrZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0
UHRyLCBBcHBseVRvRGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENv
bnRleHQoKmNvbnRleHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyKiBjbGlwcGVyID0gcmVzb3VyY2VzLT5jbGlwcGVyKCk7CiAgICAgaWYgKCFjbGlwUGF0
aE9wZXJhdGlvbiAmJiBjbGlwcGVyKSB7Ci0gICAgICAgIGlmICghY2xpcHBlci0+YXBwbHlSZXNv
dXJjZSgqbV9yZW5kZXJlciwgc3R5bGUsIG1fcGFpbnRJbmZvLT5jb250ZXh0LCBBcHBseVRvRGVm
YXVsdE1vZGUpKQorICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAmbV9wYWlu
dEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBjbGlwcGVyLT5hcHBseVJl
c291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgY29udGV4dFB0ciwgQXBwbHlUb0RlZmF1bHRNb2Rl
KTsKKyAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRleHRQdHIpOworICAgICAg
ICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWlz
UmVuZGVyaW5nTWFzaykgewogICAgICAgICBtX2ZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCk7
CiAgICAgICAgIGlmIChtX2ZpbHRlcikgewotICAgICAgICAgICAgbV9zYXZlZENvbnRleHQgPSBt
X3BhaW50SW5mby0+Y29udGV4dDsKKyAgICAgICAgICAgIG1fc2F2ZWRDb250ZXh0ID0gJm1fcGFp
bnRJbmZvLT5jb250ZXh0KCk7CiAgICAgICAgICAgICBtX3NhdmVkUGFpbnRSZWN0ID0gbV9wYWlu
dEluZm8tPnJlY3Q7CiAgICAgICAgICAgICAvLyBSZXR1cm4gd2l0aCBmYWxzZSBoZXJlIG1heSBt
ZWFuIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkcmF3IHRoZSBjb250ZW50CiAgICAgICAgICAgICAv
LyAoYmVjYXVzZSBpdCB3YXMgZWl0aGVyIGRyYXduIGJlZm9yZSBvciBlbXB0eSkgYnV0IHdlIHN0
aWxsIG5lZWQgdG8gYXBwbHkgdGhlIGZpbHRlci4KICAgICAgICAgICAgIG1fcmVuZGVyaW5nRmxh
Z3MgfD0gRW5kRmlsdGVyTGF5ZXI7Ci0gICAgICAgICAgICBpZiAoIW1fZmlsdGVyLT5hcHBseVJl
c291cmNlKCptX3JlbmRlcmVyLCBzdHlsZSwgbV9wYWludEluZm8tPmNvbnRleHQsIEFwcGx5VG9E
ZWZhdWx0TW9kZSkpCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHRQdHIgPSAm
bV9wYWludEluZm8tPmNvbnRleHQoKTsKKyAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gbV9maWx0
ZXItPmFwcGx5UmVzb3VyY2UoKm1fcmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0UHRyLCBBcHBseVRv
RGVmYXVsdE1vZGUpOworICAgICAgICAgICAgbV9wYWludEluZm8tPnNldENvbnRleHQoKmNvbnRl
eHRQdHIpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICAvLyBTaW5jZSB3ZSdyZSBjYWNoaW5nIHRoZSByZXN1bHRpbmcgYml0
bWFwIGFuZCBkbyBub3QgaW52YWxpZGF0ZSBpdCBvbiByZXBhaW50IHJlY3QKQEAgLTI1NCw5ICsy
NjQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UgogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CiAgICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKS50cmFuc2xhdGUoLXBhaW50UmVjdC5s
b2NhdGlvbigpKS5tdWx0aXBseShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKLSAgICBHcmFwaGljc0Nv
bnRleHQqIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgQVNTRVJU
KGltYWdlQ29udGV4dCk7Ci0gICAgaW1hZ2VDb250ZXh0LT5jb25jYXRDVE0odHJhbnNmb3JtKTsK
KyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0
KCk7CisgICAgaW1hZ2VDb250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogCiAgICAgcmV0dXJu
IGltYWdlQnVmZmVyOwogfQpAQCAtMjc0LDExICsyODMsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFIKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIEdyYXBoaWNzQ29udGV4dCogaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQo
KTsKLSAgICBBU1NFUlQoaW1hZ2VDb250ZXh0KTsKKyAgICBHcmFwaGljc0NvbnRleHQmIGltYWdl
Q29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAKICAgICAvLyBDb21wZW5zYXRlIHJv
dW5kaW5nIGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9h
dGluZy1wb2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4K
LSAgICBpbWFnZUNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRTaXplLndpZHRoKCkg
LyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkgLyB0YXJnZXRSZWN0
LmhlaWdodCgpKSk7CisgICAgaW1hZ2VDb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSh1bmNsYW1wZWRT
aXplLndpZHRoKCkgLyB0YXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZFNpemUuaGVpZ2h0KCkg
LyB0YXJnZXRSZWN0LmhlaWdodCgpKSk7CiAKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CkBA
IC0yODYsNyArMjk0LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFIKIHZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqIGltYWdl
LCBSZW5kZXJFbGVtZW50JiBpdGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1YnRyZWVDb250
ZW50VHJhbnNmb3JtYXRpb24pCiB7CiAgICAgQVNTRVJUKGltYWdlKTsKLSAgICBBU1NFUlQoaW1h
Z2UtPmNvbnRleHQoKSk7CiAKICAgICBQYWludEluZm8gaW5mbyhpbWFnZS0+Y29udGV4dCgpLCBM
YXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKSwgUGFpbnRQaGFzZUZvcmVncm91bmQsIFBhaW50QmVo
YXZpb3JOb3JtYWwpOwogCkBAIC0zMDAsMTggKzMwNywxNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OnJlbmRlclN1YnRyZWVUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyKiBpbWFnZSwgUmVu
ZGVyRQogICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0
aW9uOwogfQogCi12b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikKK3ZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBi
b29sIHNhZmVUb0NsZWFyKQogewotICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoaW1h
Z2VCdWZmZXIpOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVjdCA9IGNhbGN1bGF0
ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAv
LyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGlu
YXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28g
dGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRl
IGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LT5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKLSAgICBjb250ZXh0LT5jbGlwVG9JbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKLSAgICBjb250ZXh0LT5jb25j
YXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIGNvbnRleHQuY29uY2F0Q1RNKGFic29sdXRl
VHJhbnNmb3JtLmludmVyc2UoKSk7CisgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcihpbWFn
ZUJ1ZmZlci5nZXQoKSwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKKyAgICBjb250ZXh0LmNvbmNhdENU
TShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKICAgICAvLyBXaGVuIG5lc3RpbmcgcmVzb3VyY2VzLCB3
aXRoIG9iamVjdEJvdW5kaW5nQm94IGFzIGNvbnRlbnQgdW5pdCB0eXBlcywgdGhlcmUncyBubyB1
c2UgaW4gY2FjaGluZyB0aGUKICAgICAvLyByZXN1bHRpbmcgaW1hZ2UgYnVmZmVyIGFzIHRoZSBw
YXJlbnQgcmVzb3VyY2UgYWxyZWFkeSBjYWNoZXMgdGhlIHJlc3VsdC4KQEAgLTMzNSw3ICszNDEs
NyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gSW52YWxpZGF0ZSBhbiBleGlz
dGluZyBidWZmZXIgaWYgdGhlIHNjYWxlIGlzIG5vdCBjb3JyZWN0LgogICAgIGlmIChpbWFnZUJ1
ZmZlcikgewotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8t
PmNvbnRleHQtPmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNl
U2NhbGUpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9wYWludEluZm8t
PmNvbnRleHQoKS5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmlj
ZVNjYWxlKTsKICAgICAgICAgSW50U2l6ZSBleHBhbmRlZEJvdW5kaW5nQm94ID0gZXhwYW5kZWRJ
bnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSk7CiAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGNlaWwoZXhwYW5kZWRCb3VuZGluZ0JveC53aWR0aCgpICogdHJhbnNm
b3JtLnhTY2FsZSgpKSksIHN0YXRpY19jYXN0PGludD4oY2VpbChleHBhbmRlZEJvdW5kaW5nQm94
LmhlaWdodCgpICogdHJhbnNmb3JtLnlTY2FsZSgpKSkpOwogICAgICAgICBpZiAoYnVmZmVyU2l6
ZSAhPSBpbWFnZUJ1ZmZlci0+aW50ZXJuYWxTaXplKCkpCkBAIC0zNDQsMTcgKzM1MCwxNyBAQCBi
b29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiYgaW1hZ2VCdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQg
cGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0g
ICAgICAgIGlmICgoaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dC0+Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1ZSkp
KSB7Ci0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQqIGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4
dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgICAgICAgICBidWZmZXJlZFJlbmRlcmlu
Z0NvbnRleHQtPnRyYW5zbGF0ZSgtYm91bmRpbmdCb3gueCgpLCAtYm91bmRpbmdCb3gueSgpKTsK
KyAgICAgICAgaWYgKChpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgdHJ1
ZSkpKSB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQmIGJ1ZmZlcmVkUmVuZGVyaW5nQ29u
dGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgICAgICBidWZmZXJlZFJlbmRl
cmluZ0NvbnRleHQudHJhbnNsYXRlKC1ib3VuZGluZ0JveC54KCksIC1ib3VuZGluZ0JveC55KCkp
OwogICAgICAgICAgICAgUGFpbnRJbmZvIGJ1ZmZlcmVkSW5mbygqbV9wYWludEluZm8pOwotICAg
ICAgICAgICAgYnVmZmVyZWRJbmZvLmNvbnRleHQgPSBidWZmZXJlZFJlbmRlcmluZ0NvbnRleHQ7
CisgICAgICAgICAgICBidWZmZXJlZEluZm8uc2V0Q29udGV4dChidWZmZXJlZFJlbmRlcmluZ0Nv
bnRleHQpOwogICAgICAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRlcmVy
KS5wYWludEZvcmVncm91bmQoYnVmZmVyZWRJbmZvKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgbV9wYWludEluZm8tPmNvbnRleHQtPmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgYm91
bmRpbmdCb3gpOworICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBib3VuZGluZ0JveCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggOWEyM2MyNTEyM2I4N2VjMjljZmRhMGNlYzdlYzI0
NTY1OTg0M2Q4YS4uNDYzODRjNDhlYTBmOGFlNGE4OGI2NWMxMjdlMThkY2YxZmMzY2ZjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSk7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
ZmZlciosIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBzdGF0
aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKKyAgICBz
dGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAog
ICAgIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29u
c3QgUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVU
cmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmpl
Y3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElu
bGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guY3BwCmluZGV4IGQxYTc4Mzg5YTE1NjRjNDRhZTEyNmQ0ZDFlYWExZTA2NDk3ZWNiYjMuLjhi
ODAxNGI2MDEzZmZjYmMwYmQwMDQ2MzFhODNkNTA2ZWYwOGM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcApAQCAtNDksNyArNDks
NyBAQCBSZW5kZXJTVkdUZXh0JiBTVkdSb290SW5saW5lQm94OjpyZW5kZXJTVkdUZXh0KCkKIHZv
aWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkKIHsKICAgICBB
U1NFUlQocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKTsKLSAgICBBU1NFUlQoIXBhaW50SW5mby5j
b250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpOworICAgIEFTU0VSVCghcGFpbnRJbmZvLmNvbnRl
eHQoKS5wYWludGluZ0Rpc2FibGVkKCkpOwogCiAgICAgYm9vbCBpc1ByaW50aW5nID0gcmVuZGVy
U1ZHVGV4dCgpLmRvY3VtZW50KCkucHJpbnRpbmcoKTsKICAgICBib29sIGhhc1NlbGVjdGlvbiA9
ICFpc1ByaW50aW5nICYmIHNlbGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rp
b25Ob25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBkZDNmMjg1NTdlMDYyNzM4NmQwNWNi
ZjNlYzBmNmY5N2Y1NTY3ZTVhLi5mZDY5ZmE0ODkyOTViMDJkYjAwY2JmNWRiZTM3MDI1YzYxYzgw
NGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjYyLDEzICsyNjIsMTMgQEAgc3RkOjp1
bmlxdWVfcHRyPEdseXBoVG9QYXRoVHJhbnNsYXRvcj4gU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUdseXBoVG8KICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTVkdHbHlwaFRv
UGF0aFRyYW5zbGF0b3I+KHRleHRSdW4sIGdseXBoQnVmZmVyLCBwb2ludCwgKnN2Z0ZvbnREYXRh
LCAqZm9udEVsZW1lbnQsIGZyb20sIG51bUdseXBocywgc2NhbGUsIGlzVmVydGljYWxUZXh0KTsK
IH0KIAotdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0dseXBocyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZvbnQqIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
JiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KSBjb25zdAordm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0ds
eXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEds
eXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIGF1dG8gYWN0aXZlUGFpbnRpbmdSZXNvdXJj
ZSA9IHRoaXMtPmFjdGl2ZVBhaW50aW5nUmVzb3VyY2UoKTsKICAgICBpZiAoIWFjdGl2ZVBhaW50
aW5nUmVzb3VyY2UpIHsKICAgICAgICAgLy8gVE9ETzogV2UncmUgb25seSBzdXBwb3J0aW5nIHNp
bXBsZSBmaWxsZWQgSFRNTCB0ZXh0IHNvIGZhci4KICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yKiBzb2xpZFBhaW50aW5nUmVzb3VyY2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c2hh
cmVkU29saWRQYWludGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIHNvbGlkUGFpbnRpbmdSZXNvdXJj
ZS0+c2V0Q29sb3IoY29udGV4dC0+ZmlsbENvbG9yKCkpOworICAgICAgICBzb2xpZFBhaW50aW5n
UmVzb3VyY2UtPnNldENvbG9yKGNvbnRleHQuZmlsbENvbG9yKCkpOwogICAgICAgICBhY3RpdmVQ
YWludGluZ1Jlc291cmNlID0gc29saWRQYWludGluZ1Jlc291cmNlOwogICAgIH0KIApAQCAtMjc3
LDE1ICsyNzcsMTYgQEAgdm9pZCBTVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dDo6ZHJhd1NWR0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKIAogICAgIEFTU0VSVChhY3Rp
dmVQYWludGluZ1Jlc291cmNlKTsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlTW9kZSByZXNvdXJj
ZU1vZGUgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFw
cGx5VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOwotICAgIGZvciAoYXV0byB0cmFuc2xh
dG9yID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKCpmb250LCBudWxscHRyLCBnbHlwaEJ1
ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7IHRyYW5zbGF0b3ItPmNvbnRhaW5zTW9yZVBh
dGhzKCk7IHRyYW5zbGF0b3ItPmFkdmFuY2UoKSkgeworICAgIEdyYXBoaWNzQ29udGV4dCogdXNl
ZENvbnRleHQgPSAmY29udGV4dDsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZU1vZGUgcmVzb3VyY2VN
b2RlID0gY29udGV4dC50ZXh0RHJhd2luZ01vZGUoKSA9PSBUZXh0TW9kZVN0cm9rZSA/IEFwcGx5
VG9TdHJva2VNb2RlIDogQXBwbHlUb0ZpbGxNb2RlOworICAgIGZvciAoYXV0byB0cmFuc2xhdG9y
ID0gY3JlYXRlR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGZvbnQsIG51bGxwdHIsIGdseXBoQnVmZmVy
LCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsgdHJhbnNsYXRvci0+Y29udGFpbnNNb3JlUGF0aHMo
KTsgdHJhbnNsYXRvci0+YWR2YW5jZSgpKSB7CiAgICAgICAgIFBhdGggZ2x5cGhQYXRoID0gdHJh
bnNsYXRvci0+cGF0aCgpOwotICAgICAgICBpZiAoYWN0aXZlUGFpbnRpbmdSZXNvdXJjZS0+YXBw
bHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHN0eWxlLCBjb250ZXh0LCByZXNvdXJjZU1vZGUp
KSB7Ci0gICAgICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MgPSBjb250ZXh0LT5zdHJva2VU
aGlja25lc3MoKTsKKyAgICAgICAgaWYgKGFjdGl2ZVBhaW50aW5nUmVzb3VyY2UtPmFwcGx5UmVz
b3VyY2UoZWxlbWVudFJlbmRlcmVyLCBzdHlsZSwgdXNlZENvbnRleHQsIHJlc291cmNlTW9kZSkp
IHsKKyAgICAgICAgICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGNvbnRleHQuc3Ryb2tlVGhp
Y2tuZXNzKCk7CiAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4ocmVuZGVy
ZXIoKSkpCi0gICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKHN0cm9r
ZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KHJlbmRlcmVyKCkpLnNj
YWxpbmdGYWN0b3IoKSk7Ci0gICAgICAgICAgICBhY3RpdmVQYWludGluZ1Jlc291cmNlLT5wb3N0
QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIGNvbnRleHQsIHJlc291cmNlTW9kZSwgJmds
eXBoUGF0aCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25l
c3Moc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgICAgICAgICB1c2VkQ29udGV4dC0+c2V0U3Ry
b2tlVGhpY2tuZXNzKHN0cm9rZVRoaWNrbmVzcyAqIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRl
eHQ+KHJlbmRlcmVyKCkpLnNjYWxpbmdGYWN0b3IoKSk7CisgICAgICAgICAgICBhY3RpdmVQYWlu
dGluZ1Jlc291cmNlLT5wb3N0QXBwbHlSZXNvdXJjZShlbGVtZW50UmVuZGVyZXIsIHVzZWRDb250
ZXh0LCByZXNvdXJjZU1vZGUsICZnbHlwaFBhdGgsIG51bGxwdHIpOworICAgICAgICAgICAgdXNl
ZENvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcyhzdHJva2VUaGlja25lc3MpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDUwMWI5YzhmZjEwNTI0YTQ5OGE2ZmU3
NzdjYjY5OTk3NzQxZWRjMDQuLjlkODVmYmU3YmFhOWVkNDk3NTE4MjY4NmJlM2IxZTkxN2EwNjQ5
NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJl
bmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRSdW5SZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0QWN0aXZlUGFpbnRpbmdSZXNvdXJjZShSZW5kZXJTVkdSZXNvdXJjZSogb2JqZWN0KSB7
IG1fYWN0aXZlUGFpbnRpbmdSZXNvdXJjZSA9IG9iamVjdDsgfQogCiAgICAgdmlydHVhbCBHbHlw
aERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgV2lkdGhJdGVy
YXRvciYsIFVDaGFyMzIgY2hhcmFjdGVyLCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0
ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoLCBTdHJpbmcmIG5vcm1hbGl6ZWRTcGFjZXNTdHJp
bmdDYWNoZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdTVkdHbHlwaHMoR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgRm9udCosIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGlu
dCB0bywgY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGZsb2F0IGZsb2F0V2lkdGhVc2luZ1NWR0ZvbnQoY29uc3QgRm9u
dENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgaW50JiBjaGFyc0NvbnN1bWVkLCBTdHJpbmcmIGds
eXBoTmFtZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGFwcGx5U1ZHS2Vybmlu
Zyhjb25zdCBGb250KiwgV2lkdGhJdGVyYXRvciYsIEdseXBoQnVmZmVyKiwgaW50IGZyb20pIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAppbmRleCA5NjFlMTk4OWU1NzJiYmI3MmE2ZTNlZTliYWEyNDA4YTFlNjU4NGI4Li4wODE1
M2MxYTkzZmEzNmYyNWUzMDY5Njk2MTg3NTMxZmJhMGM1OTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBJbnRTaXplIFNWR0lt
YWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgzMDAsIDE1MCk7
CiB9CiAKLXZvaWQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LAordm9pZCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9h
dCB6b29tLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewogICAgIGlmICghbV9wYWdlKQpAQCAtMTg0LDE0
ICsxODQsMTQgQEAgUGFzc05hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFp
bmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAordm9pZCBTVkdJ
bWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJl
Y3Quc2NhbGUoem9vbSk7CiAKICAgICAvLyBUaGUgSW1hZ2VCdWZmZXIgc2l6ZSBuZWVkcyB0byBi
ZSBzY2FsZWQgdG8gbWF0Y2ggdGhlIGZpbmFsIHJlc29sdXRpb24uCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRyYW5zZm9ybSA9IGNvbnRleHQtPmdldENUTSgpOworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTSgpOwogICAgIEZsb2F0U2l6ZSBpbWFnZUJ1ZmZlclNj
YWxlID0gRmxvYXRTaXplKHRyYW5zZm9ybS54U2NhbGUoKSwgdHJhbnNmb3JtLnlTY2FsZSgpKTsK
ICAgICBBU1NFUlQoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpKTsKICAgICBBU1NFUlQoaW1hZ2VC
dWZmZXJTY2FsZS5oZWlnaHQoKSk7CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFNpemUKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4K
ICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCks
IGNvbnRhaW5lclNpemUsIHpvb20sIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVj
dCwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsKTsKLSAgICBpZiAoY29udGV4dC0+ZHJhd0x1bWluYW5jZU1hc2soKSkKKyAgICBpZiAoY29u
dGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBidWZmZXItPmNvcHlJbWFn
ZShEb250Q29weUJhY2tpbmdTdG9yZSwgVW5zY2FsZWQpOwpAQCAtMjE3LDExICsyMTcsMTEgQEAg
dm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBBZmZpbmVUcmFuc2Zvcm0gdW5zY2FsZWRQYXR0
ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pOwogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5z
Zm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJT
Y2FsZS5oZWlnaHQoKSk7CiAKLSAgICBjb250ZXh0LT5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CisgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAgICAgaW1hZ2Ut
PmRyYXdQYXR0ZXJuKGNvbnRleHQsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUp
OwogfQogCi12b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbG9yU3Bh
Y2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCit2b2lkIFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pCiB7CiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOSwxNSArMjI5LDE1IEBAIHZvaWQg
U1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CiAg
ICAgQVNTRVJUKHZpZXcpOwogCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKCpjb250ZXh0KTsKLSAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7Ci0gICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KGRz
dFJlY3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSk7CisgICAgY29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwogCi0g
ICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LT5hbHBoYSgpOworICAgIGZsb2F0IGFscGhhID0gY29u
dGV4dC5hbHBoYSgpOwogICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxh
eWVyID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0g
QmxlbmRNb2RlTm9ybWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJl
c1RyYW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoYWxwaGEpOwotICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKKyAgICAgICAgY29udGV4dC5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICB9CiAK
ICAgICBGbG9hdFNpemUgc2NhbGUoZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBk
c3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CkBAIC0yNDcsOCArMjQ3LDggQEAg
dm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwKICAgICBGbG9hdFNpemUgdG9wTGVmdE9mZnNldChzcmNS
ZWN0LmxvY2F0aW9uKCkueCgpICogc2NhbGUud2lkdGgoKSwgc3JjUmVjdC5sb2NhdGlvbigpLnko
KSAqIHNjYWxlLmhlaWdodCgpKTsKICAgICBGbG9hdFBvaW50IGRlc3RPZmZzZXQgPSBkc3RSZWN0
LmxvY2F0aW9uKCkgLSB0b3BMZWZ0T2Zmc2V0OwogCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKGRl
c3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7Ci0gICAgY29udGV4dC0+c2NhbGUoc2NhbGUp
OworICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RPZmZzZXQueCgpLCBkZXN0T2Zmc2V0LnkoKSk7
CisgICAgY29udGV4dC5zY2FsZShzY2FsZSk7CiAKICAgICB2aWV3LT5yZXNpemUoY29udGFpbmVy
U2l6ZSgpKTsKIApAQCAtMjU4LDEwICsyNTgsMTAgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmwK
ICAgICBpZiAodmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAK
LSAgICB2aWV3LT5wYWludChjb250ZXh0LCBpbnRlcnNlY3Rpb24oY29udGV4dC0+Y2xpcEJvdW5k
cygpLCBlbmNsb3NpbmdJbnRSZWN0KHNyY1JlY3QpKSk7CisgICAgdmlldy0+cGFpbnQoY29udGV4
dCwgaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBlbmNsb3NpbmdJbnRSZWN0KHNy
Y1JlY3QpKSk7CiAKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVy
KQotICAgICAgICBjb250ZXh0LT5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgICAgICBjb250
ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICBzdGF0ZVNhdmVyLnJlc3RvcmUoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA2ZGY1YTFhNGU4ZTJi
NTQ0NDIxNWI3NzVlMTQ1MDBmNWNiZmE0NzA0Li5mYWU4ZDBjODNlOTI0YTY3NGYwMTEyMTZiODJl
NWViM2JmMjA0MTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAt
OTEsOSArOTEsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93
blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU1ZHSW1hZ2Uo
SW1hZ2VPYnNlcnZlciYsIGNvbnN0IFVSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dG9SZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRTaXplLCBmbG9h
dCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFj
ZSwKKyAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25E
ZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSwgZmxvYXQsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRTaXplLCBmbG9hdCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYsIENvbG9yU3BhY2UsCiAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwogCiAgICAgU1ZHU1ZHRWxlbWVudCog
cm9vdEVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IDEwNTM1NDgxODcyOWY3ODU4NGZmYTM3
ZWViYTViMTMwMTEwZTY1OTguLjE5YzQ3MWIyYzg5MjQwYzM1ZGNmNmVkOWJmNjE2ZTM4ZjYxNTY3
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6
ZShzY2FsZWRDb250YWluZXJTaXplKSk7CiB9CiAKLXZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
Cit2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKQogewogICAg
IG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX3pv
b20sIGRzdFJlY3QsIHNyY1JlY3QsIGNvbG9yU3BhY2UsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OwogfQogCi12b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAordm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQogewogICAgIG1faW1hZ2UtPnNldFNwYWNlU2l6ZShzcGFjZVNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4
IGE0ZWVhYTlmNzYzYjZmM2U2MGMwZjNjMWE5NzA2M2UzYmFiMDJiMjAuLjk3Njk1ZmRhOGY2Yjll
YzBkYzdiODk5ZjIwOTVkOWZhMDM1MTYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Niw5ICs1Niw5IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2lj
V2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIENvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Q29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0
IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICB2aXJ0dWFsIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAKaW5kZXggMTU2NzQ0MzIyYjg0ODhiZjM4ZWE0YzNlZGNlYjA2MjhiYmU1MzgwMy4uZjA3
MjUxOGY0NDE3NTExYzc5MTM5MGU5OTYyN2Y1YjVkMTdlNDhiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBpZiAo
cmVuZGVyZXIpIHsKICAgICAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5z
Zm9ybSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCk7Ci0gICAgICAgIHJlc3VsdEltYWdl
LT5jb250ZXh0KCktPmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgICAgIHJlc3Vs
dEltYWdlLT5jb250ZXh0KCkuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgICAg
ICBTVkdFbGVtZW50KiBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVy
LT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3Ro
cygpKSB7CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICAgICAgLy8gSWYgd2UncmUgcmVmZXJlbmNpbmcgYW4gZWxlbWVudCB3
aXRoIHBlcmNlbnRhZ2UgdW5pdHMsIGVnLiA8cmVjdCB3aXRoPSIzMCUiPiB0aG9zZSB2YWx1ZXMg
d2VyZSByZXNvbHZlZCBhZ2FpbnN0IHRoZSB2aWV3cG9ydC4KICAgICAgICAgICAgIC8vIEJ1aWxk
IHVwIGEgdHJhbnNmb3JtYXRpb24gdGhhdCBtYXBzIGZyb20gdGhlIHZpZXdwb3J0IHNwYWNlIHRv
IHRoZSBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbi4KICAgICAgICAgICAgIGlmIChsZW5ndGhD
b250ZXh0LmRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSkpCi0gICAgICAgICAgICAgICAg
cmVzdWx0SW1hZ2UtPmNvbnRleHQoKS0+Y29uY2F0Q1RNKG1ha2VNYXBCZXR3ZWVuUmVjdHMoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlld3BvcnRTaXplKSwgZGVzdFJlY3QpKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRJbWFnZS0+Y29udGV4dCgpLmNvbmNhdENUTShtYWtlTWFwQmV0d2VlblJl
Y3RzKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZXdwb3J0U2l6ZSksIGRlc3RSZWN0KSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVudFRyYW5zZm9ybWF0aW9u
OwpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkt
PmRyYXdJbWFnZShtX2ltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkZXN0UmVjdCwg
c3JjUmVjdCk7CisgICAgcmVzdWx0SW1hZ2UtPmNvbnRleHQoKS5kcmF3SW1hZ2UobV9pbWFnZS5n
ZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZGVzdFJlY3QsIHNyY1JlY3QpOwogfQogCiB2b2lk
IEZFSW1hZ2U6OmR1bXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW0KaW5kZXggNTEyYWY0MTk0Y2IyNTEzODE4ZDkxMTIzNDkxZjZkMjBlNDhhZjhi
NC4uMDAyNWFlMjkzMDIxN2EyYWU2NjJmZjA0ZDZhMGI2NGM5YjRiZGRhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDIsNyArMTAy
LDcgQEAgLSAodm9pZClfd2ViX2RyYXdBdFBvaW50OihOU1BvaW50KXBvaW50IGZvbnQ6KE5TRm9u
dCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9yICoKICAgICAgICAgW1t0ZXh0Q29sb3IgY29sb3JV
c2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVkOiZyZWQgZ3Jl
ZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1LCBibHVlICog
MjU1LCBhbHBoYSAqIDI1NSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCi0gICAgICAgIHdlYkNv
cmVGb250LmRyYXdUZXh0KCZncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54
LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKKyAgICAgICAgd2ViQ29y
ZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwg
KGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAKICAgICAgICAgaWYgKCFm
bGlwcGVkKQogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCmluZGV4IDEyNzgwMjBiODVjNThiMmViM2E4NzhjM2IwM2IzMWQzZmU5
ZmQzZGEuLmNmY2NkM2NkNjQ5MjY1MjE5NzZjNmJmMTg1NmI2ZThmYjQ1M2RkMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50Lm1tCkBAIC00ODIsNyArNDgyLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRl
eHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0KICAg
ICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZpb3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZp
b3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVj
dGlvbk9ubHkpOwogCi0gICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgtdG9GbG9hdFNp
emUocmVjdC5sb2NhdGlvbigpKSk7CisgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10
b0Zsb2F0U2l6ZShyZWN0LmxvY2F0aW9uKCkpKTsKICAgICBmcmFtZVZpZXctPnBhaW50Q29udGVu
dHMoYnVmZmVyLT5jb250ZXh0KCksIHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKIAogICAgIGZyYW1l
Vmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDQxZDAwODE2MzM3MDI3NGQxZjU1
YzU5YTY1NzA4NmNmOTU0YmZiYzQuLjBiMzIxMjA3YzMyM2U0ZGEwMDkzMGU5YzgwNGUwZDIzOGE5
NGNkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNjQ0LDkgKzY0
NCw5IEBAIC0gKHZvaWQpX2RyYXdSZWN0OihOU1JlY3QpcmVjdCBjb250ZW50c09ubHk6KEJPT0wp
Y29udGVudHNPbmx5CiAgICAgfQogICAgIAogICAgIGlmIChjb250ZW50c09ubHkpCi0gICAgICAg
IHZpZXctPnBhaW50Q29udGVudHMoJmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOwor
ICAgICAgICB2aWV3LT5wYWludENvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVj
dCkpOwogICAgIGVsc2UKLSAgICAgICAgdmlldy0+cGFpbnQoJmNvbnRleHQsIGVuY2xvc2luZ0lu
dFJlY3QocmVjdCkpOworICAgICAgICB2aWV3LT5wYWludChjb250ZXh0LCBlbmNsb3NpbmdJbnRS
ZWN0KHJlY3QpKTsKIAogICAgIGlmIChzaG91bGRGbGF0dGVuKQogICAgICAgICB2aWV3LT5zZXRQ
YWludEJlaGF2aW9yKG9sZEJlaGF2aW9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBjNGMzNjE5OWVkOWU5
ZmRjNzY2ZWZlMDg0NTczNzljNzI4NWViMzJlLi4xNmMzYTQ3OWE1MjNlMWJiYzRmYTc3NWVhOTA5
ZGIwOGQxMGMyYzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OnBhaW50KCkKICAgICBpZiAobV9wbHVnaW4tPmlzVHJhbnNwYXJl
bnQoKSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAot
ICAgIG1fcGx1Z2luLT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0KCksIGRpcnR5UmVjdCk7Cisg
ICAgbV9wbHVnaW4tPnBhaW50KCpncmFwaGljc0NvbnRleHQsIGRpcnR5UmVjdCk7CiAKICAgICBt
X2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJveHk6OlVw
ZGF0ZShkaXJ0eVJlY3QpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKaW5kZXggMzc4
YmVlNzIyMDQ5NjEwODUyZDYzMTAzOTAzNDgyOTUwMzA1ZTdiNy4uYTZiMmEyODNkZmIyMzc4ZThl
YjQxNmVmNWNlYTIwMjAwZWIwMWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2NhaXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQg
U2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNj
YWxlRmFjdG9yLCBjb25zdCBJCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KGRzdFBvaW50LCBzcmNS
ZWN0LnNpemUoKSk7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3RTY2FsZWQoc3JjUmVjdCk7CiAgICAg
c3JjUmVjdFNjYWxlZC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3RTY2FsZWQsICZjb250ZXh0KTsKKyAgICBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5k
cmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdFNjYWxl
ZCwgY29udGV4dCk7CiB9CiAKIFBhc3NSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZUNhaXJvU3VyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCBmNzQyNTU5ZTNlZDBiNWYyNmZiMzAxOTZhMjUxZGRl
NWVjZjI0NjcwLi4zOTFlYWMxYjQyN2EwYjVkYzNmOTU0NGM5YzA5YzNiYmVjODYyZWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9Jbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKQEAgLTE2MSw3
ICsxNjEsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbWFnZT4gaW1hZ2VGb3JSZWN0KEZyYW1l
VmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiByZQogCiAgICAgUGFpbnRCZWhhdmlvciBv
bGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7CiAgICAgZnJhbWVW
aWV3LT5zZXRQYWludEJlaGF2aW9yKHBhaW50QmVoYXZpb3IpOwotICAgIGZyYW1lVmlldy0+cGFp
bnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29udGV4dC5nZXQoKSwgcmVjdCwgc2hvdWxk
UGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJh
bWVWaWV3LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dC5nZXQoKSwg
cmVjdCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRl
cyk7CiAgICAgZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKG9sZFBhaW50QmVoYXZpb3IpOwog
CiAgICAgcmV0dXJuIHNuYXBzaG90LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXggNTAxOTc3MGE5ZTQ2ZDBlYmY2NWM4NmVi
NGI3NmU0ZjZjMzJkZGQyZS4uNjVmYmU3M2I1ZmY3YmZiYTdlMjAyNDRmOGIyM2MyYTgxYmUyYzc1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9E
T00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAK
QEAgLTE0Myw3ICsxNDMsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZVJh
bmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcAogICAgIGZyYW1lVmll
dy0+c2V0UGFpbnRCZWhhdmlvcihwYWludEJlaGF2aW9yKTsKICAgICBvd25lckRvY3VtZW50LnVw
ZGF0ZUxheW91dCgpOwogCi0gICAgZnJhbWVWaWV3LT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0
KCksIHBhaW50UmVjdCk7CisgICAgZnJhbWVWaWV3LT5wYWludCgqZ3JhcGhpY3NDb250ZXh0LCBw
YWludFJlY3QpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRCZWhhdmlvcihvbGRQYWludEJlaGF2
aW9yKTsKIAogICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24ob2xkU2VsZWN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDk5ZjkxMjcyN2QzNTc2ODMxNjc1MmNh
NTQ3NzZlZGI4ZjQ1M2UzYTUuLjMzYjkxM2E5ZmJkOTY3MzhmYTU4Y2Y3NWQ1MGExNTEyNzRkMGE1
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtNzQ0LDcgKzc0NCw3IEBAIHZvaWQg
TmV0c2NhcGVQbHVnaW46OmRlc3Ryb3koKQogICAgIG1fdGltZXJzLmNsZWFyKCk7CiB9CiAgICAg
Ci12b2lkIE5ldHNjYXBlUGx1Z2luOjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBhaW50KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEFT
U0VSVChtX2lzU3RhcnRlZCk7CiAgICAgCkBAIC03NjgsNyArNzY4LDcgQEAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gTmV0c2NhcGVQbHVnaW46OnNuYXBzaG90KCkKICAgICAvLyB3aGljaCB3ZSBj
dXJyZW50bHkgZG9uJ3QgaGF2ZSBpbml0aWF0ZWQgaW4gdGhlIHBsdWctaW4gcHJvY2Vzcy4KICAg
ICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoY29udGVudHNTY2FsZUZhY3RvcigpLCBjb250ZW50
c1NjYWxlRmFjdG9yKCkpKTsKIAotICAgIHBsYXRmb3JtUGFpbnQoY29udGV4dC5nZXQoKSwgSW50
UmVjdChJbnRQb2ludCgpLCBtX3BsdWdpblNpemUpLCB0cnVlKTsKKyAgICBwbGF0Zm9ybVBhaW50
KCpjb250ZXh0LCBJbnRSZWN0KEludFBvaW50KCksIG1fcGx1Z2luU2l6ZSksIHRydWUpOwogCiAg
ICAgcmV0dXJuIGJpdG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggZTQ2ODE0YTRh
ODVlMWNhNTQ0NGU5MWMxMjY2NjI0MTgxYTY1NzJiOS4uMjllMjJjOWNlZDY2ZTA3ZWZlOTU1YTVm
MWZmMzg2MGI5NzdiNTllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKQEAgLTE3Nyw3ICsxNzcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgcGxhdGZvcm1JbnZhbGlkYXRlKGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKTsKICAgICB2b2lkIHBsYXRmb3JtR2VvbWV0cnlEaWRDaGFuZ2UoKTsKICAgICB2
b2lkIHBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpOwotICAgIHZvaWQgcGxhdGZvcm1QYWlu
dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0
eVJlY3QsIGJvb2wgaXNTbmFwc2hvdCA9IGZhbHNlKTsKKyAgICB2b2lkIHBsYXRmb3JtUGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlS
ZWN0LCBib29sIGlzU25hcHNob3QgPSBmYWxzZSk7CiAKICAgICBib29sIHBsYXRmb3JtSGFuZGxl
TW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jik7CiAgICAgYm9vbCBwbGF0Zm9ybUhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gUGx1Z2luCiAgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3Qg
UGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk5v
bmUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luTm9uZS5jcHAKaW5kZXggMDJjZGEyNmZhYTE4MTczMDUyYTIwMDlmOGIyYzRkN2Nm
OGE2OGNmYS4uMGNkMzY4OGMzNjQ0Yjk3ZGU0ODJlY2EyNGZmN2M5ZDFmZWIzOTQwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luTm9uZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpbjo6cGxhdGZvcm1WaXNpYmlsaXR5RGlkQ2hhbmdlKCkKIHsKIH0KIAotdm9pZCBO
ZXRzY2FwZVBsdWdpbjo6cGxhdGZvcm1QYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiwgYm9vbCkKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYsIGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5N
YWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05l
dHNjYXBlUGx1Z2luTWFjLm1tCmluZGV4IDg0OGIzMzgyZTAyMGUyYzIyYTQwYWI1Y2M5MjZhNzBi
MmEzMDliZGIuLjZmNzUzMTkxYWY5OGVkYWUyYmYxYjUyNjJmZWI4Mjc0YTgyNGUxNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0
c2NhcGVQbHVnaW5NYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1hYy5tbQpAQCAtNDQ0LDkgKzQ0NCw5IEBAIHN0
YXRpYyBFdmVudE1vZGlmaWVycyBtb2RpZmllcnNGb3JFdmVudChjb25zdCBXZWJFdmVudCYgZXZl
bnQpCiAKICNlbmRpZgogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzU25h
cHNob3QpCit2b2lkIE5ldHNjYXBlUGx1Z2luOjpwbGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBib29sIGlzU25hcHNob3QpCiB7
Ci0gICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpOworICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpOwogCiAgICAgc3dpdGNoIChtX2V2ZW50TW9kZWwpIHsKICAgICAgICAgY2Fz
ZSBOUEV2ZW50TW9kZWxDb2NvYTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAppbmRleCA4YWRjYThhZWY4YTI2YWI5YjYzZTE5ZWI5MTZmOWZmYWE3ZjIzNzk0Li5lODU4
YjNmYjQwOTFmMTUwYjhmZjVhZmRhYjFiOWY2MTJkMTIwNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDEx
L05ldHNjYXBlUGx1Z2luWDExLmNwcApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnaW46OnBsYXRmb3JtVmlzaWJpbGl0eURpZENoYW5nZSgpCiAgICAgY29udHJvbGxlcigpLT53
aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKG1fZnJhbWVSZWN0SW5XaW5kb3dDb29yZGlu
YXRlcywgbV9jbGlwUmVjdCwgd2luZG93SUQpOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z2luOjpw
bGF0Zm9ybVBhaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0LCBib29sIC8qaXNTbmFwc2hvdCovKQordm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1QYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCwgYm9vbCAvKmlzU25hcHNob3QqLykKIHsKICAgICBpZiAobV9pc1dpbmRvd2VkKQogICAgICAg
ICByZXR1cm47CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cGxhdGZv
cm1QYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkgfHwgIW1fZHJhd2FibGUpCisgICAgaWYgKGNvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpIHx8
ICFtX2RyYXdhYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBYRXZlbnQgeGV2ZW50OwpAQCAt
MzE2LDcgKzMxNiw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OnBsYXRmb3JtUGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0CiAjaWYgUExBVEZPUk0oR1RL
KSB8fCAoUExBVEZPUk0oRUZMKSAmJiBVU0UoQ0FJUk8pKQogICAgIFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+IGRyYXdhYmxlU3VyZmFjZSA9IGFkb3B0UmVmKGNhaXJvX3hsaWJfc3VyZmFjZV9jcmVh
dGUobV9wbHVnaW5EaXNwbGF5LCBtX2RyYXdhYmxlLmdldCgpLAogICAgICAgICBzdGF0aWNfY2Fz
dDxOUFNldFdpbmRvd0NhbGxiYWNrU3RydWN0Kj4obV9ucFdpbmRvdy53c19pbmZvKS0+dmlzdWFs
LCBtX3BsdWdpblNpemUud2lkdGgoKSwgbV9wbHVnaW5TaXplLmhlaWdodCgpKSk7Ci0gICAgY2Fp
cm9fdCogY3IgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKKyAgICBjYWlyb190
KiBjciA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShj
cik7CiAKICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIGRyYXdhYmxlU3VyZmFjZS5n
ZXQoKSwgMCwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4uaAppbmRleCBhZGVmNmNiMzY5NjVmODA0MmQwY2MwMmFjMWZjZGE0N2ZjOTFm
MDY4Li40YzUyNTZkNWExY2FjZWYyMjk4NWU1NDZiODE5MWEwNDFmYTY5OGEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTEx
NSw4ICsxMTUsOCBAQCBwcml2YXRlOgogICAgIC8vIFBsdWdpbiBmdW5jdGlvbnMuCiAgICAgdmly
dHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVj
dEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kikgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDYxY2Y0ZmVhODFhMWM4NjE1Y2Zi
ZmQ4MjNmMGZiMDAwODY0ODZhNWUuLjExMWEyMjVjNzE5NzJjZWMwNWU2YmJjYmZkZjUxMjhlMWMw
NGMyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCkBAIC0xMTExLDkgKzExMTEsOSBAQCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJv
eSgpCiAgICAgW21fY29udGVudExheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKIH0KIAotdm9p
ZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCkKK3ZvaWQgUERGUGx1Z2luOjp1cGRhdGVDb250cm9sVGludHMoR3JhcGhpY3NDb250
ZXh0JiBncmFwaGljc0NvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC0+dXBk
YXRpbmdDb250cm9sVGludHMoKSk7CisgICAgQVNTRVJUKGdyYXBoaWNzQ29udGV4dC51cGRhdGlu
Z0NvbnRyb2xUaW50cygpKTsKIAogICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCiAgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwpAQCAtMTEzMiw3ICsxMTMy
LDcgQEAgdm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5
ZXIgKmxheWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICBpZiAobGF5ZXIgPT0gbV9zY3JvbGxD
b3JuZXJMYXllcikgewogICAgICAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QgPSB0aGlzLT5z
Y3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoLXNj
cm9sbENvcm5lclJlY3QueCgpLCAtc2Nyb2xsQ29ybmVyUmVjdC55KCkpOwotICAgICAgICBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS0+cGFpbnRTY3JvbGxDb3JuZXIoMCwgJmdyYXBoaWNzQ29udGV4
dCwgc2Nyb2xsQ29ybmVyUmVjdCk7CisgICAgICAgIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5w
YWludFNjcm9sbENvcm5lcihudWxscHRyLCBncmFwaGljc0NvbnRleHQsIHNjcm9sbENvcm5lclJl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAg
dm9pZCBQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5Db250ZXh0KENBTGF5ZXIgKmxh
eWVyLCBDR0NvbnRleHRSZWYgY29udGUKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGdyYXBo
aWNzQ29udGV4dC50cmFuc2xhdGUoLXNjcm9sbGJhci0+eCgpLCAtc2Nyb2xsYmFyLT55KCkpOwot
ICAgIHNjcm9sbGJhci0+cGFpbnQoJmdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLT5mcmFtZVJl
Y3QoKSk7CisgICAgc2Nyb2xsYmFyLT5wYWludChncmFwaGljc0NvbnRleHQsIHNjcm9sbGJhci0+
ZnJhbWVSZWN0KCkpOwogfQogCiBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBQREZQbHVnaW46OnNu
YXBzaG90KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAK
aW5kZXggZjZkMWMwNTQ3NDQyZjkzY2JhNzdkMGMxMTUwODI0YWZlNWI2MTJlNC4uMTU0OTNmODZh
MTczMGIwNzEzOGQ2YWY0MjQ3YzY0YjRkMjA5YzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFBsdWdp
bjo6ZGVzdHJveVBsdWdpbigpCiAgICAgbV9wbHVnaW5Db250cm9sbGVyID0gMDsKIH0KIAotdm9p
ZCBQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQqKQordm9pZCBQbHVn
aW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQmKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMTFjZjE0OTEzOGY4MGFm
NDgzZmMwMGMxNmUzMjliZWJjMDNlMGFlOC4uZjI3OWViYmNmNDU3OWE5OWQ2OGYwYTM3N2UyMThj
YTYzYjdiNjhlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aApAQCAtMTI2LDEwICsxMjYsMTAgQEAgcHVibGljOgogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWct
aW4gdG8gcGFpbnQgaXRzZWxmIGludG8gdGhlIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQuIFRoZSBw
YXNzZWQtaW4gY29udGV4dCBhbmQKICAgICAvLyBkaXJ0eSByZWN0IGFyZSBpbiB3aW5kb3cgY29v
cmRpbmF0ZXMuIFRoZSBjb250ZXh0IGlzIHNhdmVkL3Jlc3RvcmVkIGJ5IHRoZSBjYWxsZXIuCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJl
Y3QpID0gMDsKIAogICAgIC8vIEludmFsaWRhdGUgbmF0aXZlIHRpbnRhYmxlIGNvbnRyb2xzLiBU
aGUgcGFzc2VkLWluIGNvbnRleHQgaXMgaW4gd2luZG93IGNvb3JkaW5hdGVzLgotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb250cm9sVGludHMoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Kik7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmKTsKIAogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGx1Zy1pbiBzdXBwb3J0cyBzbmFw
c2hvdHRpbmcgb3Igbm90LgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygp
IGNvbnN0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwCmluZGV4IGU3YzUzZDc4YTY5YzYwZGI4MGE4NjY2NGU3N2Y3Njc0MzBkOTcz
MjkuLjZkN2I0NmQyYzY4ZmJiY2M0YjU5YmE2NDJjYzcxZDAzYzgwZWNjNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApAQCAtMjAw
LDcgKzIwMCw3IEBAIHZvaWQgUGx1Z2luUHJveHk6OmRlc3Ryb3koKQogICAgIG1fY29ubmVjdGlv
bi0+cmVtb3ZlUGx1Z2luUHJveHkodGhpcyk7CiB9CiAKLXZvaWQgUGx1Z2luUHJveHk6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpCit2b2lkIFBsdWdpblByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIGlmICghbmVlZHNCYWNraW5n
U3RvcmUoKSB8fCAhbV9iYWNraW5nU3RvcmUpCiAgICAgICAgIHJldHVybjsKQEAgLTIxOCw3ICsy
MTgsNyBAQCB2b2lkIFBsdWdpblByb3h5OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZQogICAgICAgICBtX3BsdWdpbkJhY2tpbmdT
dG9yZUNvbnRhaW5zVmFsaWREYXRhID0gdHJ1ZTsKICAgICB9CiAKLSAgICBtX2JhY2tpbmdTdG9y
ZS0+cGFpbnQoKmdyYXBoaWNzQ29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBkaXJ0eVJl
Y3QubG9jYXRpb24oKSwgZGlydHlSZWN0KTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+cGFpbnQoZ3Jh
cGhpY3NDb250ZXh0LCBjb250ZW50c1NjYWxlRmFjdG9yKCksIGRpcnR5UmVjdC5sb2NhdGlvbigp
LCBkaXJ0eVJlY3QpOwogCiAgICAgaWYgKG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBk
YXRlKSB7CiAgICAgICAgIG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
CmluZGV4IDljZGZjMTk1MjVhYWI5YjZhMzFkNDUyNmZkNDM2NmNlMmY3NTc5YzIuLjc3YWQ0ZTY5
MDdlZTRlMWY1OTI5NzliMGY0NmQ3OGNjNzIxMzBjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpbml0aWFsaXplU3luY2hyb25vdXNseSgpOwogCiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKaW5kZXggYmFmNTY3MWVjYTY2ZDUxZWRjNjcxODIyNDRkMDA5YzUyYzdiNWQ1MC4u
YzM5NmU4NDg2ZTliNWUxZjVmMjA4Njk5MGNjYWM5M2MxZTMzMmE0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNzkyLDEzICs3
OTIsMTMgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKICAgICB2aWV3R2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAotdm9pZCBQbHVn
aW5WaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8q
ZGlydHlSZWN0Ki8pCit2b2lkIFBsdWdpblZpZXc6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgLypkaXJ0eVJlY3QqLykKIHsKICAgICBpZiAoIW1fcGx1Z2lu
IHx8ICFtX2lzSW5pdGlhbGl6ZWQgfHwgbV9wbHVnaW5FbGVtZW50LT5kaXNwbGF5U3RhdGUoKSA8
IEhUTUxQbHVnSW5FbGVtZW50OjpSZXN0YXJ0aW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT51
cGRhdGluZ0NvbnRyb2xUaW50cygpKQorICAgIGlmIChjb250ZXh0LnBhaW50aW5nRGlzYWJsZWQo
KSkgeworICAgICAgICBpZiAoY29udGV4dC51cGRhdGluZ0NvbnRyb2xUaW50cygpKQogICAgICAg
ICAgICAgbV9wbHVnaW4tPnVwZGF0ZUNvbnRyb2xUaW50cyhjb250ZXh0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTgxMCwxNCArODEwLDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKmRpcnR5UmVjdCovKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90KSB7
Ci0gICAgICAgIG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdC0+cGFpbnQoKmNvbnRleHQsIGNv
bnRlbnRzU2NhbGVGYWN0b3IoKSwgZnJhbWVSZWN0KCkubG9jYXRpb24oKSwgbV90cmFuc2llbnRQ
YWludGluZ1NuYXBzaG90LT5ib3VuZHMoKSk7CisgICAgICAgIG1fdHJhbnNpZW50UGFpbnRpbmdT
bmFwc2hvdC0+cGFpbnQoY29udGV4dCwgY29udGVudHNTY2FsZUZhY3RvcigpLCBmcmFtZVJlY3Qo
KS5sb2NhdGlvbigpLCBtX3RyYW5zaWVudFBhaW50aW5nU25hcHNob3QtPmJvdW5kcygpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoKmNvbnRleHQpOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKIAogICAgIC8vIFRyYW5zbGF0ZSB0aGUgY29vcmRpbmF0ZSBzeXN0
ZW0gc28gdGhhdCB0aGUgb3JpZ2luIGlzIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHBs
dWctaW4uCi0gICAgY29udGV4dC0+dHJhbnNsYXRlKGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueCgp
LCBmcmFtZVJlY3QoKS5sb2NhdGlvbigpLnkoKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoZnJh
bWVSZWN0KCkubG9jYXRpb24oKS54KCksIGZyYW1lUmVjdCgpLmxvY2F0aW9uKCkueSgpKTsKIAog
ICAgIG1fcGx1Z2luLT5wYWludChjb250ZXh0LCBwYWludFJlY3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggNTUxMDYwMjNkZTZk
OThjOTEwNmNhZTRjMmJjYmE5MjRhYTMyMGUzNy4uNzhhOGRjYjg4M2YwZDFiYTIyN2ViOGY4ZWNj
OWRlY2RhMzgxNGY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCkBAIC0xNzEsNyArMTcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNv
cmU6OldpZGdldAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1
cyhib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZnJhbWVSZWN0c0NoYW5nZWQoKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggOWFjM2I2NzEy
YWJlMzJkOTRlYWU1NGY4ZGIwMzM0NmNjNGM4YjlkYS4uYTgzYzFhOGM1Y2IyYThjMjA4MjIxMjBi
ZDZkODU0NjQ0YzJiYzM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAg
LTUyLDcgKzUyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0
Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXAoY2Fpcm9fc3UKICAgICBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShpbWFn
ZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgYXV0byBncmFwaGlj
c0NvbnRleHQgPSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCi0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFj
ZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBJbnRSZWN0KEludFBvaW50KCksIGlt
YWdlU2l6ZSksIGdyYXBoaWNzQ29udGV4dC5nZXQoKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZVNpemUpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlU2l6ZSksICpn
cmFwaGljc0NvbnRleHQpOwogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMzQzNjIw
YmU4OGNlOWJkYmMwZTgxNzc2MmM5ODQ3ZWMxMDQ1OGU4Ny4uYzU2YmJiYmUzY2Q4NTQ3ZmI2N2Q3
Nzc3YjliMDdjMTY2NmEwNThkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMTMzNCw3ICsxMzM0LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3
UmVjdChHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250
ZXh0KTsKICAgICBncmFwaGljc0NvbnRleHQuY2xpcChyZWN0KTsKIAotICAgIG1fbWFpbkZyYW1l
LT5jb3JlRnJhbWUoKS0+dmlldygpLT5wYWludCgmZ3JhcGhpY3NDb250ZXh0LCByZWN0KTsKKyAg
ICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPnZpZXcoKS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0
LCByZWN0KTsKIH0KIAogZG91YmxlIFdlYlBhZ2U6OnRleHRab29tRmFjdG9yKCkgY29uc3QKQEAg
LTE3NjMsNyArMTc2Myw3IEBAIFBhc3NSZWZQdHI8V2ViSW1hZ2U+IFdlYlBhZ2U6OnNuYXBzaG90
QXRTaXplKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFNpemUmCiAgICAgaWYgKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNJblZpZXdDb29yZGluYXRlcykKICAgICAgICAgY29vcmRpbmF0
ZVNwYWNlID0gRnJhbWVWaWV3OjpWaWV3Q29vcmRpbmF0ZXM7CiAKLSAgICBmcmFtZVZpZXctPnBh
aW50Q29udGVudHNGb3JTbmFwc2hvdChncmFwaGljc0NvbnRleHQuZ2V0KCksIHNuYXBzaG90UmVj
dCwgc2hvdWxkUGFpbnRTZWxlY3Rpb24sIGNvb3JkaW5hdGVTcGFjZSk7CisgICAgZnJhbWVWaWV3
LT5wYWludENvbnRlbnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0
LCBzaG91bGRQYWludFNlbGVjdGlvbiwgY29vcmRpbmF0ZVNwYWNlKTsKIAogICAgIGlmIChvcHRp
b25zICYgU25hcHNob3RPcHRpb25zUGFpbnRTZWxlY3Rpb25SZWN0YW5nbGUpIHsKICAgICAgICAg
RmxvYXRSZWN0IHNlbGVjdGlvblJlY3RhbmdsZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCk7CkBAIC0xODE5LDcgKzE4MTksNyBAQCBQYXNz
UmVmUHRyPFdlYkltYWdlPiBXZWJQYWdlOjpzbmFwc2hvdE5vZGUoV2ViQ29yZTo6Tm9kZSYgbm9k
ZSwgU25hcHNob3RPcHRpb25zCiAgICAgZnJhbWVWaWV3LT5zZXRCYXNlQmFja2dyb3VuZENvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCk7CiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9EcmF3KCZub2Rl
KTsKIAotICAgIGZyYW1lVmlldy0+cGFpbnRDb250ZW50c0ZvclNuYXBzaG90KGdyYXBoaWNzQ29u
dGV4dC5nZXQoKSwgc25hcHNob3RSZWN0LCBGcmFtZVZpZXc6OkV4Y2x1ZGVTZWxlY3Rpb24sIEZy
YW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CisgICAgZnJhbWVWaWV3LT5wYWludENvbnRl
bnRzRm9yU25hcHNob3QoKmdyYXBoaWNzQ29udGV4dCwgc25hcHNob3RSZWN0LCBGcmFtZVZpZXc6
OkV4Y2x1ZGVTZWxlY3Rpb24sIEZyYW1lVmlldzo6RG9jdW1lbnRDb29yZGluYXRlcyk7CiAKICAg
ICBmcmFtZVZpZXctPnNldEJhc2VCYWNrZ3JvdW5kQ29sb3Ioc2F2ZWRCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIGZyYW1lVmlldy0+c2V0Tm9kZVRvRHJhdyhudWxscHRyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRDb250cm9sbGVySU9T
Lm1tCmluZGV4IGY1ZTg2ZGYwMWZkYTE5ZDJlNmU0MWUxZjQwOGI4ZGMzMTViOGEyOGMuLmJkMjE1
NzNhNjRhYTMzYmY5OTFhMDcxNzVlZjY2N2NjN2FiNzBhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZENvbnRyb2xsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9GaW5kQ29udHJvbGxlcklPUy5t
bQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEZpbmRJbmRpY2F0b3JPdmVybGF5Q2xpZW50SU9TOjpk
cmF3UmVjdChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgR3JhcGhpY3NDb250ZQogICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgICAgIGNvbnRl
eHQudHJhbnNsYXRlKC1vdmVybGF5RnJhbWUueCgpLCAtb3ZlcmxheUZyYW1lLnkoKSk7CiAgICAg
ICAgIG1fZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rp
b25Pbmx5IHwgUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0IHwgUGFpbnRCZWhhdmlvckZsYXR0
ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgICAgIG1fZnJhbWUudmlldygpLT5wYWludENvbnRl
bnRzKCZjb250ZXh0LCBvdmVybGF5RnJhbWUpOworICAgICAgICBtX2ZyYW1lLnZpZXcoKS0+cGFp
bnRDb250ZW50cyhjb250ZXh0LCBvdmVybGF5RnJhbWUpOwogICAgICAgICBtX2ZyYW1lLnZpZXco
KS0+c2V0UGFpbnRCZWhhdmlvcihQYWludEJlaGF2aW9yTm9ybWFsKTsKICAgICB9CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>